// AWS SDK for JavaScript v2.183.0
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// License at https://sdk.amazonaws.com/js/BUNDLE_LICENSE.txt
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-12-08",
    "endpointPrefix": "acm",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "ACM",
    "serviceFullName": "AWS Certificate Manager",
    "signatureVersion": "v4",
    "targetPrefix": "CertificateManager",
    "uid": "acm-2015-12-08"
  },
  "operations": {
    "AddTagsToCertificate": {
      "input": {
        "type": "structure",
        "required": [
          "CertificateArn",
          "Tags"
        ],
        "members": {
          "CertificateArn": {},
          "Tags": {
            "shape": "S3"
          }
        }
      }
    },
    "DeleteCertificate": {
      "input": {
        "type": "structure",
        "required": [
          "CertificateArn"
        ],
        "members": {
          "CertificateArn": {}
        }
      }
    },
    "DescribeCertificate": {
      "input": {
        "type": "structure",
        "required": [
          "CertificateArn"
        ],
        "members": {
          "CertificateArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Certificate": {
            "type": "structure",
            "members": {
              "CertificateArn": {},
              "DomainName": {},
              "SubjectAlternativeNames": {
                "shape": "Sc"
              },
              "DomainValidationOptions": {
                "shape": "Sd"
              },
              "Serial": {},
              "Subject": {},
              "Issuer": {},
              "CreatedAt": {
                "type": "timestamp"
              },
              "IssuedAt": {
                "type": "timestamp"
              },
              "ImportedAt": {
                "type": "timestamp"
              },
              "Status": {},
              "RevokedAt": {
                "type": "timestamp"
              },
              "RevocationReason": {},
              "NotBefore": {
                "type": "timestamp"
              },
              "NotAfter": {
                "type": "timestamp"
              },
              "KeyAlgorithm": {},
              "SignatureAlgorithm": {},
              "InUseBy": {
                "type": "list",
                "member": {}
              },
              "FailureReason": {},
              "Type": {},
              "RenewalSummary": {
                "type": "structure",
                "required": [
                  "RenewalStatus",
                  "DomainValidationOptions"
                ],
                "members": {
                  "RenewalStatus": {},
                  "DomainValidationOptions": {
                    "shape": "Sd"
                  }
                }
              },
              "KeyUsages": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "Name": {}
                  }
                }
              },
              "ExtendedKeyUsages": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "Name": {},
                    "OID": {}
                  }
                }
              }
            }
          }
        }
      }
    },
    "GetCertificate": {
      "input": {
        "type": "structure",
        "required": [
          "CertificateArn"
        ],
        "members": {
          "CertificateArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Certificate": {},
          "CertificateChain": {}
        }
      }
    },
    "ImportCertificate": {
      "input": {
        "type": "structure",
        "required": [
          "Certificate",
          "PrivateKey"
        ],
        "members": {
          "CertificateArn": {},
          "Certificate": {
            "type": "blob"
          },
          "PrivateKey": {
            "type": "blob",
            "sensitive": true
          },
          "CertificateChain": {
            "type": "blob"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CertificateArn": {}
        }
      }
    },
    "ListCertificates": {
      "input": {
        "type": "structure",
        "members": {
          "CertificateStatuses": {
            "type": "list",
            "member": {}
          },
          "Includes": {
            "type": "structure",
            "members": {
              "extendedKeyUsage": {
                "type": "list",
                "member": {}
              },
              "keyUsage": {
                "type": "list",
                "member": {}
              },
              "keyTypes": {
                "type": "list",
                "member": {}
              }
            }
          },
          "NextToken": {},
          "MaxItems": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "CertificateSummaryList": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "CertificateArn": {},
                "DomainName": {}
              }
            }
          }
        }
      }
    },
    "ListTagsForCertificate": {
      "input": {
        "type": "structure",
        "required": [
          "CertificateArn"
        ],
        "members": {
          "CertificateArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Tags": {
            "shape": "S3"
          }
        }
      }
    },
    "RemoveTagsFromCertificate": {
      "input": {
        "type": "structure",
        "required": [
          "CertificateArn",
          "Tags"
        ],
        "members": {
          "CertificateArn": {},
          "Tags": {
            "shape": "S3"
          }
        }
      }
    },
    "RequestCertificate": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName"
        ],
        "members": {
          "DomainName": {},
          "ValidationMethod": {},
          "SubjectAlternativeNames": {
            "shape": "Sc"
          },
          "IdempotencyToken": {},
          "DomainValidationOptions": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "DomainName",
                "ValidationDomain"
              ],
              "members": {
                "DomainName": {},
                "ValidationDomain": {}
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CertificateArn": {}
        }
      }
    },
    "ResendValidationEmail": {
      "input": {
        "type": "structure",
        "required": [
          "CertificateArn",
          "Domain",
          "ValidationDomain"
        ],
        "members": {
          "CertificateArn": {},
          "Domain": {},
          "ValidationDomain": {}
        }
      }
    }
  },
  "shapes": {
    "S3": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Key"
        ],
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "Sc": {
      "type": "list",
      "member": {}
    },
    "Sd": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "DomainName"
        ],
        "members": {
          "DomainName": {},
          "ValidationEmails": {
            "type": "list",
            "member": {}
          },
          "ValidationDomain": {},
          "ValidationStatus": {},
          "ResourceRecord": {
            "type": "structure",
            "required": [
              "Name",
              "Type",
              "Value"
            ],
            "members": {
              "Name": {},
              "Type": {},
              "Value": {}
            }
          },
          "ValidationMethod": {}
        }
      }
    }
  }
}
},{}],2:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListCertificates": {
      "input_token": "NextToken",
      "limit_key": "MaxItems",
      "output_token": "NextToken",
      "result_key": "CertificateSummaryList"
    }
  }
}
},{}],3:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-07-09",
    "endpointPrefix": "apigateway",
    "protocol": "rest-json",
    "serviceFullName": "Amazon API Gateway",
    "serviceId": "API Gateway",
    "signatureVersion": "v4",
    "uid": "apigateway-2015-07-09"
  },
  "operations": {
    "CreateApiKey": {
      "http": {
        "requestUri": "/apikeys",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "members": {
          "name": {},
          "description": {},
          "enabled": {
            "type": "boolean"
          },
          "generateDistinctId": {
            "type": "boolean"
          },
          "value": {},
          "stageKeys": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "restApiId": {},
                "stageName": {}
              }
            }
          },
          "customerId": {}
        }
      },
      "output": {
        "shape": "S6"
      }
    },
    "CreateAuthorizer": {
      "http": {
        "requestUri": "/restapis/{restapi_id}/authorizers",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "name",
          "type"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "name": {},
          "type": {},
          "providerARNs": {
            "shape": "Sb"
          },
          "authType": {},
          "authorizerUri": {},
          "authorizerCredentials": {},
          "identitySource": {},
          "identityValidationExpression": {},
          "authorizerResultTtlInSeconds": {
            "type": "integer"
          }
        }
      },
      "output": {
        "shape": "Se"
      }
    },
    "CreateBasePathMapping": {
      "http": {
        "requestUri": "/domainnames/{domain_name}/basepathmappings",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "domainName",
          "restApiId"
        ],
        "members": {
          "domainName": {
            "location": "uri",
            "locationName": "domain_name"
          },
          "basePath": {},
          "restApiId": {},
          "stage": {}
        }
      },
      "output": {
        "shape": "Sg"
      }
    },
    "CreateDeployment": {
      "http": {
        "requestUri": "/restapis/{restapi_id}/deployments",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "stageName": {},
          "stageDescription": {},
          "description": {},
          "cacheClusterEnabled": {
            "type": "boolean"
          },
          "cacheClusterSize": {},
          "variables": {
            "shape": "Sk"
          },
          "canarySettings": {
            "type": "structure",
            "members": {
              "percentTraffic": {
                "type": "double"
              },
              "stageVariableOverrides": {
                "shape": "Sk"
              },
              "useStageCache": {
                "type": "boolean"
              }
            }
          }
        }
      },
      "output": {
        "shape": "Sn"
      }
    },
    "CreateDocumentationPart": {
      "http": {
        "requestUri": "/restapis/{restapi_id}/documentation/parts",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "location",
          "properties"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "location": {
            "shape": "Ss"
          },
          "properties": {}
        }
      },
      "output": {
        "shape": "Sv"
      }
    },
    "CreateDocumentationVersion": {
      "http": {
        "requestUri": "/restapis/{restapi_id}/documentation/versions",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "documentationVersion"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "documentationVersion": {},
          "stageName": {},
          "description": {}
        }
      },
      "output": {
        "shape": "Sx"
      }
    },
    "CreateDomainName": {
      "http": {
        "requestUri": "/domainnames",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "domainName"
        ],
        "members": {
          "domainName": {},
          "certificateName": {},
          "certificateBody": {},
          "certificatePrivateKey": {},
          "certificateChain": {},
          "certificateArn": {},
          "regionalCertificateName": {},
          "regionalCertificateArn": {},
          "endpointConfiguration": {
            "shape": "Sz"
          }
        }
      },
      "output": {
        "shape": "S12"
      }
    },
    "CreateModel": {
      "http": {
        "requestUri": "/restapis/{restapi_id}/models",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "name",
          "contentType"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "name": {},
          "description": {},
          "schema": {},
          "contentType": {}
        }
      },
      "output": {
        "shape": "S14"
      }
    },
    "CreateRequestValidator": {
      "http": {
        "requestUri": "/restapis/{restapi_id}/requestvalidators",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "name": {},
          "validateRequestBody": {
            "type": "boolean"
          },
          "validateRequestParameters": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "shape": "S16"
      }
    },
    "CreateResource": {
      "http": {
        "requestUri": "/restapis/{restapi_id}/resources/{parent_id}",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "parentId",
          "pathPart"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "parentId": {
            "location": "uri",
            "locationName": "parent_id"
          },
          "pathPart": {}
        }
      },
      "output": {
        "shape": "S18"
      }
    },
    "CreateRestApi": {
      "http": {
        "requestUri": "/restapis",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {},
          "description": {},
          "version": {},
          "cloneFrom": {},
          "binaryMediaTypes": {
            "shape": "S8"
          },
          "minimumCompressionSize": {
            "type": "integer"
          },
          "apiKeySource": {},
          "endpointConfiguration": {
            "shape": "Sz"
          }
        }
      },
      "output": {
        "shape": "S1o"
      }
    },
    "CreateStage": {
      "http": {
        "requestUri": "/restapis/{restapi_id}/stages",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "stageName",
          "deploymentId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "stageName": {},
          "deploymentId": {},
          "description": {},
          "cacheClusterEnabled": {
            "type": "boolean"
          },
          "cacheClusterSize": {},
          "variables": {
            "shape": "Sk"
          },
          "documentationVersion": {},
          "canarySettings": {
            "shape": "S1q"
          },
          "tags": {
            "shape": "Sk"
          }
        }
      },
      "output": {
        "shape": "S1r"
      }
    },
    "CreateUsagePlan": {
      "http": {
        "requestUri": "/usageplans",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {},
          "description": {},
          "apiStages": {
            "shape": "S1y"
          },
          "throttle": {
            "shape": "S20"
          },
          "quota": {
            "shape": "S21"
          }
        }
      },
      "output": {
        "shape": "S23"
      }
    },
    "CreateUsagePlanKey": {
      "http": {
        "requestUri": "/usageplans/{usageplanId}/keys",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "usagePlanId",
          "keyId",
          "keyType"
        ],
        "members": {
          "usagePlanId": {
            "location": "uri",
            "locationName": "usageplanId"
          },
          "keyId": {},
          "keyType": {}
        }
      },
      "output": {
        "shape": "S25"
      }
    },
    "CreateVpcLink": {
      "http": {
        "requestUri": "/vpclinks",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "name",
          "targetArns"
        ],
        "members": {
          "name": {},
          "description": {},
          "targetArns": {
            "shape": "S8"
          }
        }
      },
      "output": {
        "shape": "S27"
      }
    },
    "DeleteApiKey": {
      "http": {
        "method": "DELETE",
        "requestUri": "/apikeys/{api_Key}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "apiKey"
        ],
        "members": {
          "apiKey": {
            "location": "uri",
            "locationName": "api_Key"
          }
        }
      }
    },
    "DeleteAuthorizer": {
      "http": {
        "method": "DELETE",
        "requestUri": "/restapis/{restapi_id}/authorizers/{authorizer_id}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "authorizerId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "authorizerId": {
            "location": "uri",
            "locationName": "authorizer_id"
          }
        }
      }
    },
    "DeleteBasePathMapping": {
      "http": {
        "method": "DELETE",
        "requestUri": "/domainnames/{domain_name}/basepathmappings/{base_path}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "domainName",
          "basePath"
        ],
        "members": {
          "domainName": {
            "location": "uri",
            "locationName": "domain_name"
          },
          "basePath": {
            "location": "uri",
            "locationName": "base_path"
          }
        }
      }
    },
    "DeleteClientCertificate": {
      "http": {
        "method": "DELETE",
        "requestUri": "/clientcertificates/{clientcertificate_id}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "clientCertificateId"
        ],
        "members": {
          "clientCertificateId": {
            "location": "uri",
            "locationName": "clientcertificate_id"
          }
        }
      }
    },
    "DeleteDeployment": {
      "http": {
        "method": "DELETE",
        "requestUri": "/restapis/{restapi_id}/deployments/{deployment_id}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "deploymentId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "deploymentId": {
            "location": "uri",
            "locationName": "deployment_id"
          }
        }
      }
    },
    "DeleteDocumentationPart": {
      "http": {
        "method": "DELETE",
        "requestUri": "/restapis/{restapi_id}/documentation/parts/{part_id}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "documentationPartId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "documentationPartId": {
            "location": "uri",
            "locationName": "part_id"
          }
        }
      }
    },
    "DeleteDocumentationVersion": {
      "http": {
        "method": "DELETE",
        "requestUri": "/restapis/{restapi_id}/documentation/versions/{doc_version}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "documentationVersion"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "documentationVersion": {
            "location": "uri",
            "locationName": "doc_version"
          }
        }
      }
    },
    "DeleteDomainName": {
      "http": {
        "method": "DELETE",
        "requestUri": "/domainnames/{domain_name}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "domainName"
        ],
        "members": {
          "domainName": {
            "location": "uri",
            "locationName": "domain_name"
          }
        }
      }
    },
    "DeleteGatewayResponse": {
      "http": {
        "method": "DELETE",
        "requestUri": "/restapis/{restapi_id}/gatewayresponses/{response_type}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "responseType"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "responseType": {
            "location": "uri",
            "locationName": "response_type"
          }
        }
      }
    },
    "DeleteIntegration": {
      "http": {
        "method": "DELETE",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          }
        }
      }
    },
    "DeleteIntegrationResponse": {
      "http": {
        "method": "DELETE",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod",
          "statusCode"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          },
          "statusCode": {
            "location": "uri",
            "locationName": "status_code"
          }
        }
      }
    },
    "DeleteMethod": {
      "http": {
        "method": "DELETE",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          }
        }
      }
    },
    "DeleteMethodResponse": {
      "http": {
        "method": "DELETE",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod",
          "statusCode"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          },
          "statusCode": {
            "location": "uri",
            "locationName": "status_code"
          }
        }
      }
    },
    "DeleteModel": {
      "http": {
        "method": "DELETE",
        "requestUri": "/restapis/{restapi_id}/models/{model_name}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "modelName"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "modelName": {
            "location": "uri",
            "locationName": "model_name"
          }
        }
      }
    },
    "DeleteRequestValidator": {
      "http": {
        "method": "DELETE",
        "requestUri": "/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "requestValidatorId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "requestValidatorId": {
            "location": "uri",
            "locationName": "requestvalidator_id"
          }
        }
      }
    },
    "DeleteResource": {
      "http": {
        "method": "DELETE",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          }
        }
      }
    },
    "DeleteRestApi": {
      "http": {
        "method": "DELETE",
        "requestUri": "/restapis/{restapi_id}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          }
        }
      }
    },
    "DeleteStage": {
      "http": {
        "method": "DELETE",
        "requestUri": "/restapis/{restapi_id}/stages/{stage_name}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "stageName"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "stageName": {
            "location": "uri",
            "locationName": "stage_name"
          }
        }
      }
    },
    "DeleteUsagePlan": {
      "http": {
        "method": "DELETE",
        "requestUri": "/usageplans/{usageplanId}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "usagePlanId"
        ],
        "members": {
          "usagePlanId": {
            "location": "uri",
            "locationName": "usageplanId"
          }
        }
      }
    },
    "DeleteUsagePlanKey": {
      "http": {
        "method": "DELETE",
        "requestUri": "/usageplans/{usageplanId}/keys/{keyId}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "usagePlanId",
          "keyId"
        ],
        "members": {
          "usagePlanId": {
            "location": "uri",
            "locationName": "usageplanId"
          },
          "keyId": {
            "location": "uri",
            "locationName": "keyId"
          }
        }
      }
    },
    "DeleteVpcLink": {
      "http": {
        "method": "DELETE",
        "requestUri": "/vpclinks/{vpclink_id}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "vpcLinkId"
        ],
        "members": {
          "vpcLinkId": {
            "location": "uri",
            "locationName": "vpclink_id"
          }
        }
      }
    },
    "FlushStageAuthorizersCache": {
      "http": {
        "method": "DELETE",
        "requestUri": "/restapis/{restapi_id}/stages/{stage_name}/cache/authorizers",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "stageName"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "stageName": {
            "location": "uri",
            "locationName": "stage_name"
          }
        }
      }
    },
    "FlushStageCache": {
      "http": {
        "method": "DELETE",
        "requestUri": "/restapis/{restapi_id}/stages/{stage_name}/cache/data",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "stageName"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "stageName": {
            "location": "uri",
            "locationName": "stage_name"
          }
        }
      }
    },
    "GenerateClientCertificate": {
      "http": {
        "requestUri": "/clientcertificates",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "members": {
          "description": {}
        }
      },
      "output": {
        "shape": "S2y"
      }
    },
    "GetAccount": {
      "http": {
        "method": "GET",
        "requestUri": "/account"
      },
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "shape": "S30"
      }
    },
    "GetApiKey": {
      "http": {
        "method": "GET",
        "requestUri": "/apikeys/{api_Key}"
      },
      "input": {
        "type": "structure",
        "required": [
          "apiKey"
        ],
        "members": {
          "apiKey": {
            "location": "uri",
            "locationName": "api_Key"
          },
          "includeValue": {
            "location": "querystring",
            "locationName": "includeValue",
            "type": "boolean"
          }
        }
      },
      "output": {
        "shape": "S6"
      }
    },
    "GetApiKeys": {
      "http": {
        "method": "GET",
        "requestUri": "/apikeys"
      },
      "input": {
        "type": "structure",
        "members": {
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          },
          "nameQuery": {
            "location": "querystring",
            "locationName": "name"
          },
          "customerId": {
            "location": "querystring",
            "locationName": "customerId"
          },
          "includeValues": {
            "location": "querystring",
            "locationName": "includeValues",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "warnings": {
            "shape": "S8"
          },
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "S6"
            }
          }
        }
      }
    },
    "GetAuthorizer": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/authorizers/{authorizer_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "authorizerId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "authorizerId": {
            "location": "uri",
            "locationName": "authorizer_id"
          }
        }
      },
      "output": {
        "shape": "Se"
      }
    },
    "GetAuthorizers": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/authorizers"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "Se"
            }
          }
        }
      }
    },
    "GetBasePathMapping": {
      "http": {
        "method": "GET",
        "requestUri": "/domainnames/{domain_name}/basepathmappings/{base_path}"
      },
      "input": {
        "type": "structure",
        "required": [
          "domainName",
          "basePath"
        ],
        "members": {
          "domainName": {
            "location": "uri",
            "locationName": "domain_name"
          },
          "basePath": {
            "location": "uri",
            "locationName": "base_path"
          }
        }
      },
      "output": {
        "shape": "Sg"
      }
    },
    "GetBasePathMappings": {
      "http": {
        "method": "GET",
        "requestUri": "/domainnames/{domain_name}/basepathmappings"
      },
      "input": {
        "type": "structure",
        "required": [
          "domainName"
        ],
        "members": {
          "domainName": {
            "location": "uri",
            "locationName": "domain_name"
          },
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "Sg"
            }
          }
        }
      }
    },
    "GetClientCertificate": {
      "http": {
        "method": "GET",
        "requestUri": "/clientcertificates/{clientcertificate_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "clientCertificateId"
        ],
        "members": {
          "clientCertificateId": {
            "location": "uri",
            "locationName": "clientcertificate_id"
          }
        }
      },
      "output": {
        "shape": "S2y"
      }
    },
    "GetClientCertificates": {
      "http": {
        "method": "GET",
        "requestUri": "/clientcertificates"
      },
      "input": {
        "type": "structure",
        "members": {
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "S2y"
            }
          }
        }
      }
    },
    "GetDeployment": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/deployments/{deployment_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "deploymentId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "deploymentId": {
            "location": "uri",
            "locationName": "deployment_id"
          },
          "embed": {
            "shape": "S8",
            "location": "querystring",
            "locationName": "embed"
          }
        }
      },
      "output": {
        "shape": "Sn"
      }
    },
    "GetDeployments": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/deployments"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "Sn"
            }
          }
        }
      }
    },
    "GetDocumentationPart": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/documentation/parts/{part_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "documentationPartId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "documentationPartId": {
            "location": "uri",
            "locationName": "part_id"
          }
        }
      },
      "output": {
        "shape": "Sv"
      }
    },
    "GetDocumentationParts": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/documentation/parts"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "type": {
            "location": "querystring",
            "locationName": "type"
          },
          "nameQuery": {
            "location": "querystring",
            "locationName": "name"
          },
          "path": {
            "location": "querystring",
            "locationName": "path"
          },
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          },
          "locationStatus": {
            "location": "querystring",
            "locationName": "locationStatus"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "Sv"
            }
          }
        }
      }
    },
    "GetDocumentationVersion": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/documentation/versions/{doc_version}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "documentationVersion"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "documentationVersion": {
            "location": "uri",
            "locationName": "doc_version"
          }
        }
      },
      "output": {
        "shape": "Sx"
      }
    },
    "GetDocumentationVersions": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/documentation/versions"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "Sx"
            }
          }
        }
      }
    },
    "GetDomainName": {
      "http": {
        "method": "GET",
        "requestUri": "/domainnames/{domain_name}"
      },
      "input": {
        "type": "structure",
        "required": [
          "domainName"
        ],
        "members": {
          "domainName": {
            "location": "uri",
            "locationName": "domain_name"
          }
        }
      },
      "output": {
        "shape": "S12"
      }
    },
    "GetDomainNames": {
      "http": {
        "method": "GET",
        "requestUri": "/domainnames"
      },
      "input": {
        "type": "structure",
        "members": {
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "S12"
            }
          }
        }
      }
    },
    "GetExport": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/stages/{stage_name}/exports/{export_type}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "stageName",
          "exportType"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "stageName": {
            "location": "uri",
            "locationName": "stage_name"
          },
          "exportType": {
            "location": "uri",
            "locationName": "export_type"
          },
          "parameters": {
            "shape": "Sk",
            "location": "querystring"
          },
          "accepts": {
            "location": "header",
            "locationName": "Accept"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "contentType": {
            "location": "header",
            "locationName": "Content-Type"
          },
          "contentDisposition": {
            "location": "header",
            "locationName": "Content-Disposition"
          },
          "body": {
            "type": "blob"
          }
        },
        "payload": "body"
      }
    },
    "GetGatewayResponse": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/gatewayresponses/{response_type}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "responseType"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "responseType": {
            "location": "uri",
            "locationName": "response_type"
          }
        }
      },
      "output": {
        "shape": "S42"
      }
    },
    "GetGatewayResponses": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/gatewayresponses"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "S42"
            }
          }
        }
      }
    },
    "GetIntegration": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          }
        }
      },
      "output": {
        "shape": "S1f"
      }
    },
    "GetIntegrationResponse": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod",
          "statusCode"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          },
          "statusCode": {
            "location": "uri",
            "locationName": "status_code"
          }
        }
      },
      "output": {
        "shape": "S1l"
      }
    },
    "GetMethod": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          }
        }
      },
      "output": {
        "shape": "S1a"
      }
    },
    "GetMethodResponse": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod",
          "statusCode"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          },
          "statusCode": {
            "location": "uri",
            "locationName": "status_code"
          }
        }
      },
      "output": {
        "shape": "S1d"
      }
    },
    "GetModel": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/models/{model_name}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "modelName"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "modelName": {
            "location": "uri",
            "locationName": "model_name"
          },
          "flatten": {
            "location": "querystring",
            "locationName": "flatten",
            "type": "boolean"
          }
        }
      },
      "output": {
        "shape": "S14"
      }
    },
    "GetModelTemplate": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/models/{model_name}/default_template"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "modelName"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "modelName": {
            "location": "uri",
            "locationName": "model_name"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "value": {}
        }
      }
    },
    "GetModels": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/models"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "S14"
            }
          }
        }
      }
    },
    "GetRequestValidator": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "requestValidatorId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "requestValidatorId": {
            "location": "uri",
            "locationName": "requestvalidator_id"
          }
        }
      },
      "output": {
        "shape": "S16"
      }
    },
    "GetRequestValidators": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/requestvalidators"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "S16"
            }
          }
        }
      }
    },
    "GetResource": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "embed": {
            "shape": "S8",
            "location": "querystring",
            "locationName": "embed"
          }
        }
      },
      "output": {
        "shape": "S18"
      }
    },
    "GetResources": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/resources"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          },
          "embed": {
            "shape": "S8",
            "location": "querystring",
            "locationName": "embed"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "S18"
            }
          }
        }
      }
    },
    "GetRestApi": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          }
        }
      },
      "output": {
        "shape": "S1o"
      }
    },
    "GetRestApis": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis"
      },
      "input": {
        "type": "structure",
        "members": {
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "S1o"
            }
          }
        }
      }
    },
    "GetSdk": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/stages/{stage_name}/sdks/{sdk_type}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "stageName",
          "sdkType"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "stageName": {
            "location": "uri",
            "locationName": "stage_name"
          },
          "sdkType": {
            "location": "uri",
            "locationName": "sdk_type"
          },
          "parameters": {
            "shape": "Sk",
            "location": "querystring"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "contentType": {
            "location": "header",
            "locationName": "Content-Type"
          },
          "contentDisposition": {
            "location": "header",
            "locationName": "Content-Disposition"
          },
          "body": {
            "type": "blob"
          }
        },
        "payload": "body"
      }
    },
    "GetSdkType": {
      "http": {
        "method": "GET",
        "requestUri": "/sdktypes/{sdktype_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "id"
        ],
        "members": {
          "id": {
            "location": "uri",
            "locationName": "sdktype_id"
          }
        }
      },
      "output": {
        "shape": "S4v"
      }
    },
    "GetSdkTypes": {
      "http": {
        "method": "GET",
        "requestUri": "/sdktypes"
      },
      "input": {
        "type": "structure",
        "members": {
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "S4v"
            }
          }
        }
      }
    },
    "GetStage": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/stages/{stage_name}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "stageName"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "stageName": {
            "location": "uri",
            "locationName": "stage_name"
          }
        }
      },
      "output": {
        "shape": "S1r"
      }
    },
    "GetStages": {
      "http": {
        "method": "GET",
        "requestUri": "/restapis/{restapi_id}/stages"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "deploymentId": {
            "location": "querystring",
            "locationName": "deploymentId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "item": {
            "type": "list",
            "member": {
              "shape": "S1r"
            }
          }
        }
      }
    },
    "GetTags": {
      "http": {
        "method": "GET",
        "requestUri": "/tags/{resource_arn}"
      },
      "input": {
        "type": "structure",
        "required": [
          "resourceArn"
        ],
        "members": {
          "resourceArn": {
            "location": "uri",
            "locationName": "resource_arn"
          },
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "tags": {
            "shape": "Sk"
          }
        }
      }
    },
    "GetUsage": {
      "http": {
        "method": "GET",
        "requestUri": "/usageplans/{usageplanId}/usage"
      },
      "input": {
        "type": "structure",
        "required": [
          "usagePlanId",
          "startDate",
          "endDate"
        ],
        "members": {
          "usagePlanId": {
            "location": "uri",
            "locationName": "usageplanId"
          },
          "keyId": {
            "location": "querystring",
            "locationName": "keyId"
          },
          "startDate": {
            "location": "querystring",
            "locationName": "startDate"
          },
          "endDate": {
            "location": "querystring",
            "locationName": "endDate"
          },
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "shape": "S58"
      }
    },
    "GetUsagePlan": {
      "http": {
        "method": "GET",
        "requestUri": "/usageplans/{usageplanId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "usagePlanId"
        ],
        "members": {
          "usagePlanId": {
            "location": "uri",
            "locationName": "usageplanId"
          }
        }
      },
      "output": {
        "shape": "S23"
      }
    },
    "GetUsagePlanKey": {
      "http": {
        "method": "GET",
        "requestUri": "/usageplans/{usageplanId}/keys/{keyId}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "usagePlanId",
          "keyId"
        ],
        "members": {
          "usagePlanId": {
            "location": "uri",
            "locationName": "usageplanId"
          },
          "keyId": {
            "location": "uri",
            "locationName": "keyId"
          }
        }
      },
      "output": {
        "shape": "S25"
      }
    },
    "GetUsagePlanKeys": {
      "http": {
        "method": "GET",
        "requestUri": "/usageplans/{usageplanId}/keys"
      },
      "input": {
        "type": "structure",
        "required": [
          "usagePlanId"
        ],
        "members": {
          "usagePlanId": {
            "location": "uri",
            "locationName": "usageplanId"
          },
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          },
          "nameQuery": {
            "location": "querystring",
            "locationName": "name"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "S25"
            }
          }
        }
      }
    },
    "GetUsagePlans": {
      "http": {
        "method": "GET",
        "requestUri": "/usageplans"
      },
      "input": {
        "type": "structure",
        "members": {
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "keyId": {
            "location": "querystring",
            "locationName": "keyId"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "S23"
            }
          }
        }
      }
    },
    "GetVpcLink": {
      "http": {
        "method": "GET",
        "requestUri": "/vpclinks/{vpclink_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "vpcLinkId"
        ],
        "members": {
          "vpcLinkId": {
            "location": "uri",
            "locationName": "vpclink_id"
          }
        }
      },
      "output": {
        "shape": "S27"
      }
    },
    "GetVpcLinks": {
      "http": {
        "method": "GET",
        "requestUri": "/vpclinks"
      },
      "input": {
        "type": "structure",
        "members": {
          "position": {
            "location": "querystring",
            "locationName": "position"
          },
          "limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "position": {},
          "items": {
            "locationName": "item",
            "type": "list",
            "member": {
              "shape": "S27"
            }
          }
        }
      }
    },
    "ImportApiKeys": {
      "http": {
        "requestUri": "/apikeys?mode=import",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "body",
          "format"
        ],
        "members": {
          "body": {
            "type": "blob"
          },
          "format": {
            "location": "querystring",
            "locationName": "format"
          },
          "failOnWarnings": {
            "location": "querystring",
            "locationName": "failonwarnings",
            "type": "boolean"
          }
        },
        "payload": "body"
      },
      "output": {
        "type": "structure",
        "members": {
          "ids": {
            "shape": "S8"
          },
          "warnings": {
            "shape": "S8"
          }
        }
      }
    },
    "ImportDocumentationParts": {
      "http": {
        "method": "PUT",
        "requestUri": "/restapis/{restapi_id}/documentation/parts"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "body"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "mode": {
            "location": "querystring",
            "locationName": "mode"
          },
          "failOnWarnings": {
            "location": "querystring",
            "locationName": "failonwarnings",
            "type": "boolean"
          },
          "body": {
            "type": "blob"
          }
        },
        "payload": "body"
      },
      "output": {
        "type": "structure",
        "members": {
          "ids": {
            "shape": "S8"
          },
          "warnings": {
            "shape": "S8"
          }
        }
      }
    },
    "ImportRestApi": {
      "http": {
        "requestUri": "/restapis?mode=import",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "body"
        ],
        "members": {
          "failOnWarnings": {
            "location": "querystring",
            "locationName": "failonwarnings",
            "type": "boolean"
          },
          "parameters": {
            "shape": "Sk",
            "location": "querystring"
          },
          "body": {
            "type": "blob"
          }
        },
        "payload": "body"
      },
      "output": {
        "shape": "S1o"
      }
    },
    "PutGatewayResponse": {
      "http": {
        "method": "PUT",
        "requestUri": "/restapis/{restapi_id}/gatewayresponses/{response_type}",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "responseType"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "responseType": {
            "location": "uri",
            "locationName": "response_type"
          },
          "statusCode": {},
          "responseParameters": {
            "shape": "Sk"
          },
          "responseTemplates": {
            "shape": "Sk"
          }
        }
      },
      "output": {
        "shape": "S42"
      }
    },
    "PutIntegration": {
      "http": {
        "method": "PUT",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod",
          "type"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          },
          "type": {},
          "integrationHttpMethod": {
            "locationName": "httpMethod"
          },
          "uri": {},
          "connectionType": {},
          "connectionId": {},
          "credentials": {},
          "requestParameters": {
            "shape": "Sk"
          },
          "requestTemplates": {
            "shape": "Sk"
          },
          "passthroughBehavior": {},
          "cacheNamespace": {},
          "cacheKeyParameters": {
            "shape": "S8"
          },
          "contentHandling": {},
          "timeoutInMillis": {
            "type": "integer"
          }
        }
      },
      "output": {
        "shape": "S1f"
      }
    },
    "PutIntegrationResponse": {
      "http": {
        "method": "PUT",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod",
          "statusCode"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          },
          "statusCode": {
            "location": "uri",
            "locationName": "status_code"
          },
          "selectionPattern": {},
          "responseParameters": {
            "shape": "Sk"
          },
          "responseTemplates": {
            "shape": "Sk"
          },
          "contentHandling": {}
        }
      },
      "output": {
        "shape": "S1l"
      }
    },
    "PutMethod": {
      "http": {
        "method": "PUT",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod",
          "authorizationType"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          },
          "authorizationType": {},
          "authorizerId": {},
          "apiKeyRequired": {
            "type": "boolean"
          },
          "operationName": {},
          "requestParameters": {
            "shape": "S1b"
          },
          "requestModels": {
            "shape": "Sk"
          },
          "requestValidatorId": {},
          "authorizationScopes": {
            "shape": "S8"
          }
        }
      },
      "output": {
        "shape": "S1a"
      }
    },
    "PutMethodResponse": {
      "http": {
        "method": "PUT",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod",
          "statusCode"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          },
          "statusCode": {
            "location": "uri",
            "locationName": "status_code"
          },
          "responseParameters": {
            "shape": "S1b"
          },
          "responseModels": {
            "shape": "Sk"
          }
        }
      },
      "output": {
        "shape": "S1d"
      }
    },
    "PutRestApi": {
      "http": {
        "method": "PUT",
        "requestUri": "/restapis/{restapi_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "body"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "mode": {
            "location": "querystring",
            "locationName": "mode"
          },
          "failOnWarnings": {
            "location": "querystring",
            "locationName": "failonwarnings",
            "type": "boolean"
          },
          "parameters": {
            "shape": "Sk",
            "location": "querystring"
          },
          "body": {
            "type": "blob"
          }
        },
        "payload": "body"
      },
      "output": {
        "shape": "S1o"
      }
    },
    "TagResource": {
      "http": {
        "method": "PUT",
        "requestUri": "/tags/{resource_arn}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "resourceArn",
          "tags"
        ],
        "members": {
          "resourceArn": {
            "location": "uri",
            "locationName": "resource_arn"
          },
          "tags": {
            "shape": "Sk"
          }
        }
      }
    },
    "TestInvokeAuthorizer": {
      "http": {
        "requestUri": "/restapis/{restapi_id}/authorizers/{authorizer_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "authorizerId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "authorizerId": {
            "location": "uri",
            "locationName": "authorizer_id"
          },
          "headers": {
            "shape": "S64"
          },
          "pathWithQueryString": {},
          "body": {},
          "stageVariables": {
            "shape": "Sk"
          },
          "additionalContext": {
            "shape": "Sk"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "clientStatus": {
            "type": "integer"
          },
          "log": {},
          "latency": {
            "type": "long"
          },
          "principalId": {},
          "policy": {},
          "authorization": {
            "type": "map",
            "key": {},
            "value": {
              "shape": "S8"
            }
          },
          "claims": {
            "shape": "Sk"
          }
        }
      }
    },
    "TestInvokeMethod": {
      "http": {
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          },
          "pathWithQueryString": {},
          "body": {},
          "headers": {
            "shape": "S64"
          },
          "clientCertificateId": {},
          "stageVariables": {
            "shape": "Sk"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "status": {
            "type": "integer"
          },
          "body": {},
          "headers": {
            "shape": "S64"
          },
          "log": {},
          "latency": {
            "type": "long"
          }
        }
      }
    },
    "UntagResource": {
      "http": {
        "method": "DELETE",
        "requestUri": "/tags/{resource_arn}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "resourceArn",
          "tagKeys"
        ],
        "members": {
          "resourceArn": {
            "location": "uri",
            "locationName": "resource_arn"
          },
          "tagKeys": {
            "shape": "S8",
            "location": "querystring",
            "locationName": "tagKeys"
          }
        }
      }
    },
    "UpdateAccount": {
      "http": {
        "method": "PATCH",
        "requestUri": "/account"
      },
      "input": {
        "type": "structure",
        "members": {
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S30"
      }
    },
    "UpdateApiKey": {
      "http": {
        "method": "PATCH",
        "requestUri": "/apikeys/{api_Key}"
      },
      "input": {
        "type": "structure",
        "required": [
          "apiKey"
        ],
        "members": {
          "apiKey": {
            "location": "uri",
            "locationName": "api_Key"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S6"
      }
    },
    "UpdateAuthorizer": {
      "http": {
        "method": "PATCH",
        "requestUri": "/restapis/{restapi_id}/authorizers/{authorizer_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "authorizerId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "authorizerId": {
            "location": "uri",
            "locationName": "authorizer_id"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "Se"
      }
    },
    "UpdateBasePathMapping": {
      "http": {
        "method": "PATCH",
        "requestUri": "/domainnames/{domain_name}/basepathmappings/{base_path}"
      },
      "input": {
        "type": "structure",
        "required": [
          "domainName",
          "basePath"
        ],
        "members": {
          "domainName": {
            "location": "uri",
            "locationName": "domain_name"
          },
          "basePath": {
            "location": "uri",
            "locationName": "base_path"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "Sg"
      }
    },
    "UpdateClientCertificate": {
      "http": {
        "method": "PATCH",
        "requestUri": "/clientcertificates/{clientcertificate_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "clientCertificateId"
        ],
        "members": {
          "clientCertificateId": {
            "location": "uri",
            "locationName": "clientcertificate_id"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S2y"
      }
    },
    "UpdateDeployment": {
      "http": {
        "method": "PATCH",
        "requestUri": "/restapis/{restapi_id}/deployments/{deployment_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "deploymentId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "deploymentId": {
            "location": "uri",
            "locationName": "deployment_id"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "Sn"
      }
    },
    "UpdateDocumentationPart": {
      "http": {
        "method": "PATCH",
        "requestUri": "/restapis/{restapi_id}/documentation/parts/{part_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "documentationPartId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "documentationPartId": {
            "location": "uri",
            "locationName": "part_id"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "Sv"
      }
    },
    "UpdateDocumentationVersion": {
      "http": {
        "method": "PATCH",
        "requestUri": "/restapis/{restapi_id}/documentation/versions/{doc_version}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "documentationVersion"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "documentationVersion": {
            "location": "uri",
            "locationName": "doc_version"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "Sx"
      }
    },
    "UpdateDomainName": {
      "http": {
        "method": "PATCH",
        "requestUri": "/domainnames/{domain_name}"
      },
      "input": {
        "type": "structure",
        "required": [
          "domainName"
        ],
        "members": {
          "domainName": {
            "location": "uri",
            "locationName": "domain_name"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S12"
      }
    },
    "UpdateGatewayResponse": {
      "http": {
        "method": "PATCH",
        "requestUri": "/restapis/{restapi_id}/gatewayresponses/{response_type}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "responseType"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "responseType": {
            "location": "uri",
            "locationName": "response_type"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S42"
      }
    },
    "UpdateIntegration": {
      "http": {
        "method": "PATCH",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S1f"
      }
    },
    "UpdateIntegrationResponse": {
      "http": {
        "method": "PATCH",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod",
          "statusCode"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          },
          "statusCode": {
            "location": "uri",
            "locationName": "status_code"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S1l"
      }
    },
    "UpdateMethod": {
      "http": {
        "method": "PATCH",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S1a"
      }
    },
    "UpdateMethodResponse": {
      "http": {
        "method": "PATCH",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId",
          "httpMethod",
          "statusCode"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "httpMethod": {
            "location": "uri",
            "locationName": "http_method"
          },
          "statusCode": {
            "location": "uri",
            "locationName": "status_code"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S1d"
      }
    },
    "UpdateModel": {
      "http": {
        "method": "PATCH",
        "requestUri": "/restapis/{restapi_id}/models/{model_name}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "modelName"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "modelName": {
            "location": "uri",
            "locationName": "model_name"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S14"
      }
    },
    "UpdateRequestValidator": {
      "http": {
        "method": "PATCH",
        "requestUri": "/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "requestValidatorId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "requestValidatorId": {
            "location": "uri",
            "locationName": "requestvalidator_id"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S16"
      }
    },
    "UpdateResource": {
      "http": {
        "method": "PATCH",
        "requestUri": "/restapis/{restapi_id}/resources/{resource_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "resourceId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "resourceId": {
            "location": "uri",
            "locationName": "resource_id"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S18"
      }
    },
    "UpdateRestApi": {
      "http": {
        "method": "PATCH",
        "requestUri": "/restapis/{restapi_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S1o"
      }
    },
    "UpdateStage": {
      "http": {
        "method": "PATCH",
        "requestUri": "/restapis/{restapi_id}/stages/{stage_name}"
      },
      "input": {
        "type": "structure",
        "required": [
          "restApiId",
          "stageName"
        ],
        "members": {
          "restApiId": {
            "location": "uri",
            "locationName": "restapi_id"
          },
          "stageName": {
            "location": "uri",
            "locationName": "stage_name"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S1r"
      }
    },
    "UpdateUsage": {
      "http": {
        "method": "PATCH",
        "requestUri": "/usageplans/{usageplanId}/keys/{keyId}/usage"
      },
      "input": {
        "type": "structure",
        "required": [
          "usagePlanId",
          "keyId"
        ],
        "members": {
          "usagePlanId": {
            "location": "uri",
            "locationName": "usageplanId"
          },
          "keyId": {
            "location": "uri",
            "locationName": "keyId"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S58"
      }
    },
    "UpdateUsagePlan": {
      "http": {
        "method": "PATCH",
        "requestUri": "/usageplans/{usageplanId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "usagePlanId"
        ],
        "members": {
          "usagePlanId": {
            "location": "uri",
            "locationName": "usageplanId"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S23"
      }
    },
    "UpdateVpcLink": {
      "http": {
        "method": "PATCH",
        "requestUri": "/vpclinks/{vpclink_id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "vpcLinkId"
        ],
        "members": {
          "vpcLinkId": {
            "location": "uri",
            "locationName": "vpclink_id"
          },
          "patchOperations": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "S27"
      }
    }
  },
  "shapes": {
    "S6": {
      "type": "structure",
      "members": {
        "id": {},
        "value": {},
        "name": {},
        "customerId": {},
        "description": {},
        "enabled": {
          "type": "boolean"
        },
        "createdDate": {
          "type": "timestamp"
        },
        "lastUpdatedDate": {
          "type": "timestamp"
        },
        "stageKeys": {
          "shape": "S8"
        }
      }
    },
    "S8": {
      "type": "list",
      "member": {}
    },
    "Sb": {
      "type": "list",
      "member": {}
    },
    "Se": {
      "type": "structure",
      "members": {
        "id": {},
        "name": {},
        "type": {},
        "providerARNs": {
          "shape": "Sb"
        },
        "authType": {},
        "authorizerUri": {},
        "authorizerCredentials": {},
        "identitySource": {},
        "identityValidationExpression": {},
        "authorizerResultTtlInSeconds": {
          "type": "integer"
        }
      }
    },
    "Sg": {
      "type": "structure",
      "members": {
        "basePath": {},
        "restApiId": {},
        "stage": {}
      }
    },
    "Sk": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "Sn": {
      "type": "structure",
      "members": {
        "id": {},
        "description": {},
        "createdDate": {
          "type": "timestamp"
        },
        "apiSummary": {
          "type": "map",
          "key": {},
          "value": {
            "type": "map",
            "key": {},
            "value": {
              "type": "structure",
              "members": {
                "authorizationType": {},
                "apiKeyRequired": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      }
    },
    "Ss": {
      "type": "structure",
      "required": [
        "type"
      ],
      "members": {
        "type": {},
        "path": {},
        "method": {},
        "statusCode": {},
        "name": {}
      }
    },
    "Sv": {
      "type": "structure",
      "members": {
        "id": {},
        "location": {
          "shape": "Ss"
        },
        "properties": {}
      }
    },
    "Sx": {
      "type": "structure",
      "members": {
        "version": {},
        "createdDate": {
          "type": "timestamp"
        },
        "description": {}
      }
    },
    "Sz": {
      "type": "structure",
      "members": {
        "types": {
          "type": "list",
          "member": {}
        }
      }
    },
    "S12": {
      "type": "structure",
      "members": {
        "domainName": {},
        "certificateName": {},
        "certificateArn": {},
        "certificateUploadDate": {
          "type": "timestamp"
        },
        "regionalDomainName": {},
        "regionalHostedZoneId": {},
        "regionalCertificateName": {},
        "regionalCertificateArn": {},
        "distributionDomainName": {},
        "distributionHostedZoneId": {},
        "endpointConfiguration": {
          "shape": "Sz"
        }
      }
    },
    "S14": {
      "type": "structure",
      "members": {
        "id": {},
        "name": {},
        "description": {},
        "schema": {},
        "contentType": {}
      }
    },
    "S16": {
      "type": "structure",
      "members": {
        "id": {},
        "name": {},
        "validateRequestBody": {
          "type": "boolean"
        },
        "validateRequestParameters": {
          "type": "boolean"
        }
      }
    },
    "S18": {
      "type": "structure",
      "members": {
        "id": {},
        "parentId": {},
        "pathPart": {},
        "path": {},
        "resourceMethods": {
          "type": "map",
          "key": {},
          "value": {
            "shape": "S1a"
          }
        }
      }
    },
    "S1a": {
      "type": "structure",
      "members": {
        "httpMethod": {},
        "authorizationType": {},
        "authorizerId": {},
        "apiKeyRequired": {
          "type": "boolean"
        },
        "requestValidatorId": {},
        "operationName": {},
        "requestParameters": {
          "shape": "S1b"
        },
        "requestModels": {
          "shape": "Sk"
        },
        "methodResponses": {
          "type": "map",
          "key": {},
          "value": {
            "shape": "S1d"
          }
        },
        "methodIntegration": {
          "shape": "S1f"
        },
        "authorizationScopes": {
          "shape": "S8"
        }
      }
    },
    "S1b": {
      "type": "map",
      "key": {},
      "value": {
        "type": "boolean"
      }
    },
    "S1d": {
      "type": "structure",
      "members": {
        "statusCode": {},
        "responseParameters": {
          "shape": "S1b"
        },
        "responseModels": {
          "shape": "Sk"
        }
      }
    },
    "S1f": {
      "type": "structure",
      "members": {
        "type": {},
        "httpMethod": {},
        "uri": {},
        "connectionType": {},
        "connectionId": {},
        "credentials": {},
        "requestParameters": {
          "shape": "Sk"
        },
        "requestTemplates": {
          "shape": "Sk"
        },
        "passthroughBehavior": {},
        "contentHandling": {},
        "timeoutInMillis": {
          "type": "integer"
        },
        "cacheNamespace": {},
        "cacheKeyParameters": {
          "shape": "S8"
        },
        "integrationResponses": {
          "type": "map",
          "key": {},
          "value": {
            "shape": "S1l"
          }
        }
      }
    },
    "S1l": {
      "type": "structure",
      "members": {
        "statusCode": {},
        "selectionPattern": {},
        "responseParameters": {
          "shape": "Sk"
        },
        "responseTemplates": {
          "shape": "Sk"
        },
        "contentHandling": {}
      }
    },
    "S1o": {
      "type": "structure",
      "members": {
        "id": {},
        "name": {},
        "description": {},
        "createdDate": {
          "type": "timestamp"
        },
        "version": {},
        "warnings": {
          "shape": "S8"
        },
        "binaryMediaTypes": {
          "shape": "S8"
        },
        "minimumCompressionSize": {
          "type": "integer"
        },
        "apiKeySource": {},
        "endpointConfiguration": {
          "shape": "Sz"
        }
      }
    },
    "S1q": {
      "type": "structure",
      "members": {
        "percentTraffic": {
          "type": "double"
        },
        "deploymentId": {},
        "stageVariableOverrides": {
          "shape": "Sk"
        },
        "useStageCache": {
          "type": "boolean"
        }
      }
    },
    "S1r": {
      "type": "structure",
      "members": {
        "deploymentId": {},
        "clientCertificateId": {},
        "stageName": {},
        "description": {},
        "cacheClusterEnabled": {
          "type": "boolean"
        },
        "cacheClusterSize": {},
        "cacheClusterStatus": {},
        "methodSettings": {
          "type": "map",
          "key": {},
          "value": {
            "type": "structure",
            "members": {
              "metricsEnabled": {
                "type": "boolean"
              },
              "loggingLevel": {},
              "dataTraceEnabled": {
                "type": "boolean"
              },
              "throttlingBurstLimit": {
                "type": "integer"
              },
              "throttlingRateLimit": {
                "type": "double"
              },
              "cachingEnabled": {
                "type": "boolean"
              },
              "cacheTtlInSeconds": {
                "type": "integer"
              },
              "cacheDataEncrypted": {
                "type": "boolean"
              },
              "requireAuthorizationForCacheControl": {
                "type": "boolean"
              },
              "unauthorizedCacheControlHeaderStrategy": {}
            }
          }
        },
        "variables": {
          "shape": "Sk"
        },
        "documentationVersion": {},
        "accessLogSettings": {
          "type": "structure",
          "members": {
            "format": {},
            "destinationArn": {}
          }
        },
        "canarySettings": {
          "shape": "S1q"
        },
        "tags": {
          "shape": "Sk"
        },
        "createdDate": {
          "type": "timestamp"
        },
        "lastUpdatedDate": {
          "type": "timestamp"
        }
      }
    },
    "S1y": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "apiId": {},
          "stage": {}
        }
      }
    },
    "S20": {
      "type": "structure",
      "members": {
        "burstLimit": {
          "type": "integer"
        },
        "rateLimit": {
          "type": "double"
        }
      }
    },
    "S21": {
      "type": "structure",
      "members": {
        "limit": {
          "type": "integer"
        },
        "offset": {
          "type": "integer"
        },
        "period": {}
      }
    },
    "S23": {
      "type": "structure",
      "members": {
        "id": {},
        "name": {},
        "description": {},
        "apiStages": {
          "shape": "S1y"
        },
        "throttle": {
          "shape": "S20"
        },
        "quota": {
          "shape": "S21"
        },
        "productCode": {}
      }
    },
    "S25": {
      "type": "structure",
      "members": {
        "id": {},
        "type": {},
        "value": {},
        "name": {}
      }
    },
    "S27": {
      "type": "structure",
      "members": {
        "id": {},
        "name": {},
        "description": {},
        "targetArns": {
          "shape": "S8"
        },
        "status": {},
        "statusMessage": {}
      }
    },
    "S2y": {
      "type": "structure",
      "members": {
        "clientCertificateId": {},
        "description": {},
        "pemEncodedCertificate": {},
        "createdDate": {
          "type": "timestamp"
        },
        "expirationDate": {
          "type": "timestamp"
        }
      }
    },
    "S30": {
      "type": "structure",
      "members": {
        "cloudwatchRoleArn": {},
        "throttleSettings": {
          "shape": "S20"
        },
        "features": {
          "shape": "S8"
        },
        "apiKeyVersion": {}
      }
    },
    "S42": {
      "type": "structure",
      "members": {
        "responseType": {},
        "statusCode": {},
        "responseParameters": {
          "shape": "Sk"
        },
        "responseTemplates": {
          "shape": "Sk"
        },
        "defaultResponse": {
          "type": "boolean"
        }
      }
    },
    "S4v": {
      "type": "structure",
      "members": {
        "id": {},
        "friendlyName": {},
        "description": {},
        "configurationProperties": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "name": {},
              "friendlyName": {},
              "description": {},
              "required": {
                "type": "boolean"
              },
              "defaultValue": {}
            }
          }
        }
      }
    },
    "S58": {
      "type": "structure",
      "members": {
        "usagePlanId": {},
        "startDate": {},
        "endDate": {},
        "position": {},
        "items": {
          "locationName": "values",
          "type": "map",
          "key": {},
          "value": {
            "type": "list",
            "member": {
              "type": "list",
              "member": {
                "type": "long"
              }
            }
          }
        }
      }
    },
    "S64": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S6b": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "op": {},
          "path": {},
          "value": {},
          "from": {}
        }
      }
    }
  }
}
},{}],4:[function(require,module,exports){
module.exports={
  "pagination": {
    "GetApiKeys": {
      "input_token": "position",
      "limit_key": "limit",
      "output_token": "position",
      "result_key": "items"
    },
    "GetBasePathMappings": {
      "input_token": "position",
      "limit_key": "limit",
      "output_token": "position",
      "result_key": "items"
    },
    "GetClientCertificates": {
      "input_token": "position",
      "limit_key": "limit",
      "output_token": "position",
      "result_key": "items"
    },
    "GetDeployments": {
      "input_token": "position",
      "limit_key": "limit",
      "output_token": "position",
      "result_key": "items"
    },
    "GetDomainNames": {
      "input_token": "position",
      "limit_key": "limit",
      "output_token": "position",
      "result_key": "items"
    },
    "GetModels": {
      "input_token": "position",
      "limit_key": "limit",
      "output_token": "position",
      "result_key": "items"
    },
    "GetResources": {
      "input_token": "position",
      "limit_key": "limit",
      "output_token": "position",
      "result_key": "items"
    },
    "GetRestApis": {
      "input_token": "position",
      "limit_key": "limit",
      "output_token": "position",
      "result_key": "items"
    },
    "GetUsage": {
      "input_token": "position",
      "limit_key": "limit",
      "output_token": "position",
      "result_key": "items"
    },
    "GetUsagePlanKeys": {
      "input_token": "position",
      "limit_key": "limit",
      "output_token": "position",
      "result_key": "items"
    },
    "GetUsagePlans": {
      "input_token": "position",
      "limit_key": "limit",
      "output_token": "position",
      "result_key": "items"
    },
    "GetVpcLinks": {
      "input_token": "position",
      "limit_key": "limit",
      "output_token": "position",
      "result_key": "items"
    }
  }
}
},{}],5:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2016-02-06",
    "endpointPrefix": "autoscaling",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceFullName": "Application Auto Scaling",
    "serviceId": "Application Auto Scaling",
    "signatureVersion": "v4",
    "signingName": "application-autoscaling",
    "targetPrefix": "AnyScaleFrontendService",
    "uid": "application-autoscaling-2016-02-06"
  },
  "operations": {
    "DeleteScalingPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "PolicyName",
          "ServiceNamespace",
          "ResourceId",
          "ScalableDimension"
        ],
        "members": {
          "PolicyName": {},
          "ServiceNamespace": {},
          "ResourceId": {},
          "ScalableDimension": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteScheduledAction": {
      "input": {
        "type": "structure",
        "required": [
          "ServiceNamespace",
          "ScheduledActionName",
          "ResourceId"
        ],
        "members": {
          "ServiceNamespace": {},
          "ScheduledActionName": {},
          "ResourceId": {},
          "ScalableDimension": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeregisterScalableTarget": {
      "input": {
        "type": "structure",
        "required": [
          "ServiceNamespace",
          "ResourceId",
          "ScalableDimension"
        ],
        "members": {
          "ServiceNamespace": {},
          "ResourceId": {},
          "ScalableDimension": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DescribeScalableTargets": {
      "input": {
        "type": "structure",
        "required": [
          "ServiceNamespace"
        ],
        "members": {
          "ServiceNamespace": {},
          "ResourceIds": {
            "shape": "Sb"
          },
          "ScalableDimension": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ScalableTargets": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "ServiceNamespace",
                "ResourceId",
                "ScalableDimension",
                "MinCapacity",
                "MaxCapacity",
                "RoleARN",
                "CreationTime"
              ],
              "members": {
                "ServiceNamespace": {},
                "ResourceId": {},
                "ScalableDimension": {},
                "MinCapacity": {
                  "type": "integer"
                },
                "MaxCapacity": {
                  "type": "integer"
                },
                "RoleARN": {},
                "CreationTime": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeScalingActivities": {
      "input": {
        "type": "structure",
        "required": [
          "ServiceNamespace"
        ],
        "members": {
          "ServiceNamespace": {},
          "ResourceId": {},
          "ScalableDimension": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ScalingActivities": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "ActivityId",
                "ServiceNamespace",
                "ResourceId",
                "ScalableDimension",
                "Description",
                "Cause",
                "StartTime",
                "StatusCode"
              ],
              "members": {
                "ActivityId": {},
                "ServiceNamespace": {},
                "ResourceId": {},
                "ScalableDimension": {},
                "Description": {},
                "Cause": {},
                "StartTime": {
                  "type": "timestamp"
                },
                "EndTime": {
                  "type": "timestamp"
                },
                "StatusCode": {},
                "StatusMessage": {},
                "Details": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeScalingPolicies": {
      "input": {
        "type": "structure",
        "required": [
          "ServiceNamespace"
        ],
        "members": {
          "PolicyNames": {
            "shape": "Sb"
          },
          "ServiceNamespace": {},
          "ResourceId": {},
          "ScalableDimension": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ScalingPolicies": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "PolicyARN",
                "PolicyName",
                "ServiceNamespace",
                "ResourceId",
                "ScalableDimension",
                "PolicyType",
                "CreationTime"
              ],
              "members": {
                "PolicyARN": {},
                "PolicyName": {},
                "ServiceNamespace": {},
                "ResourceId": {},
                "ScalableDimension": {},
                "PolicyType": {},
                "StepScalingPolicyConfiguration": {
                  "shape": "Sv"
                },
                "TargetTrackingScalingPolicyConfiguration": {
                  "shape": "S14"
                },
                "Alarms": {
                  "shape": "S1i"
                },
                "CreationTime": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeScheduledActions": {
      "input": {
        "type": "structure",
        "required": [
          "ServiceNamespace"
        ],
        "members": {
          "ScheduledActionNames": {
            "shape": "Sb"
          },
          "ServiceNamespace": {},
          "ResourceId": {},
          "ScalableDimension": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ScheduledActions": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "ScheduledActionName",
                "ScheduledActionARN",
                "ServiceNamespace",
                "Schedule",
                "ResourceId",
                "CreationTime"
              ],
              "members": {
                "ScheduledActionName": {},
                "ScheduledActionARN": {},
                "ServiceNamespace": {},
                "Schedule": {},
                "ResourceId": {},
                "ScalableDimension": {},
                "StartTime": {
                  "type": "timestamp"
                },
                "EndTime": {
                  "type": "timestamp"
                },
                "ScalableTargetAction": {
                  "shape": "S1p"
                },
                "CreationTime": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "PutScalingPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "PolicyName",
          "ServiceNamespace",
          "ResourceId",
          "ScalableDimension"
        ],
        "members": {
          "PolicyName": {},
          "ServiceNamespace": {},
          "ResourceId": {},
          "ScalableDimension": {},
          "PolicyType": {},
          "StepScalingPolicyConfiguration": {
            "shape": "Sv"
          },
          "TargetTrackingScalingPolicyConfiguration": {
            "shape": "S14"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "PolicyARN"
        ],
        "members": {
          "PolicyARN": {},
          "Alarms": {
            "shape": "S1i"
          }
        }
      }
    },
    "PutScheduledAction": {
      "input": {
        "type": "structure",
        "required": [
          "ServiceNamespace",
          "ScheduledActionName",
          "ResourceId"
        ],
        "members": {
          "ServiceNamespace": {},
          "Schedule": {},
          "ScheduledActionName": {},
          "ResourceId": {},
          "ScalableDimension": {},
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "ScalableTargetAction": {
            "shape": "S1p"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "RegisterScalableTarget": {
      "input": {
        "type": "structure",
        "required": [
          "ServiceNamespace",
          "ResourceId",
          "ScalableDimension"
        ],
        "members": {
          "ServiceNamespace": {},
          "ResourceId": {},
          "ScalableDimension": {},
          "MinCapacity": {
            "type": "integer"
          },
          "MaxCapacity": {
            "type": "integer"
          },
          "RoleARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    }
  },
  "shapes": {
    "Sb": {
      "type": "list",
      "member": {}
    },
    "Sv": {
      "type": "structure",
      "members": {
        "AdjustmentType": {},
        "StepAdjustments": {
          "type": "list",
          "member": {
            "type": "structure",
            "required": [
              "ScalingAdjustment"
            ],
            "members": {
              "MetricIntervalLowerBound": {
                "type": "double"
              },
              "MetricIntervalUpperBound": {
                "type": "double"
              },
              "ScalingAdjustment": {
                "type": "integer"
              }
            }
          }
        },
        "MinAdjustmentMagnitude": {
          "type": "integer"
        },
        "Cooldown": {
          "type": "integer"
        },
        "MetricAggregationType": {}
      }
    },
    "S14": {
      "type": "structure",
      "required": [
        "TargetValue"
      ],
      "members": {
        "TargetValue": {
          "type": "double"
        },
        "PredefinedMetricSpecification": {
          "type": "structure",
          "required": [
            "PredefinedMetricType"
          ],
          "members": {
            "PredefinedMetricType": {},
            "ResourceLabel": {}
          }
        },
        "CustomizedMetricSpecification": {
          "type": "structure",
          "required": [
            "MetricName",
            "Namespace",
            "Statistic"
          ],
          "members": {
            "MetricName": {},
            "Namespace": {},
            "Dimensions": {
              "type": "list",
              "member": {
                "type": "structure",
                "required": [
                  "Name",
                  "Value"
                ],
                "members": {
                  "Name": {},
                  "Value": {}
                }
              }
            },
            "Statistic": {},
            "Unit": {}
          }
        },
        "ScaleOutCooldown": {
          "type": "integer"
        },
        "ScaleInCooldown": {
          "type": "integer"
        },
        "DisableScaleIn": {
          "type": "boolean"
        }
      }
    },
    "S1i": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "AlarmName",
          "AlarmARN"
        ],
        "members": {
          "AlarmName": {},
          "AlarmARN": {}
        }
      }
    },
    "S1p": {
      "type": "structure",
      "members": {
        "MinCapacity": {
          "type": "integer"
        },
        "MaxCapacity": {
          "type": "integer"
        }
      }
    }
  }
}
},{}],6:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeScalableTargets": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "ScalableTargets"
    },
    "DescribeScalingActivities": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "ScalingActivities"
    },
    "DescribeScalingPolicies": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "ScalingPolicies"
    }
  }
}
},{}],7:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2011-01-01",
    "endpointPrefix": "autoscaling",
    "protocol": "query",
    "serviceFullName": "Auto Scaling",
    "signatureVersion": "v4",
    "uid": "autoscaling-2011-01-01",
    "xmlNamespace": "http://autoscaling.amazonaws.com/doc/2011-01-01/"
  },
  "operations": {
    "AttachInstances": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName"
        ],
        "members": {
          "InstanceIds": {
            "shape": "S2"
          },
          "AutoScalingGroupName": {}
        }
      }
    },
    "AttachLoadBalancerTargetGroups": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName",
          "TargetGroupARNs"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "TargetGroupARNs": {
            "shape": "S6"
          }
        }
      },
      "output": {
        "resultWrapper": "AttachLoadBalancerTargetGroupsResult",
        "type": "structure",
        "members": {}
      }
    },
    "AttachLoadBalancers": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName",
          "LoadBalancerNames"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "LoadBalancerNames": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "resultWrapper": "AttachLoadBalancersResult",
        "type": "structure",
        "members": {}
      }
    },
    "CompleteLifecycleAction": {
      "input": {
        "type": "structure",
        "required": [
          "LifecycleHookName",
          "AutoScalingGroupName",
          "LifecycleActionResult"
        ],
        "members": {
          "LifecycleHookName": {},
          "AutoScalingGroupName": {},
          "LifecycleActionToken": {},
          "LifecycleActionResult": {},
          "InstanceId": {}
        }
      },
      "output": {
        "resultWrapper": "CompleteLifecycleActionResult",
        "type": "structure",
        "members": {}
      }
    },
    "CreateAutoScalingGroup": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName",
          "MinSize",
          "MaxSize"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "LaunchConfigurationName": {},
          "LaunchTemplate": {
            "shape": "Sj"
          },
          "InstanceId": {},
          "MinSize": {
            "type": "integer"
          },
          "MaxSize": {
            "type": "integer"
          },
          "DesiredCapacity": {
            "type": "integer"
          },
          "DefaultCooldown": {
            "type": "integer"
          },
          "AvailabilityZones": {
            "shape": "Sp"
          },
          "LoadBalancerNames": {
            "shape": "Sa"
          },
          "TargetGroupARNs": {
            "shape": "S6"
          },
          "HealthCheckType": {},
          "HealthCheckGracePeriod": {
            "type": "integer"
          },
          "PlacementGroup": {},
          "VPCZoneIdentifier": {},
          "TerminationPolicies": {
            "shape": "St"
          },
          "NewInstancesProtectedFromScaleIn": {
            "type": "boolean"
          },
          "LifecycleHookSpecificationList": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "LifecycleHookName",
                "LifecycleTransition"
              ],
              "members": {
                "LifecycleHookName": {},
                "LifecycleTransition": {},
                "NotificationMetadata": {},
                "HeartbeatTimeout": {
                  "type": "integer"
                },
                "DefaultResult": {},
                "NotificationTargetARN": {},
                "RoleARN": {}
              }
            }
          },
          "Tags": {
            "shape": "S12"
          }
        }
      }
    },
    "CreateLaunchConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "LaunchConfigurationName"
        ],
        "members": {
          "LaunchConfigurationName": {},
          "ImageId": {},
          "KeyName": {},
          "SecurityGroups": {
            "shape": "S19"
          },
          "ClassicLinkVPCId": {},
          "ClassicLinkVPCSecurityGroups": {
            "shape": "S1a"
          },
          "UserData": {},
          "InstanceId": {},
          "InstanceType": {},
          "KernelId": {},
          "RamdiskId": {},
          "BlockDeviceMappings": {
            "shape": "S1c"
          },
          "InstanceMonitoring": {
            "shape": "S1l"
          },
          "SpotPrice": {},
          "IamInstanceProfile": {},
          "EbsOptimized": {
            "type": "boolean"
          },
          "AssociatePublicIpAddress": {
            "type": "boolean"
          },
          "PlacementTenancy": {}
        }
      }
    },
    "CreateOrUpdateTags": {
      "input": {
        "type": "structure",
        "required": [
          "Tags"
        ],
        "members": {
          "Tags": {
            "shape": "S12"
          }
        }
      }
    },
    "DeleteAutoScalingGroup": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "ForceDelete": {
            "type": "boolean"
          }
        }
      }
    },
    "DeleteLaunchConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "LaunchConfigurationName"
        ],
        "members": {
          "LaunchConfigurationName": {}
        }
      }
    },
    "DeleteLifecycleHook": {
      "input": {
        "type": "structure",
        "required": [
          "LifecycleHookName",
          "AutoScalingGroupName"
        ],
        "members": {
          "LifecycleHookName": {},
          "AutoScalingGroupName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteLifecycleHookResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteNotificationConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName",
          "TopicARN"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "TopicARN": {}
        }
      }
    },
    "DeletePolicy": {
      "input": {
        "type": "structure",
        "required": [
          "PolicyName"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "PolicyName": {}
        }
      }
    },
    "DeleteScheduledAction": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName",
          "ScheduledActionName"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "ScheduledActionName": {}
        }
      }
    },
    "DeleteTags": {
      "input": {
        "type": "structure",
        "required": [
          "Tags"
        ],
        "members": {
          "Tags": {
            "shape": "S12"
          }
        }
      }
    },
    "DescribeAccountLimits": {
      "output": {
        "resultWrapper": "DescribeAccountLimitsResult",
        "type": "structure",
        "members": {
          "MaxNumberOfAutoScalingGroups": {
            "type": "integer"
          },
          "MaxNumberOfLaunchConfigurations": {
            "type": "integer"
          },
          "NumberOfAutoScalingGroups": {
            "type": "integer"
          },
          "NumberOfLaunchConfigurations": {
            "type": "integer"
          }
        }
      }
    },
    "DescribeAdjustmentTypes": {
      "output": {
        "resultWrapper": "DescribeAdjustmentTypesResult",
        "type": "structure",
        "members": {
          "AdjustmentTypes": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "AdjustmentType": {}
              }
            }
          }
        }
      }
    },
    "DescribeAutoScalingGroups": {
      "input": {
        "type": "structure",
        "members": {
          "AutoScalingGroupNames": {
            "shape": "S2a"
          },
          "NextToken": {},
          "MaxRecords": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeAutoScalingGroupsResult",
        "type": "structure",
        "required": [
          "AutoScalingGroups"
        ],
        "members": {
          "AutoScalingGroups": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "AutoScalingGroupName",
                "MinSize",
                "MaxSize",
                "DesiredCapacity",
                "DefaultCooldown",
                "AvailabilityZones",
                "HealthCheckType",
                "CreatedTime"
              ],
              "members": {
                "AutoScalingGroupName": {},
                "AutoScalingGroupARN": {},
                "LaunchConfigurationName": {},
                "LaunchTemplate": {
                  "shape": "Sj"
                },
                "MinSize": {
                  "type": "integer"
                },
                "MaxSize": {
                  "type": "integer"
                },
                "DesiredCapacity": {
                  "type": "integer"
                },
                "DefaultCooldown": {
                  "type": "integer"
                },
                "AvailabilityZones": {
                  "shape": "Sp"
                },
                "LoadBalancerNames": {
                  "shape": "Sa"
                },
                "TargetGroupARNs": {
                  "shape": "S6"
                },
                "HealthCheckType": {},
                "HealthCheckGracePeriod": {
                  "type": "integer"
                },
                "Instances": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "required": [
                      "InstanceId",
                      "AvailabilityZone",
                      "LifecycleState",
                      "HealthStatus",
                      "ProtectedFromScaleIn"
                    ],
                    "members": {
                      "InstanceId": {},
                      "AvailabilityZone": {},
                      "LifecycleState": {},
                      "HealthStatus": {},
                      "LaunchConfigurationName": {},
                      "LaunchTemplate": {
                        "shape": "Sj"
                      },
                      "ProtectedFromScaleIn": {
                        "type": "boolean"
                      }
                    }
                  }
                },
                "CreatedTime": {
                  "type": "timestamp"
                },
                "SuspendedProcesses": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "ProcessName": {},
                      "SuspensionReason": {}
                    }
                  }
                },
                "PlacementGroup": {},
                "VPCZoneIdentifier": {},
                "EnabledMetrics": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "Metric": {},
                      "Granularity": {}
                    }
                  }
                },
                "Status": {},
                "Tags": {
                  "shape": "S2n"
                },
                "TerminationPolicies": {
                  "shape": "St"
                },
                "NewInstancesProtectedFromScaleIn": {
                  "type": "boolean"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeAutoScalingInstances": {
      "input": {
        "type": "structure",
        "members": {
          "InstanceIds": {
            "shape": "S2"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeAutoScalingInstancesResult",
        "type": "structure",
        "members": {
          "AutoScalingInstances": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "InstanceId",
                "AutoScalingGroupName",
                "AvailabilityZone",
                "LifecycleState",
                "HealthStatus",
                "ProtectedFromScaleIn"
              ],
              "members": {
                "InstanceId": {},
                "AutoScalingGroupName": {},
                "AvailabilityZone": {},
                "LifecycleState": {},
                "HealthStatus": {},
                "LaunchConfigurationName": {},
                "LaunchTemplate": {
                  "shape": "Sj"
                },
                "ProtectedFromScaleIn": {
                  "type": "boolean"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeAutoScalingNotificationTypes": {
      "output": {
        "resultWrapper": "DescribeAutoScalingNotificationTypesResult",
        "type": "structure",
        "members": {
          "AutoScalingNotificationTypes": {
            "shape": "S2u"
          }
        }
      }
    },
    "DescribeLaunchConfigurations": {
      "input": {
        "type": "structure",
        "members": {
          "LaunchConfigurationNames": {
            "type": "list",
            "member": {}
          },
          "NextToken": {},
          "MaxRecords": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeLaunchConfigurationsResult",
        "type": "structure",
        "required": [
          "LaunchConfigurations"
        ],
        "members": {
          "LaunchConfigurations": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "LaunchConfigurationName",
                "ImageId",
                "InstanceType",
                "CreatedTime"
              ],
              "members": {
                "LaunchConfigurationName": {},
                "LaunchConfigurationARN": {},
                "ImageId": {},
                "KeyName": {},
                "SecurityGroups": {
                  "shape": "S19"
                },
                "ClassicLinkVPCId": {},
                "ClassicLinkVPCSecurityGroups": {
                  "shape": "S1a"
                },
                "UserData": {},
                "InstanceType": {},
                "KernelId": {},
                "RamdiskId": {},
                "BlockDeviceMappings": {
                  "shape": "S1c"
                },
                "InstanceMonitoring": {
                  "shape": "S1l"
                },
                "SpotPrice": {},
                "IamInstanceProfile": {},
                "CreatedTime": {
                  "type": "timestamp"
                },
                "EbsOptimized": {
                  "type": "boolean"
                },
                "AssociatePublicIpAddress": {
                  "type": "boolean"
                },
                "PlacementTenancy": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeLifecycleHookTypes": {
      "output": {
        "resultWrapper": "DescribeLifecycleHookTypesResult",
        "type": "structure",
        "members": {
          "LifecycleHookTypes": {
            "shape": "S2u"
          }
        }
      }
    },
    "DescribeLifecycleHooks": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "LifecycleHookNames": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeLifecycleHooksResult",
        "type": "structure",
        "members": {
          "LifecycleHooks": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "LifecycleHookName": {},
                "AutoScalingGroupName": {},
                "LifecycleTransition": {},
                "NotificationTargetARN": {},
                "RoleARN": {},
                "NotificationMetadata": {},
                "HeartbeatTimeout": {
                  "type": "integer"
                },
                "GlobalTimeout": {
                  "type": "integer"
                },
                "DefaultResult": {}
              }
            }
          }
        }
      }
    },
    "DescribeLoadBalancerTargetGroups": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "NextToken": {},
          "MaxRecords": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeLoadBalancerTargetGroupsResult",
        "type": "structure",
        "members": {
          "LoadBalancerTargetGroups": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "LoadBalancerTargetGroupARN": {},
                "State": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeLoadBalancers": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "NextToken": {},
          "MaxRecords": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeLoadBalancersResult",
        "type": "structure",
        "members": {
          "LoadBalancers": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "LoadBalancerName": {},
                "State": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeMetricCollectionTypes": {
      "output": {
        "resultWrapper": "DescribeMetricCollectionTypesResult",
        "type": "structure",
        "members": {
          "Metrics": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Metric": {}
              }
            }
          },
          "Granularities": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Granularity": {}
              }
            }
          }
        }
      }
    },
    "DescribeNotificationConfigurations": {
      "input": {
        "type": "structure",
        "members": {
          "AutoScalingGroupNames": {
            "shape": "S2a"
          },
          "NextToken": {},
          "MaxRecords": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeNotificationConfigurationsResult",
        "type": "structure",
        "required": [
          "NotificationConfigurations"
        ],
        "members": {
          "NotificationConfigurations": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "AutoScalingGroupName": {},
                "TopicARN": {},
                "NotificationType": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribePolicies": {
      "input": {
        "type": "structure",
        "members": {
          "AutoScalingGroupName": {},
          "PolicyNames": {
            "type": "list",
            "member": {}
          },
          "PolicyTypes": {
            "type": "list",
            "member": {}
          },
          "NextToken": {},
          "MaxRecords": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribePoliciesResult",
        "type": "structure",
        "members": {
          "ScalingPolicies": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "AutoScalingGroupName": {},
                "PolicyName": {},
                "PolicyARN": {},
                "PolicyType": {},
                "AdjustmentType": {},
                "MinAdjustmentStep": {
                  "shape": "S3u"
                },
                "MinAdjustmentMagnitude": {
                  "type": "integer"
                },
                "ScalingAdjustment": {
                  "type": "integer"
                },
                "Cooldown": {
                  "type": "integer"
                },
                "StepAdjustments": {
                  "shape": "S3x"
                },
                "MetricAggregationType": {},
                "EstimatedInstanceWarmup": {
                  "type": "integer"
                },
                "Alarms": {
                  "shape": "S41"
                },
                "TargetTrackingConfiguration": {
                  "shape": "S43"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeScalingActivities": {
      "input": {
        "type": "structure",
        "members": {
          "ActivityIds": {
            "type": "list",
            "member": {}
          },
          "AutoScalingGroupName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeScalingActivitiesResult",
        "type": "structure",
        "required": [
          "Activities"
        ],
        "members": {
          "Activities": {
            "shape": "S4j"
          },
          "NextToken": {}
        }
      }
    },
    "DescribeScalingProcessTypes": {
      "output": {
        "resultWrapper": "DescribeScalingProcessTypesResult",
        "type": "structure",
        "members": {
          "Processes": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "ProcessName"
              ],
              "members": {
                "ProcessName": {}
              }
            }
          }
        }
      }
    },
    "DescribeScheduledActions": {
      "input": {
        "type": "structure",
        "members": {
          "AutoScalingGroupName": {},
          "ScheduledActionNames": {
            "type": "list",
            "member": {}
          },
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "NextToken": {},
          "MaxRecords": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeScheduledActionsResult",
        "type": "structure",
        "members": {
          "ScheduledUpdateGroupActions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "AutoScalingGroupName": {},
                "ScheduledActionName": {},
                "ScheduledActionARN": {},
                "Time": {
                  "type": "timestamp"
                },
                "StartTime": {
                  "type": "timestamp"
                },
                "EndTime": {
                  "type": "timestamp"
                },
                "Recurrence": {},
                "MinSize": {
                  "type": "integer"
                },
                "MaxSize": {
                  "type": "integer"
                },
                "DesiredCapacity": {
                  "type": "integer"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeTags": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "Values": {
                  "type": "list",
                  "member": {}
                }
              }
            }
          },
          "NextToken": {},
          "MaxRecords": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeTagsResult",
        "type": "structure",
        "members": {
          "Tags": {
            "shape": "S2n"
          },
          "NextToken": {}
        }
      }
    },
    "DescribeTerminationPolicyTypes": {
      "output": {
        "resultWrapper": "DescribeTerminationPolicyTypesResult",
        "type": "structure",
        "members": {
          "TerminationPolicyTypes": {
            "shape": "St"
          }
        }
      }
    },
    "DetachInstances": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName",
          "ShouldDecrementDesiredCapacity"
        ],
        "members": {
          "InstanceIds": {
            "shape": "S2"
          },
          "AutoScalingGroupName": {},
          "ShouldDecrementDesiredCapacity": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "DetachInstancesResult",
        "type": "structure",
        "members": {
          "Activities": {
            "shape": "S4j"
          }
        }
      }
    },
    "DetachLoadBalancerTargetGroups": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName",
          "TargetGroupARNs"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "TargetGroupARNs": {
            "shape": "S6"
          }
        }
      },
      "output": {
        "resultWrapper": "DetachLoadBalancerTargetGroupsResult",
        "type": "structure",
        "members": {}
      }
    },
    "DetachLoadBalancers": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName",
          "LoadBalancerNames"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "LoadBalancerNames": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "resultWrapper": "DetachLoadBalancersResult",
        "type": "structure",
        "members": {}
      }
    },
    "DisableMetricsCollection": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "Metrics": {
            "shape": "S59"
          }
        }
      }
    },
    "EnableMetricsCollection": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName",
          "Granularity"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "Metrics": {
            "shape": "S59"
          },
          "Granularity": {}
        }
      }
    },
    "EnterStandby": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName",
          "ShouldDecrementDesiredCapacity"
        ],
        "members": {
          "InstanceIds": {
            "shape": "S2"
          },
          "AutoScalingGroupName": {},
          "ShouldDecrementDesiredCapacity": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "EnterStandbyResult",
        "type": "structure",
        "members": {
          "Activities": {
            "shape": "S4j"
          }
        }
      }
    },
    "ExecutePolicy": {
      "input": {
        "type": "structure",
        "required": [
          "PolicyName"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "PolicyName": {},
          "HonorCooldown": {
            "type": "boolean"
          },
          "MetricValue": {
            "type": "double"
          },
          "BreachThreshold": {
            "type": "double"
          }
        }
      }
    },
    "ExitStandby": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName"
        ],
        "members": {
          "InstanceIds": {
            "shape": "S2"
          },
          "AutoScalingGroupName": {}
        }
      },
      "output": {
        "resultWrapper": "ExitStandbyResult",
        "type": "structure",
        "members": {
          "Activities": {
            "shape": "S4j"
          }
        }
      }
    },
    "PutLifecycleHook": {
      "input": {
        "type": "structure",
        "required": [
          "LifecycleHookName",
          "AutoScalingGroupName"
        ],
        "members": {
          "LifecycleHookName": {},
          "AutoScalingGroupName": {},
          "LifecycleTransition": {},
          "RoleARN": {},
          "NotificationTargetARN": {},
          "NotificationMetadata": {},
          "HeartbeatTimeout": {
            "type": "integer"
          },
          "DefaultResult": {}
        }
      },
      "output": {
        "resultWrapper": "PutLifecycleHookResult",
        "type": "structure",
        "members": {}
      }
    },
    "PutNotificationConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName",
          "TopicARN",
          "NotificationTypes"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "TopicARN": {},
          "NotificationTypes": {
            "shape": "S2u"
          }
        }
      }
    },
    "PutScalingPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName",
          "PolicyName"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "PolicyName": {},
          "PolicyType": {},
          "AdjustmentType": {},
          "MinAdjustmentStep": {
            "shape": "S3u"
          },
          "MinAdjustmentMagnitude": {
            "type": "integer"
          },
          "ScalingAdjustment": {
            "type": "integer"
          },
          "Cooldown": {
            "type": "integer"
          },
          "MetricAggregationType": {},
          "StepAdjustments": {
            "shape": "S3x"
          },
          "EstimatedInstanceWarmup": {
            "type": "integer"
          },
          "TargetTrackingConfiguration": {
            "shape": "S43"
          }
        }
      },
      "output": {
        "resultWrapper": "PutScalingPolicyResult",
        "type": "structure",
        "members": {
          "PolicyARN": {},
          "Alarms": {
            "shape": "S41"
          }
        }
      }
    },
    "PutScheduledUpdateGroupAction": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName",
          "ScheduledActionName"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "ScheduledActionName": {},
          "Time": {
            "type": "timestamp"
          },
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "Recurrence": {},
          "MinSize": {
            "type": "integer"
          },
          "MaxSize": {
            "type": "integer"
          },
          "DesiredCapacity": {
            "type": "integer"
          }
        }
      }
    },
    "RecordLifecycleActionHeartbeat": {
      "input": {
        "type": "structure",
        "required": [
          "LifecycleHookName",
          "AutoScalingGroupName"
        ],
        "members": {
          "LifecycleHookName": {},
          "AutoScalingGroupName": {},
          "LifecycleActionToken": {},
          "InstanceId": {}
        }
      },
      "output": {
        "resultWrapper": "RecordLifecycleActionHeartbeatResult",
        "type": "structure",
        "members": {}
      }
    },
    "ResumeProcesses": {
      "input": {
        "shape": "S5p"
      }
    },
    "SetDesiredCapacity": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName",
          "DesiredCapacity"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "DesiredCapacity": {
            "type": "integer"
          },
          "HonorCooldown": {
            "type": "boolean"
          }
        }
      }
    },
    "SetInstanceHealth": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId",
          "HealthStatus"
        ],
        "members": {
          "InstanceId": {},
          "HealthStatus": {},
          "ShouldRespectGracePeriod": {
            "type": "boolean"
          }
        }
      }
    },
    "SetInstanceProtection": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceIds",
          "AutoScalingGroupName",
          "ProtectedFromScaleIn"
        ],
        "members": {
          "InstanceIds": {
            "shape": "S2"
          },
          "AutoScalingGroupName": {},
          "ProtectedFromScaleIn": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "SetInstanceProtectionResult",
        "type": "structure",
        "members": {}
      }
    },
    "SuspendProcesses": {
      "input": {
        "shape": "S5p"
      }
    },
    "TerminateInstanceInAutoScalingGroup": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId",
          "ShouldDecrementDesiredCapacity"
        ],
        "members": {
          "InstanceId": {},
          "ShouldDecrementDesiredCapacity": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "TerminateInstanceInAutoScalingGroupResult",
        "type": "structure",
        "members": {
          "Activity": {
            "shape": "S4k"
          }
        }
      }
    },
    "UpdateAutoScalingGroup": {
      "input": {
        "type": "structure",
        "required": [
          "AutoScalingGroupName"
        ],
        "members": {
          "AutoScalingGroupName": {},
          "LaunchConfigurationName": {},
          "LaunchTemplate": {
            "shape": "Sj"
          },
          "MinSize": {
            "type": "integer"
          },
          "MaxSize": {
            "type": "integer"
          },
          "DesiredCapacity": {
            "type": "integer"
          },
          "DefaultCooldown": {
            "type": "integer"
          },
          "AvailabilityZones": {
            "shape": "Sp"
          },
          "HealthCheckType": {},
          "HealthCheckGracePeriod": {
            "type": "integer"
          },
          "PlacementGroup": {},
          "VPCZoneIdentifier": {},
          "TerminationPolicies": {
            "shape": "St"
          },
          "NewInstancesProtectedFromScaleIn": {
            "type": "boolean"
          }
        }
      }
    }
  },
  "shapes": {
    "S2": {
      "type": "list",
      "member": {}
    },
    "S6": {
      "type": "list",
      "member": {}
    },
    "Sa": {
      "type": "list",
      "member": {}
    },
    "Sj": {
      "type": "structure",
      "members": {
        "LaunchTemplateId": {},
        "LaunchTemplateName": {},
        "Version": {}
      }
    },
    "Sp": {
      "type": "list",
      "member": {}
    },
    "St": {
      "type": "list",
      "member": {}
    },
    "S12": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Key"
        ],
        "members": {
          "ResourceId": {},
          "ResourceType": {},
          "Key": {},
          "Value": {},
          "PropagateAtLaunch": {
            "type": "boolean"
          }
        }
      }
    },
    "S19": {
      "type": "list",
      "member": {}
    },
    "S1a": {
      "type": "list",
      "member": {}
    },
    "S1c": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "DeviceName"
        ],
        "members": {
          "VirtualName": {},
          "DeviceName": {},
          "Ebs": {
            "type": "structure",
            "members": {
              "SnapshotId": {},
              "VolumeSize": {
                "type": "integer"
              },
              "VolumeType": {},
              "DeleteOnTermination": {
                "type": "boolean"
              },
              "Iops": {
                "type": "integer"
              },
              "Encrypted": {
                "type": "boolean"
              }
            }
          },
          "NoDevice": {
            "type": "boolean"
          }
        }
      }
    },
    "S1l": {
      "type": "structure",
      "members": {
        "Enabled": {
          "type": "boolean"
        }
      }
    },
    "S2a": {
      "type": "list",
      "member": {}
    },
    "S2n": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "ResourceId": {},
          "ResourceType": {},
          "Key": {},
          "Value": {},
          "PropagateAtLaunch": {
            "type": "boolean"
          }
        }
      }
    },
    "S2u": {
      "type": "list",
      "member": {}
    },
    "S3u": {
      "type": "integer",
      "deprecated": true
    },
    "S3x": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "ScalingAdjustment"
        ],
        "members": {
          "MetricIntervalLowerBound": {
            "type": "double"
          },
          "MetricIntervalUpperBound": {
            "type": "double"
          },
          "ScalingAdjustment": {
            "type": "integer"
          }
        }
      }
    },
    "S41": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "AlarmName": {},
          "AlarmARN": {}
        }
      }
    },
    "S43": {
      "type": "structure",
      "required": [
        "TargetValue"
      ],
      "members": {
        "PredefinedMetricSpecification": {
          "type": "structure",
          "required": [
            "PredefinedMetricType"
          ],
          "members": {
            "PredefinedMetricType": {},
            "ResourceLabel": {}
          }
        },
        "CustomizedMetricSpecification": {
          "type": "structure",
          "required": [
            "MetricName",
            "Namespace",
            "Statistic"
          ],
          "members": {
            "MetricName": {},
            "Namespace": {},
            "Dimensions": {
              "type": "list",
              "member": {
                "type": "structure",
                "required": [
                  "Name",
                  "Value"
                ],
                "members": {
                  "Name": {},
                  "Value": {}
                }
              }
            },
            "Statistic": {},
            "Unit": {}
          }
        },
        "TargetValue": {
          "type": "double"
        },
        "DisableScaleIn": {
          "type": "boolean"
        }
      }
    },
    "S4j": {
      "type": "list",
      "member": {
        "shape": "S4k"
      }
    },
    "S4k": {
      "type": "structure",
      "required": [
        "ActivityId",
        "AutoScalingGroupName",
        "Cause",
        "StartTime",
        "StatusCode"
      ],
      "members": {
        "ActivityId": {},
        "AutoScalingGroupName": {},
        "Description": {},
        "Cause": {},
        "StartTime": {
          "type": "timestamp"
        },
        "EndTime": {
          "type": "timestamp"
        },
        "StatusCode": {},
        "StatusMessage": {},
        "Progress": {
          "type": "integer"
        },
        "Details": {}
      }
    },
    "S59": {
      "type": "list",
      "member": {}
    },
    "S5p": {
      "type": "structure",
      "required": [
        "AutoScalingGroupName"
      ],
      "members": {
        "AutoScalingGroupName": {},
        "ScalingProcesses": {
          "type": "list",
          "member": {}
        }
      }
    }
  }
}
},{}],8:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeAutoScalingGroups": {
      "input_token": "NextToken",
      "limit_key": "MaxRecords",
      "output_token": "NextToken",
      "result_key": "AutoScalingGroups"
    },
    "DescribeAutoScalingInstances": {
      "input_token": "NextToken",
      "limit_key": "MaxRecords",
      "output_token": "NextToken",
      "result_key": "AutoScalingInstances"
    },
    "DescribeLaunchConfigurations": {
      "input_token": "NextToken",
      "limit_key": "MaxRecords",
      "output_token": "NextToken",
      "result_key": "LaunchConfigurations"
    },
    "DescribeNotificationConfigurations": {
      "input_token": "NextToken",
      "limit_key": "MaxRecords",
      "output_token": "NextToken",
      "result_key": "NotificationConfigurations"
    },
    "DescribePolicies": {
      "input_token": "NextToken",
      "limit_key": "MaxRecords",
      "output_token": "NextToken",
      "result_key": "ScalingPolicies"
    },
    "DescribeScalingActivities": {
      "input_token": "NextToken",
      "limit_key": "MaxRecords",
      "output_token": "NextToken",
      "result_key": "Activities"
    },
    "DescribeScheduledActions": {
      "input_token": "NextToken",
      "limit_key": "MaxRecords",
      "output_token": "NextToken",
      "result_key": "ScheduledUpdateGroupActions"
    },
    "DescribeTags": {
      "input_token": "NextToken",
      "limit_key": "MaxRecords",
      "output_token": "NextToken",
      "result_key": "Tags"
    }
  }
}
},{}],9:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2010-05-15",
    "endpointPrefix": "cloudformation",
    "protocol": "query",
    "serviceFullName": "AWS CloudFormation",
    "serviceId": "CloudFormation",
    "signatureVersion": "v4",
    "uid": "cloudformation-2010-05-15",
    "xmlNamespace": "http://cloudformation.amazonaws.com/doc/2010-05-15/"
  },
  "operations": {
    "CancelUpdateStack": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {},
          "ClientRequestToken": {}
        }
      }
    },
    "ContinueUpdateRollback": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {},
          "RoleARN": {},
          "ResourcesToSkip": {
            "type": "list",
            "member": {}
          },
          "ClientRequestToken": {}
        }
      },
      "output": {
        "resultWrapper": "ContinueUpdateRollbackResult",
        "type": "structure",
        "members": {}
      }
    },
    "CreateChangeSet": {
      "input": {
        "type": "structure",
        "required": [
          "StackName",
          "ChangeSetName"
        ],
        "members": {
          "StackName": {},
          "TemplateBody": {},
          "TemplateURL": {},
          "UsePreviousTemplate": {
            "type": "boolean"
          },
          "Parameters": {
            "shape": "Se"
          },
          "Capabilities": {
            "shape": "Sj"
          },
          "ResourceTypes": {
            "shape": "Sl"
          },
          "RoleARN": {},
          "RollbackConfiguration": {
            "shape": "Sn"
          },
          "NotificationARNs": {
            "shape": "St"
          },
          "Tags": {
            "shape": "Sv"
          },
          "ChangeSetName": {},
          "ClientToken": {},
          "Description": {},
          "ChangeSetType": {}
        }
      },
      "output": {
        "resultWrapper": "CreateChangeSetResult",
        "type": "structure",
        "members": {
          "Id": {},
          "StackId": {}
        }
      }
    },
    "CreateStack": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {},
          "TemplateBody": {},
          "TemplateURL": {},
          "Parameters": {
            "shape": "Se"
          },
          "DisableRollback": {
            "type": "boolean"
          },
          "RollbackConfiguration": {
            "shape": "Sn"
          },
          "TimeoutInMinutes": {
            "type": "integer"
          },
          "NotificationARNs": {
            "shape": "St"
          },
          "Capabilities": {
            "shape": "Sj"
          },
          "ResourceTypes": {
            "shape": "Sl"
          },
          "RoleARN": {},
          "OnFailure": {},
          "StackPolicyBody": {},
          "StackPolicyURL": {},
          "Tags": {
            "shape": "Sv"
          },
          "ClientRequestToken": {},
          "EnableTerminationProtection": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateStackResult",
        "type": "structure",
        "members": {
          "StackId": {}
        }
      }
    },
    "CreateStackInstances": {
      "input": {
        "type": "structure",
        "required": [
          "StackSetName",
          "Accounts",
          "Regions"
        ],
        "members": {
          "StackSetName": {},
          "Accounts": {
            "shape": "S1g"
          },
          "Regions": {
            "shape": "S1i"
          },
          "ParameterOverrides": {
            "shape": "Se"
          },
          "OperationPreferences": {
            "shape": "S1k"
          },
          "OperationId": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "resultWrapper": "CreateStackInstancesResult",
        "type": "structure",
        "members": {
          "OperationId": {}
        }
      }
    },
    "CreateStackSet": {
      "input": {
        "type": "structure",
        "required": [
          "StackSetName"
        ],
        "members": {
          "StackSetName": {},
          "Description": {},
          "TemplateBody": {},
          "TemplateURL": {},
          "Parameters": {
            "shape": "Se"
          },
          "Capabilities": {
            "shape": "Sj"
          },
          "Tags": {
            "shape": "Sv"
          },
          "ClientRequestToken": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "resultWrapper": "CreateStackSetResult",
        "type": "structure",
        "members": {
          "StackSetId": {}
        }
      }
    },
    "DeleteChangeSet": {
      "input": {
        "type": "structure",
        "required": [
          "ChangeSetName"
        ],
        "members": {
          "ChangeSetName": {},
          "StackName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteChangeSetResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteStack": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {},
          "RetainResources": {
            "type": "list",
            "member": {}
          },
          "RoleARN": {},
          "ClientRequestToken": {}
        }
      }
    },
    "DeleteStackInstances": {
      "input": {
        "type": "structure",
        "required": [
          "StackSetName",
          "Accounts",
          "Regions",
          "RetainStacks"
        ],
        "members": {
          "StackSetName": {},
          "Accounts": {
            "shape": "S1g"
          },
          "Regions": {
            "shape": "S1i"
          },
          "OperationPreferences": {
            "shape": "S1k"
          },
          "RetainStacks": {
            "type": "boolean"
          },
          "OperationId": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "resultWrapper": "DeleteStackInstancesResult",
        "type": "structure",
        "members": {
          "OperationId": {}
        }
      }
    },
    "DeleteStackSet": {
      "input": {
        "type": "structure",
        "required": [
          "StackSetName"
        ],
        "members": {
          "StackSetName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteStackSetResult",
        "type": "structure",
        "members": {}
      }
    },
    "DescribeAccountLimits": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeAccountLimitsResult",
        "type": "structure",
        "members": {
          "AccountLimits": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "Value": {
                  "type": "integer"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeChangeSet": {
      "input": {
        "type": "structure",
        "required": [
          "ChangeSetName"
        ],
        "members": {
          "ChangeSetName": {},
          "StackName": {},
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeChangeSetResult",
        "type": "structure",
        "members": {
          "ChangeSetName": {},
          "ChangeSetId": {},
          "StackId": {},
          "StackName": {},
          "Description": {},
          "Parameters": {
            "shape": "Se"
          },
          "CreationTime": {
            "type": "timestamp"
          },
          "ExecutionStatus": {},
          "Status": {},
          "StatusReason": {},
          "NotificationARNs": {
            "shape": "St"
          },
          "RollbackConfiguration": {
            "shape": "Sn"
          },
          "Capabilities": {
            "shape": "Sj"
          },
          "Tags": {
            "shape": "Sv"
          },
          "Changes": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Type": {},
                "ResourceChange": {
                  "type": "structure",
                  "members": {
                    "Action": {},
                    "LogicalResourceId": {},
                    "PhysicalResourceId": {},
                    "ResourceType": {},
                    "Replacement": {},
                    "Scope": {
                      "type": "list",
                      "member": {}
                    },
                    "Details": {
                      "type": "list",
                      "member": {
                        "type": "structure",
                        "members": {
                          "Target": {
                            "type": "structure",
                            "members": {
                              "Attribute": {},
                              "Name": {},
                              "RequiresRecreation": {}
                            }
                          },
                          "Evaluation": {},
                          "ChangeSource": {},
                          "CausingEntity": {}
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeStackEvents": {
      "input": {
        "type": "structure",
        "members": {
          "StackName": {},
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeStackEventsResult",
        "type": "structure",
        "members": {
          "StackEvents": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "StackId",
                "EventId",
                "StackName",
                "Timestamp"
              ],
              "members": {
                "StackId": {},
                "EventId": {},
                "StackName": {},
                "LogicalResourceId": {},
                "PhysicalResourceId": {},
                "ResourceType": {},
                "Timestamp": {
                  "type": "timestamp"
                },
                "ResourceStatus": {},
                "ResourceStatusReason": {},
                "ResourceProperties": {},
                "ClientRequestToken": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeStackInstance": {
      "input": {
        "type": "structure",
        "required": [
          "StackSetName",
          "StackInstanceAccount",
          "StackInstanceRegion"
        ],
        "members": {
          "StackSetName": {},
          "StackInstanceAccount": {},
          "StackInstanceRegion": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeStackInstanceResult",
        "type": "structure",
        "members": {
          "StackInstance": {
            "type": "structure",
            "members": {
              "StackSetId": {},
              "Region": {},
              "Account": {},
              "StackId": {},
              "ParameterOverrides": {
                "shape": "Se"
              },
              "Status": {},
              "StatusReason": {}
            }
          }
        }
      }
    },
    "DescribeStackResource": {
      "input": {
        "type": "structure",
        "required": [
          "StackName",
          "LogicalResourceId"
        ],
        "members": {
          "StackName": {},
          "LogicalResourceId": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeStackResourceResult",
        "type": "structure",
        "members": {
          "StackResourceDetail": {
            "type": "structure",
            "required": [
              "LogicalResourceId",
              "ResourceType",
              "LastUpdatedTimestamp",
              "ResourceStatus"
            ],
            "members": {
              "StackName": {},
              "StackId": {},
              "LogicalResourceId": {},
              "PhysicalResourceId": {},
              "ResourceType": {},
              "LastUpdatedTimestamp": {
                "type": "timestamp"
              },
              "ResourceStatus": {},
              "ResourceStatusReason": {},
              "Description": {},
              "Metadata": {}
            }
          }
        }
      }
    },
    "DescribeStackResources": {
      "input": {
        "type": "structure",
        "members": {
          "StackName": {},
          "LogicalResourceId": {},
          "PhysicalResourceId": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeStackResourcesResult",
        "type": "structure",
        "members": {
          "StackResources": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "LogicalResourceId",
                "ResourceType",
                "Timestamp",
                "ResourceStatus"
              ],
              "members": {
                "StackName": {},
                "StackId": {},
                "LogicalResourceId": {},
                "PhysicalResourceId": {},
                "ResourceType": {},
                "Timestamp": {
                  "type": "timestamp"
                },
                "ResourceStatus": {},
                "ResourceStatusReason": {},
                "Description": {}
              }
            }
          }
        }
      }
    },
    "DescribeStackSet": {
      "input": {
        "type": "structure",
        "required": [
          "StackSetName"
        ],
        "members": {
          "StackSetName": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeStackSetResult",
        "type": "structure",
        "members": {
          "StackSet": {
            "type": "structure",
            "members": {
              "StackSetName": {},
              "StackSetId": {},
              "Description": {},
              "Status": {},
              "TemplateBody": {},
              "Parameters": {
                "shape": "Se"
              },
              "Capabilities": {
                "shape": "Sj"
              },
              "Tags": {
                "shape": "Sv"
              }
            }
          }
        }
      }
    },
    "DescribeStackSetOperation": {
      "input": {
        "type": "structure",
        "required": [
          "StackSetName",
          "OperationId"
        ],
        "members": {
          "StackSetName": {},
          "OperationId": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeStackSetOperationResult",
        "type": "structure",
        "members": {
          "StackSetOperation": {
            "type": "structure",
            "members": {
              "OperationId": {},
              "StackSetId": {},
              "Action": {},
              "Status": {},
              "OperationPreferences": {
                "shape": "S1k"
              },
              "RetainStacks": {
                "type": "boolean"
              },
              "CreationTimestamp": {
                "type": "timestamp"
              },
              "EndTimestamp": {
                "type": "timestamp"
              }
            }
          }
        }
      }
    },
    "DescribeStacks": {
      "input": {
        "type": "structure",
        "members": {
          "StackName": {},
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeStacksResult",
        "type": "structure",
        "members": {
          "Stacks": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "StackName",
                "CreationTime",
                "StackStatus"
              ],
              "members": {
                "StackId": {},
                "StackName": {},
                "ChangeSetId": {},
                "Description": {},
                "Parameters": {
                  "shape": "Se"
                },
                "CreationTime": {
                  "type": "timestamp"
                },
                "DeletionTime": {
                  "type": "timestamp"
                },
                "LastUpdatedTime": {
                  "type": "timestamp"
                },
                "RollbackConfiguration": {
                  "shape": "Sn"
                },
                "StackStatus": {},
                "StackStatusReason": {},
                "DisableRollback": {
                  "type": "boolean"
                },
                "NotificationARNs": {
                  "shape": "St"
                },
                "TimeoutInMinutes": {
                  "type": "integer"
                },
                "Capabilities": {
                  "shape": "Sj"
                },
                "Outputs": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "OutputKey": {},
                      "OutputValue": {},
                      "Description": {},
                      "ExportName": {}
                    }
                  }
                },
                "RoleARN": {},
                "Tags": {
                  "shape": "Sv"
                },
                "EnableTerminationProtection": {
                  "type": "boolean"
                },
                "ParentId": {},
                "RootId": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "EstimateTemplateCost": {
      "input": {
        "type": "structure",
        "members": {
          "TemplateBody": {},
          "TemplateURL": {},
          "Parameters": {
            "shape": "Se"
          }
        }
      },
      "output": {
        "resultWrapper": "EstimateTemplateCostResult",
        "type": "structure",
        "members": {
          "Url": {}
        }
      }
    },
    "ExecuteChangeSet": {
      "input": {
        "type": "structure",
        "required": [
          "ChangeSetName"
        ],
        "members": {
          "ChangeSetName": {},
          "StackName": {},
          "ClientRequestToken": {}
        }
      },
      "output": {
        "resultWrapper": "ExecuteChangeSetResult",
        "type": "structure",
        "members": {}
      }
    },
    "GetStackPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {}
        }
      },
      "output": {
        "resultWrapper": "GetStackPolicyResult",
        "type": "structure",
        "members": {
          "StackPolicyBody": {}
        }
      }
    },
    "GetTemplate": {
      "input": {
        "type": "structure",
        "members": {
          "StackName": {},
          "ChangeSetName": {},
          "TemplateStage": {}
        }
      },
      "output": {
        "resultWrapper": "GetTemplateResult",
        "type": "structure",
        "members": {
          "TemplateBody": {},
          "StagesAvailable": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "GetTemplateSummary": {
      "input": {
        "type": "structure",
        "members": {
          "TemplateBody": {},
          "TemplateURL": {},
          "StackName": {},
          "StackSetName": {}
        }
      },
      "output": {
        "resultWrapper": "GetTemplateSummaryResult",
        "type": "structure",
        "members": {
          "Parameters": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ParameterKey": {},
                "DefaultValue": {},
                "ParameterType": {},
                "NoEcho": {
                  "type": "boolean"
                },
                "Description": {},
                "ParameterConstraints": {
                  "type": "structure",
                  "members": {
                    "AllowedValues": {
                      "type": "list",
                      "member": {}
                    }
                  }
                }
              }
            }
          },
          "Description": {},
          "Capabilities": {
            "shape": "Sj"
          },
          "CapabilitiesReason": {},
          "ResourceTypes": {
            "shape": "Sl"
          },
          "Version": {},
          "Metadata": {},
          "DeclaredTransforms": {
            "shape": "S4u"
          }
        }
      }
    },
    "ListChangeSets": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {},
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "ListChangeSetsResult",
        "type": "structure",
        "members": {
          "Summaries": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "StackId": {},
                "StackName": {},
                "ChangeSetId": {},
                "ChangeSetName": {},
                "ExecutionStatus": {},
                "Status": {},
                "StatusReason": {},
                "CreationTime": {
                  "type": "timestamp"
                },
                "Description": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListExports": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "ListExportsResult",
        "type": "structure",
        "members": {
          "Exports": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ExportingStackId": {},
                "Name": {},
                "Value": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListImports": {
      "input": {
        "type": "structure",
        "required": [
          "ExportName"
        ],
        "members": {
          "ExportName": {},
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "ListImportsResult",
        "type": "structure",
        "members": {
          "Imports": {
            "type": "list",
            "member": {}
          },
          "NextToken": {}
        }
      }
    },
    "ListStackInstances": {
      "input": {
        "type": "structure",
        "required": [
          "StackSetName"
        ],
        "members": {
          "StackSetName": {},
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          },
          "StackInstanceAccount": {},
          "StackInstanceRegion": {}
        }
      },
      "output": {
        "resultWrapper": "ListStackInstancesResult",
        "type": "structure",
        "members": {
          "Summaries": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "StackSetId": {},
                "Region": {},
                "Account": {},
                "StackId": {},
                "Status": {},
                "StatusReason": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListStackResources": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {},
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "ListStackResourcesResult",
        "type": "structure",
        "members": {
          "StackResourceSummaries": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "LogicalResourceId",
                "ResourceType",
                "LastUpdatedTimestamp",
                "ResourceStatus"
              ],
              "members": {
                "LogicalResourceId": {},
                "PhysicalResourceId": {},
                "ResourceType": {},
                "LastUpdatedTimestamp": {
                  "type": "timestamp"
                },
                "ResourceStatus": {},
                "ResourceStatusReason": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListStackSetOperationResults": {
      "input": {
        "type": "structure",
        "required": [
          "StackSetName",
          "OperationId"
        ],
        "members": {
          "StackSetName": {},
          "OperationId": {},
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "ListStackSetOperationResultsResult",
        "type": "structure",
        "members": {
          "Summaries": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Account": {},
                "Region": {},
                "Status": {},
                "StatusReason": {},
                "AccountGateResult": {
                  "type": "structure",
                  "members": {
                    "Status": {},
                    "StatusReason": {}
                  }
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListStackSetOperations": {
      "input": {
        "type": "structure",
        "required": [
          "StackSetName"
        ],
        "members": {
          "StackSetName": {},
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "ListStackSetOperationsResult",
        "type": "structure",
        "members": {
          "Summaries": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "OperationId": {},
                "Action": {},
                "Status": {},
                "CreationTimestamp": {
                  "type": "timestamp"
                },
                "EndTimestamp": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListStackSets": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          },
          "Status": {}
        }
      },
      "output": {
        "resultWrapper": "ListStackSetsResult",
        "type": "structure",
        "members": {
          "Summaries": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "StackSetName": {},
                "StackSetId": {},
                "Description": {},
                "Status": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListStacks": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "StackStatusFilter": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "resultWrapper": "ListStacksResult",
        "type": "structure",
        "members": {
          "StackSummaries": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "StackName",
                "CreationTime",
                "StackStatus"
              ],
              "members": {
                "StackId": {},
                "StackName": {},
                "TemplateDescription": {},
                "CreationTime": {
                  "type": "timestamp"
                },
                "LastUpdatedTime": {
                  "type": "timestamp"
                },
                "DeletionTime": {
                  "type": "timestamp"
                },
                "StackStatus": {},
                "StackStatusReason": {},
                "ParentId": {},
                "RootId": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "SetStackPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {},
          "StackPolicyBody": {},
          "StackPolicyURL": {}
        }
      }
    },
    "SignalResource": {
      "input": {
        "type": "structure",
        "required": [
          "StackName",
          "LogicalResourceId",
          "UniqueId",
          "Status"
        ],
        "members": {
          "StackName": {},
          "LogicalResourceId": {},
          "UniqueId": {},
          "Status": {}
        }
      }
    },
    "StopStackSetOperation": {
      "input": {
        "type": "structure",
        "required": [
          "StackSetName",
          "OperationId"
        ],
        "members": {
          "StackSetName": {},
          "OperationId": {}
        }
      },
      "output": {
        "resultWrapper": "StopStackSetOperationResult",
        "type": "structure",
        "members": {}
      }
    },
    "UpdateStack": {
      "input": {
        "type": "structure",
        "required": [
          "StackName"
        ],
        "members": {
          "StackName": {},
          "TemplateBody": {},
          "TemplateURL": {},
          "UsePreviousTemplate": {
            "type": "boolean"
          },
          "StackPolicyDuringUpdateBody": {},
          "StackPolicyDuringUpdateURL": {},
          "Parameters": {
            "shape": "Se"
          },
          "Capabilities": {
            "shape": "Sj"
          },
          "ResourceTypes": {
            "shape": "Sl"
          },
          "RoleARN": {},
          "RollbackConfiguration": {
            "shape": "Sn"
          },
          "StackPolicyBody": {},
          "StackPolicyURL": {},
          "NotificationARNs": {
            "shape": "St"
          },
          "Tags": {
            "shape": "Sv"
          },
          "ClientRequestToken": {}
        }
      },
      "output": {
        "resultWrapper": "UpdateStackResult",
        "type": "structure",
        "members": {
          "StackId": {}
        }
      }
    },
    "UpdateStackInstances": {
      "input": {
        "type": "structure",
        "required": [
          "StackSetName",
          "Accounts",
          "Regions"
        ],
        "members": {
          "StackSetName": {},
          "Accounts": {
            "shape": "S1g"
          },
          "Regions": {
            "shape": "S1i"
          },
          "ParameterOverrides": {
            "shape": "Se"
          },
          "OperationPreferences": {
            "shape": "S1k"
          },
          "OperationId": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "resultWrapper": "UpdateStackInstancesResult",
        "type": "structure",
        "members": {
          "OperationId": {}
        }
      }
    },
    "UpdateStackSet": {
      "input": {
        "type": "structure",
        "required": [
          "StackSetName"
        ],
        "members": {
          "StackSetName": {},
          "Description": {},
          "TemplateBody": {},
          "TemplateURL": {},
          "UsePreviousTemplate": {
            "type": "boolean"
          },
          "Parameters": {
            "shape": "Se"
          },
          "Capabilities": {
            "shape": "Sj"
          },
          "Tags": {
            "shape": "Sv"
          },
          "OperationPreferences": {
            "shape": "S1k"
          },
          "OperationId": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "resultWrapper": "UpdateStackSetResult",
        "type": "structure",
        "members": {
          "OperationId": {}
        }
      }
    },
    "UpdateTerminationProtection": {
      "input": {
        "type": "structure",
        "required": [
          "EnableTerminationProtection",
          "StackName"
        ],
        "members": {
          "EnableTerminationProtection": {
            "type": "boolean"
          },
          "StackName": {}
        }
      },
      "output": {
        "resultWrapper": "UpdateTerminationProtectionResult",
        "type": "structure",
        "members": {
          "StackId": {}
        }
      }
    },
    "ValidateTemplate": {
      "input": {
        "type": "structure",
        "members": {
          "TemplateBody": {},
          "TemplateURL": {}
        }
      },
      "output": {
        "resultWrapper": "ValidateTemplateResult",
        "type": "structure",
        "members": {
          "Parameters": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ParameterKey": {},
                "DefaultValue": {},
                "NoEcho": {
                  "type": "boolean"
                },
                "Description": {}
              }
            }
          },
          "Description": {},
          "Capabilities": {
            "shape": "Sj"
          },
          "CapabilitiesReason": {},
          "DeclaredTransforms": {
            "shape": "S4u"
          }
        }
      }
    }
  },
  "shapes": {
    "Se": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "ParameterKey": {},
          "ParameterValue": {},
          "UsePreviousValue": {
            "type": "boolean"
          },
          "ResolvedValue": {}
        }
      }
    },
    "Sj": {
      "type": "list",
      "member": {}
    },
    "Sl": {
      "type": "list",
      "member": {}
    },
    "Sn": {
      "type": "structure",
      "members": {
        "RollbackTriggers": {
          "type": "list",
          "member": {
            "type": "structure",
            "required": [
              "Arn",
              "Type"
            ],
            "members": {
              "Arn": {},
              "Type": {}
            }
          }
        },
        "MonitoringTimeInMinutes": {
          "type": "integer"
        }
      }
    },
    "St": {
      "type": "list",
      "member": {}
    },
    "Sv": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Key",
          "Value"
        ],
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "S1g": {
      "type": "list",
      "member": {}
    },
    "S1i": {
      "type": "list",
      "member": {}
    },
    "S1k": {
      "type": "structure",
      "members": {
        "RegionOrder": {
          "shape": "S1i"
        },
        "FailureToleranceCount": {
          "type": "integer"
        },
        "FailureTolerancePercentage": {
          "type": "integer"
        },
        "MaxConcurrentCount": {
          "type": "integer"
        },
        "MaxConcurrentPercentage": {
          "type": "integer"
        }
      }
    },
    "S4u": {
      "type": "list",
      "member": {}
    }
  }
}
},{}],10:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeStackEvents": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "result_key": "StackEvents"
    },
    "DescribeStackResources": {
      "result_key": "StackResources"
    },
    "DescribeStacks": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "result_key": "Stacks"
    },
    "ListExports": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "result_key": "Exports"
    },
    "ListImports": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "result_key": "Imports"
    },
    "ListStackResources": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "result_key": "StackResourceSummaries"
    },
    "ListStacks": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "result_key": "StackSummaries"
    }
  }
}
},{}],11:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "StackExists": {
      "delay": 5,
      "operation": "DescribeStacks",
      "maxAttempts": 20,
      "acceptors": [
        {
          "matcher": "status",
          "expected": 200,
          "state": "success"
        },
        {
          "matcher": "error",
          "expected": "ValidationError",
          "state": "retry"
        }
      ]
    },
    "StackCreateComplete": {
      "delay": 30,
      "operation": "DescribeStacks",
      "maxAttempts": 120,
      "description": "Wait until stack status is CREATE_COMPLETE.",
      "acceptors": [
        {
          "argument": "Stacks[].StackStatus",
          "expected": "CREATE_COMPLETE",
          "matcher": "pathAll",
          "state": "success"
        },
        {
          "argument": "Stacks[].StackStatus",
          "expected": "CREATE_FAILED",
          "matcher": "pathAny",
          "state": "failure"
        },
        {
          "argument": "Stacks[].StackStatus",
          "expected": "DELETE_COMPLETE",
          "matcher": "pathAny",
          "state": "failure"
        },
        {
          "argument": "Stacks[].StackStatus",
          "expected": "DELETE_FAILED",
          "matcher": "pathAny",
          "state": "failure"
        },
        {
          "argument": "Stacks[].StackStatus",
          "expected": "ROLLBACK_FAILED",
          "matcher": "pathAny",
          "state": "failure"
        },
        {
          "argument": "Stacks[].StackStatus",
          "expected": "ROLLBACK_COMPLETE",
          "matcher": "pathAny",
          "state": "failure"
        },
        {
          "expected": "ValidationError",
          "matcher": "error",
          "state": "failure"
        }
      ]
    },
    "StackDeleteComplete": {
      "delay": 30,
      "operation": "DescribeStacks",
      "maxAttempts": 120,
      "description": "Wait until stack status is DELETE_COMPLETE.",
      "acceptors": [
        {
          "argument": "Stacks[].StackStatus",
          "expected": "DELETE_COMPLETE",
          "matcher": "pathAll",
          "state": "success"
        },
        {
          "expected": "ValidationError",
          "matcher": "error",
          "state": "success"
        },
        {
          "argument": "Stacks[].StackStatus",
          "expected": "DELETE_FAILED",
          "matcher": "pathAny",
          "state": "failure"
        },
        {
          "argument": "Stacks[].StackStatus",
          "expected": "CREATE_FAILED",
          "matcher": "pathAny",
          "state": "failure"
        },
        {
          "argument": "Stacks[].StackStatus",
          "expected": "ROLLBACK_FAILED",
          "matcher": "pathAny",
          "state": "failure"
        },
        {
          "argument": "Stacks[].StackStatus",
          "expected": "UPDATE_ROLLBACK_FAILED",
          "matcher": "pathAny",
          "state": "failure"
        },
        {
          "argument": "Stacks[].StackStatus",
          "expected": "UPDATE_ROLLBACK_IN_PROGRESS",
          "matcher": "pathAny",
          "state": "failure"
        }
      ]
    },
    "StackUpdateComplete": {
      "delay": 30,
      "maxAttempts": 120,
      "operation": "DescribeStacks",
      "description": "Wait until stack status is UPDATE_COMPLETE.",
      "acceptors": [
        {
          "argument": "Stacks[].StackStatus",
          "expected": "UPDATE_COMPLETE",
          "matcher": "pathAll",
          "state": "success"
        },
        {
          "expected": "UPDATE_FAILED",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Stacks[].StackStatus"
        },
        {
          "argument": "Stacks[].StackStatus",
          "expected": "UPDATE_ROLLBACK_FAILED",
          "matcher": "pathAny",
          "state": "failure"
        },
        {
          "expected": "UPDATE_ROLLBACK_COMPLETE",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Stacks[].StackStatus"
        },
        {
          "expected": "ValidationError",
          "matcher": "error",
          "state": "failure"
        }
      ]
    },
    "ChangeSetCreateComplete": {
      "delay": 30,
      "operation": "DescribeChangeSet",
      "maxAttempts": 120,
      "description": "Wait until change set status is CREATE_COMPLETE.",
      "acceptors": [
        {
          "argument": "Status",
          "expected": "CREATE_COMPLETE",
          "matcher": "path",
          "state": "success"
        },
        {
          "argument": "Status",
          "expected": "FAILED",
          "matcher": "path",
          "state": "failure"
        },
        {
          "expected": "ValidationError",
          "matcher": "error",
          "state": "failure"
        }
      ]
    }
  }
}

},{}],12:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2016-11-25",
    "endpointPrefix": "cloudfront",
    "globalEndpoint": "cloudfront.amazonaws.com",
    "protocol": "rest-xml",
    "serviceAbbreviation": "CloudFront",
    "serviceFullName": "Amazon CloudFront",
    "signatureVersion": "v4",
    "uid": "cloudfront-2016-11-25"
  },
  "operations": {
    "CreateCloudFrontOriginAccessIdentity": {
      "http": {
        "requestUri": "/2016-11-25/origin-access-identity/cloudfront",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "CloudFrontOriginAccessIdentityConfig"
        ],
        "members": {
          "CloudFrontOriginAccessIdentityConfig": {
            "shape": "S2",
            "locationName": "CloudFrontOriginAccessIdentityConfig",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/"
            }
          }
        },
        "payload": "CloudFrontOriginAccessIdentityConfig"
      },
      "output": {
        "type": "structure",
        "members": {
          "CloudFrontOriginAccessIdentity": {
            "shape": "S5"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "CloudFrontOriginAccessIdentity"
      }
    },
    "CreateDistribution": {
      "http": {
        "requestUri": "/2016-11-25/distribution",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "DistributionConfig"
        ],
        "members": {
          "DistributionConfig": {
            "shape": "S7",
            "locationName": "DistributionConfig",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/"
            }
          }
        },
        "payload": "DistributionConfig"
      },
      "output": {
        "type": "structure",
        "members": {
          "Distribution": {
            "shape": "S1s"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "Distribution"
      }
    },
    "CreateDistributionWithTags": {
      "http": {
        "requestUri": "/2016-11-25/distribution?WithTags",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "DistributionConfigWithTags"
        ],
        "members": {
          "DistributionConfigWithTags": {
            "locationName": "DistributionConfigWithTags",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/"
            },
            "type": "structure",
            "required": [
              "DistributionConfig",
              "Tags"
            ],
            "members": {
              "DistributionConfig": {
                "shape": "S7"
              },
              "Tags": {
                "shape": "S21"
              }
            }
          }
        },
        "payload": "DistributionConfigWithTags"
      },
      "output": {
        "type": "structure",
        "members": {
          "Distribution": {
            "shape": "S1s"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "Distribution"
      }
    },
    "CreateInvalidation": {
      "http": {
        "requestUri": "/2016-11-25/distribution/{DistributionId}/invalidation",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "DistributionId",
          "InvalidationBatch"
        ],
        "members": {
          "DistributionId": {
            "location": "uri",
            "locationName": "DistributionId"
          },
          "InvalidationBatch": {
            "shape": "S28",
            "locationName": "InvalidationBatch",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/"
            }
          }
        },
        "payload": "InvalidationBatch"
      },
      "output": {
        "type": "structure",
        "members": {
          "Location": {
            "location": "header",
            "locationName": "Location"
          },
          "Invalidation": {
            "shape": "S2c"
          }
        },
        "payload": "Invalidation"
      }
    },
    "CreateStreamingDistribution": {
      "http": {
        "requestUri": "/2016-11-25/streaming-distribution",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "StreamingDistributionConfig"
        ],
        "members": {
          "StreamingDistributionConfig": {
            "shape": "S2e",
            "locationName": "StreamingDistributionConfig",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/"
            }
          }
        },
        "payload": "StreamingDistributionConfig"
      },
      "output": {
        "type": "structure",
        "members": {
          "StreamingDistribution": {
            "shape": "S2i"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "StreamingDistribution"
      }
    },
    "CreateStreamingDistributionWithTags": {
      "http": {
        "requestUri": "/2016-11-25/streaming-distribution?WithTags",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "StreamingDistributionConfigWithTags"
        ],
        "members": {
          "StreamingDistributionConfigWithTags": {
            "locationName": "StreamingDistributionConfigWithTags",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/"
            },
            "type": "structure",
            "required": [
              "StreamingDistributionConfig",
              "Tags"
            ],
            "members": {
              "StreamingDistributionConfig": {
                "shape": "S2e"
              },
              "Tags": {
                "shape": "S21"
              }
            }
          }
        },
        "payload": "StreamingDistributionConfigWithTags"
      },
      "output": {
        "type": "structure",
        "members": {
          "StreamingDistribution": {
            "shape": "S2i"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "StreamingDistribution"
      }
    },
    "DeleteCloudFrontOriginAccessIdentity": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2016-11-25/origin-access-identity/cloudfront/{Id}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "IfMatch": {
            "location": "header",
            "locationName": "If-Match"
          }
        }
      }
    },
    "DeleteDistribution": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2016-11-25/distribution/{Id}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "IfMatch": {
            "location": "header",
            "locationName": "If-Match"
          }
        }
      }
    },
    "DeleteStreamingDistribution": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2016-11-25/streaming-distribution/{Id}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "IfMatch": {
            "location": "header",
            "locationName": "If-Match"
          }
        }
      }
    },
    "GetCloudFrontOriginAccessIdentity": {
      "http": {
        "method": "GET",
        "requestUri": "/2016-11-25/origin-access-identity/cloudfront/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CloudFrontOriginAccessIdentity": {
            "shape": "S5"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "CloudFrontOriginAccessIdentity"
      }
    },
    "GetCloudFrontOriginAccessIdentityConfig": {
      "http": {
        "method": "GET",
        "requestUri": "/2016-11-25/origin-access-identity/cloudfront/{Id}/config"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CloudFrontOriginAccessIdentityConfig": {
            "shape": "S2"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "CloudFrontOriginAccessIdentityConfig"
      }
    },
    "GetDistribution": {
      "http": {
        "method": "GET",
        "requestUri": "/2016-11-25/distribution/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Distribution": {
            "shape": "S1s"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "Distribution"
      }
    },
    "GetDistributionConfig": {
      "http": {
        "method": "GET",
        "requestUri": "/2016-11-25/distribution/{Id}/config"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DistributionConfig": {
            "shape": "S7"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "DistributionConfig"
      }
    },
    "GetInvalidation": {
      "http": {
        "method": "GET",
        "requestUri": "/2016-11-25/distribution/{DistributionId}/invalidation/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "DistributionId",
          "Id"
        ],
        "members": {
          "DistributionId": {
            "location": "uri",
            "locationName": "DistributionId"
          },
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Invalidation": {
            "shape": "S2c"
          }
        },
        "payload": "Invalidation"
      }
    },
    "GetStreamingDistribution": {
      "http": {
        "method": "GET",
        "requestUri": "/2016-11-25/streaming-distribution/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StreamingDistribution": {
            "shape": "S2i"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "StreamingDistribution"
      }
    },
    "GetStreamingDistributionConfig": {
      "http": {
        "method": "GET",
        "requestUri": "/2016-11-25/streaming-distribution/{Id}/config"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StreamingDistributionConfig": {
            "shape": "S2e"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "StreamingDistributionConfig"
      }
    },
    "ListCloudFrontOriginAccessIdentities": {
      "http": {
        "method": "GET",
        "requestUri": "/2016-11-25/origin-access-identity/cloudfront"
      },
      "input": {
        "type": "structure",
        "members": {
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CloudFrontOriginAccessIdentityList": {
            "type": "structure",
            "required": [
              "Marker",
              "MaxItems",
              "IsTruncated",
              "Quantity"
            ],
            "members": {
              "Marker": {},
              "NextMarker": {},
              "MaxItems": {
                "type": "integer"
              },
              "IsTruncated": {
                "type": "boolean"
              },
              "Quantity": {
                "type": "integer"
              },
              "Items": {
                "type": "list",
                "member": {
                  "locationName": "CloudFrontOriginAccessIdentitySummary",
                  "type": "structure",
                  "required": [
                    "Id",
                    "S3CanonicalUserId",
                    "Comment"
                  ],
                  "members": {
                    "Id": {},
                    "S3CanonicalUserId": {},
                    "Comment": {}
                  }
                }
              }
            }
          }
        },
        "payload": "CloudFrontOriginAccessIdentityList"
      }
    },
    "ListDistributions": {
      "http": {
        "method": "GET",
        "requestUri": "/2016-11-25/distribution"
      },
      "input": {
        "type": "structure",
        "members": {
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DistributionList": {
            "shape": "S3a"
          }
        },
        "payload": "DistributionList"
      }
    },
    "ListDistributionsByWebACLId": {
      "http": {
        "method": "GET",
        "requestUri": "/2016-11-25/distributionsByWebACLId/{WebACLId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "WebACLId"
        ],
        "members": {
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems"
          },
          "WebACLId": {
            "location": "uri",
            "locationName": "WebACLId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DistributionList": {
            "shape": "S3a"
          }
        },
        "payload": "DistributionList"
      }
    },
    "ListInvalidations": {
      "http": {
        "method": "GET",
        "requestUri": "/2016-11-25/distribution/{DistributionId}/invalidation"
      },
      "input": {
        "type": "structure",
        "required": [
          "DistributionId"
        ],
        "members": {
          "DistributionId": {
            "location": "uri",
            "locationName": "DistributionId"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InvalidationList": {
            "type": "structure",
            "required": [
              "Marker",
              "MaxItems",
              "IsTruncated",
              "Quantity"
            ],
            "members": {
              "Marker": {},
              "NextMarker": {},
              "MaxItems": {
                "type": "integer"
              },
              "IsTruncated": {
                "type": "boolean"
              },
              "Quantity": {
                "type": "integer"
              },
              "Items": {
                "type": "list",
                "member": {
                  "locationName": "InvalidationSummary",
                  "type": "structure",
                  "required": [
                    "Id",
                    "CreateTime",
                    "Status"
                  ],
                  "members": {
                    "Id": {},
                    "CreateTime": {
                      "type": "timestamp"
                    },
                    "Status": {}
                  }
                }
              }
            }
          }
        },
        "payload": "InvalidationList"
      }
    },
    "ListStreamingDistributions": {
      "http": {
        "method": "GET",
        "requestUri": "/2016-11-25/streaming-distribution"
      },
      "input": {
        "type": "structure",
        "members": {
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StreamingDistributionList": {
            "type": "structure",
            "required": [
              "Marker",
              "MaxItems",
              "IsTruncated",
              "Quantity"
            ],
            "members": {
              "Marker": {},
              "NextMarker": {},
              "MaxItems": {
                "type": "integer"
              },
              "IsTruncated": {
                "type": "boolean"
              },
              "Quantity": {
                "type": "integer"
              },
              "Items": {
                "type": "list",
                "member": {
                  "locationName": "StreamingDistributionSummary",
                  "type": "structure",
                  "required": [
                    "Id",
                    "ARN",
                    "Status",
                    "LastModifiedTime",
                    "DomainName",
                    "S3Origin",
                    "Aliases",
                    "TrustedSigners",
                    "Comment",
                    "PriceClass",
                    "Enabled"
                  ],
                  "members": {
                    "Id": {},
                    "ARN": {},
                    "Status": {},
                    "LastModifiedTime": {
                      "type": "timestamp"
                    },
                    "DomainName": {},
                    "S3Origin": {
                      "shape": "S2f"
                    },
                    "Aliases": {
                      "shape": "S8"
                    },
                    "TrustedSigners": {
                      "shape": "Sy"
                    },
                    "Comment": {},
                    "PriceClass": {},
                    "Enabled": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          }
        },
        "payload": "StreamingDistributionList"
      }
    },
    "ListTagsForResource": {
      "http": {
        "method": "GET",
        "requestUri": "/2016-11-25/tagging"
      },
      "input": {
        "type": "structure",
        "required": [
          "Resource"
        ],
        "members": {
          "Resource": {
            "location": "querystring",
            "locationName": "Resource"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Tags"
        ],
        "members": {
          "Tags": {
            "shape": "S21"
          }
        },
        "payload": "Tags"
      }
    },
    "TagResource": {
      "http": {
        "requestUri": "/2016-11-25/tagging?Operation=Tag",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "Resource",
          "Tags"
        ],
        "members": {
          "Resource": {
            "location": "querystring",
            "locationName": "Resource"
          },
          "Tags": {
            "shape": "S21",
            "locationName": "Tags",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/"
            }
          }
        },
        "payload": "Tags"
      }
    },
    "UntagResource": {
      "http": {
        "requestUri": "/2016-11-25/tagging?Operation=Untag",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "Resource",
          "TagKeys"
        ],
        "members": {
          "Resource": {
            "location": "querystring",
            "locationName": "Resource"
          },
          "TagKeys": {
            "locationName": "TagKeys",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/"
            },
            "type": "structure",
            "members": {
              "Items": {
                "type": "list",
                "member": {
                  "locationName": "Key"
                }
              }
            }
          }
        },
        "payload": "TagKeys"
      }
    },
    "UpdateCloudFrontOriginAccessIdentity": {
      "http": {
        "method": "PUT",
        "requestUri": "/2016-11-25/origin-access-identity/cloudfront/{Id}/config"
      },
      "input": {
        "type": "structure",
        "required": [
          "CloudFrontOriginAccessIdentityConfig",
          "Id"
        ],
        "members": {
          "CloudFrontOriginAccessIdentityConfig": {
            "shape": "S2",
            "locationName": "CloudFrontOriginAccessIdentityConfig",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/"
            }
          },
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "IfMatch": {
            "location": "header",
            "locationName": "If-Match"
          }
        },
        "payload": "CloudFrontOriginAccessIdentityConfig"
      },
      "output": {
        "type": "structure",
        "members": {
          "CloudFrontOriginAccessIdentity": {
            "shape": "S5"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "CloudFrontOriginAccessIdentity"
      }
    },
    "UpdateDistribution": {
      "http": {
        "method": "PUT",
        "requestUri": "/2016-11-25/distribution/{Id}/config"
      },
      "input": {
        "type": "structure",
        "required": [
          "DistributionConfig",
          "Id"
        ],
        "members": {
          "DistributionConfig": {
            "shape": "S7",
            "locationName": "DistributionConfig",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/"
            }
          },
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "IfMatch": {
            "location": "header",
            "locationName": "If-Match"
          }
        },
        "payload": "DistributionConfig"
      },
      "output": {
        "type": "structure",
        "members": {
          "Distribution": {
            "shape": "S1s"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "Distribution"
      }
    },
    "UpdateStreamingDistribution": {
      "http": {
        "method": "PUT",
        "requestUri": "/2016-11-25/streaming-distribution/{Id}/config"
      },
      "input": {
        "type": "structure",
        "required": [
          "StreamingDistributionConfig",
          "Id"
        ],
        "members": {
          "StreamingDistributionConfig": {
            "shape": "S2e",
            "locationName": "StreamingDistributionConfig",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2016-11-25/"
            }
          },
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "IfMatch": {
            "location": "header",
            "locationName": "If-Match"
          }
        },
        "payload": "StreamingDistributionConfig"
      },
      "output": {
        "type": "structure",
        "members": {
          "StreamingDistribution": {
            "shape": "S2i"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "StreamingDistribution"
      }
    }
  },
  "shapes": {
    "S2": {
      "type": "structure",
      "required": [
        "CallerReference",
        "Comment"
      ],
      "members": {
        "CallerReference": {},
        "Comment": {}
      }
    },
    "S5": {
      "type": "structure",
      "required": [
        "Id",
        "S3CanonicalUserId"
      ],
      "members": {
        "Id": {},
        "S3CanonicalUserId": {},
        "CloudFrontOriginAccessIdentityConfig": {
          "shape": "S2"
        }
      }
    },
    "S7": {
      "type": "structure",
      "required": [
        "CallerReference",
        "Origins",
        "DefaultCacheBehavior",
        "Comment",
        "Enabled"
      ],
      "members": {
        "CallerReference": {},
        "Aliases": {
          "shape": "S8"
        },
        "DefaultRootObject": {},
        "Origins": {
          "shape": "Sb"
        },
        "DefaultCacheBehavior": {
          "shape": "Sn"
        },
        "CacheBehaviors": {
          "shape": "S1a"
        },
        "CustomErrorResponses": {
          "shape": "S1d"
        },
        "Comment": {},
        "Logging": {
          "type": "structure",
          "required": [
            "Enabled",
            "IncludeCookies",
            "Bucket",
            "Prefix"
          ],
          "members": {
            "Enabled": {
              "type": "boolean"
            },
            "IncludeCookies": {
              "type": "boolean"
            },
            "Bucket": {},
            "Prefix": {}
          }
        },
        "PriceClass": {},
        "Enabled": {
          "type": "boolean"
        },
        "ViewerCertificate": {
          "shape": "S1i"
        },
        "Restrictions": {
          "shape": "S1m"
        },
        "WebACLId": {},
        "HttpVersion": {},
        "IsIPV6Enabled": {
          "type": "boolean"
        }
      }
    },
    "S8": {
      "type": "structure",
      "required": [
        "Quantity"
      ],
      "members": {
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "type": "list",
          "member": {
            "locationName": "CNAME"
          }
        }
      }
    },
    "Sb": {
      "type": "structure",
      "required": [
        "Quantity"
      ],
      "members": {
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "type": "list",
          "member": {
            "locationName": "Origin",
            "type": "structure",
            "required": [
              "Id",
              "DomainName"
            ],
            "members": {
              "Id": {},
              "DomainName": {},
              "OriginPath": {},
              "CustomHeaders": {
                "type": "structure",
                "required": [
                  "Quantity"
                ],
                "members": {
                  "Quantity": {
                    "type": "integer"
                  },
                  "Items": {
                    "type": "list",
                    "member": {
                      "locationName": "OriginCustomHeader",
                      "type": "structure",
                      "required": [
                        "HeaderName",
                        "HeaderValue"
                      ],
                      "members": {
                        "HeaderName": {},
                        "HeaderValue": {}
                      }
                    }
                  }
                }
              },
              "S3OriginConfig": {
                "type": "structure",
                "required": [
                  "OriginAccessIdentity"
                ],
                "members": {
                  "OriginAccessIdentity": {}
                }
              },
              "CustomOriginConfig": {
                "type": "structure",
                "required": [
                  "HTTPPort",
                  "HTTPSPort",
                  "OriginProtocolPolicy"
                ],
                "members": {
                  "HTTPPort": {
                    "type": "integer"
                  },
                  "HTTPSPort": {
                    "type": "integer"
                  },
                  "OriginProtocolPolicy": {},
                  "OriginSslProtocols": {
                    "type": "structure",
                    "required": [
                      "Quantity",
                      "Items"
                    ],
                    "members": {
                      "Quantity": {
                        "type": "integer"
                      },
                      "Items": {
                        "type": "list",
                        "member": {
                          "locationName": "SslProtocol"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "Sn": {
      "type": "structure",
      "required": [
        "TargetOriginId",
        "ForwardedValues",
        "TrustedSigners",
        "ViewerProtocolPolicy",
        "MinTTL"
      ],
      "members": {
        "TargetOriginId": {},
        "ForwardedValues": {
          "shape": "So"
        },
        "TrustedSigners": {
          "shape": "Sy"
        },
        "ViewerProtocolPolicy": {},
        "MinTTL": {
          "type": "long"
        },
        "AllowedMethods": {
          "shape": "S12"
        },
        "SmoothStreaming": {
          "type": "boolean"
        },
        "DefaultTTL": {
          "type": "long"
        },
        "MaxTTL": {
          "type": "long"
        },
        "Compress": {
          "type": "boolean"
        },
        "LambdaFunctionAssociations": {
          "shape": "S16"
        }
      }
    },
    "So": {
      "type": "structure",
      "required": [
        "QueryString",
        "Cookies"
      ],
      "members": {
        "QueryString": {
          "type": "boolean"
        },
        "Cookies": {
          "type": "structure",
          "required": [
            "Forward"
          ],
          "members": {
            "Forward": {},
            "WhitelistedNames": {
              "type": "structure",
              "required": [
                "Quantity"
              ],
              "members": {
                "Quantity": {
                  "type": "integer"
                },
                "Items": {
                  "type": "list",
                  "member": {
                    "locationName": "Name"
                  }
                }
              }
            }
          }
        },
        "Headers": {
          "type": "structure",
          "required": [
            "Quantity"
          ],
          "members": {
            "Quantity": {
              "type": "integer"
            },
            "Items": {
              "type": "list",
              "member": {
                "locationName": "Name"
              }
            }
          }
        },
        "QueryStringCacheKeys": {
          "type": "structure",
          "required": [
            "Quantity"
          ],
          "members": {
            "Quantity": {
              "type": "integer"
            },
            "Items": {
              "type": "list",
              "member": {
                "locationName": "Name"
              }
            }
          }
        }
      }
    },
    "Sy": {
      "type": "structure",
      "required": [
        "Enabled",
        "Quantity"
      ],
      "members": {
        "Enabled": {
          "type": "boolean"
        },
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "type": "list",
          "member": {
            "locationName": "AwsAccountNumber"
          }
        }
      }
    },
    "S12": {
      "type": "structure",
      "required": [
        "Quantity",
        "Items"
      ],
      "members": {
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "shape": "S13"
        },
        "CachedMethods": {
          "type": "structure",
          "required": [
            "Quantity",
            "Items"
          ],
          "members": {
            "Quantity": {
              "type": "integer"
            },
            "Items": {
              "shape": "S13"
            }
          }
        }
      }
    },
    "S13": {
      "type": "list",
      "member": {
        "locationName": "Method"
      }
    },
    "S16": {
      "type": "structure",
      "required": [
        "Quantity"
      ],
      "members": {
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "type": "list",
          "member": {
            "locationName": "LambdaFunctionAssociation",
            "type": "structure",
            "members": {
              "LambdaFunctionARN": {},
              "EventType": {}
            }
          }
        }
      }
    },
    "S1a": {
      "type": "structure",
      "required": [
        "Quantity"
      ],
      "members": {
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "type": "list",
          "member": {
            "locationName": "CacheBehavior",
            "type": "structure",
            "required": [
              "PathPattern",
              "TargetOriginId",
              "ForwardedValues",
              "TrustedSigners",
              "ViewerProtocolPolicy",
              "MinTTL"
            ],
            "members": {
              "PathPattern": {},
              "TargetOriginId": {},
              "ForwardedValues": {
                "shape": "So"
              },
              "TrustedSigners": {
                "shape": "Sy"
              },
              "ViewerProtocolPolicy": {},
              "MinTTL": {
                "type": "long"
              },
              "AllowedMethods": {
                "shape": "S12"
              },
              "SmoothStreaming": {
                "type": "boolean"
              },
              "DefaultTTL": {
                "type": "long"
              },
              "MaxTTL": {
                "type": "long"
              },
              "Compress": {
                "type": "boolean"
              },
              "LambdaFunctionAssociations": {
                "shape": "S16"
              }
            }
          }
        }
      }
    },
    "S1d": {
      "type": "structure",
      "required": [
        "Quantity"
      ],
      "members": {
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "type": "list",
          "member": {
            "locationName": "CustomErrorResponse",
            "type": "structure",
            "required": [
              "ErrorCode"
            ],
            "members": {
              "ErrorCode": {
                "type": "integer"
              },
              "ResponsePagePath": {},
              "ResponseCode": {},
              "ErrorCachingMinTTL": {
                "type": "long"
              }
            }
          }
        }
      }
    },
    "S1i": {
      "type": "structure",
      "members": {
        "CloudFrontDefaultCertificate": {
          "type": "boolean"
        },
        "IAMCertificateId": {},
        "ACMCertificateArn": {},
        "SSLSupportMethod": {},
        "MinimumProtocolVersion": {},
        "Certificate": {
          "deprecated": true
        },
        "CertificateSource": {
          "deprecated": true
        }
      }
    },
    "S1m": {
      "type": "structure",
      "required": [
        "GeoRestriction"
      ],
      "members": {
        "GeoRestriction": {
          "type": "structure",
          "required": [
            "RestrictionType",
            "Quantity"
          ],
          "members": {
            "RestrictionType": {},
            "Quantity": {
              "type": "integer"
            },
            "Items": {
              "type": "list",
              "member": {
                "locationName": "Location"
              }
            }
          }
        }
      }
    },
    "S1s": {
      "type": "structure",
      "required": [
        "Id",
        "ARN",
        "Status",
        "LastModifiedTime",
        "InProgressInvalidationBatches",
        "DomainName",
        "ActiveTrustedSigners",
        "DistributionConfig"
      ],
      "members": {
        "Id": {},
        "ARN": {},
        "Status": {},
        "LastModifiedTime": {
          "type": "timestamp"
        },
        "InProgressInvalidationBatches": {
          "type": "integer"
        },
        "DomainName": {},
        "ActiveTrustedSigners": {
          "shape": "S1u"
        },
        "DistributionConfig": {
          "shape": "S7"
        }
      }
    },
    "S1u": {
      "type": "structure",
      "required": [
        "Enabled",
        "Quantity"
      ],
      "members": {
        "Enabled": {
          "type": "boolean"
        },
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "type": "list",
          "member": {
            "locationName": "Signer",
            "type": "structure",
            "members": {
              "AwsAccountNumber": {},
              "KeyPairIds": {
                "type": "structure",
                "required": [
                  "Quantity"
                ],
                "members": {
                  "Quantity": {
                    "type": "integer"
                  },
                  "Items": {
                    "type": "list",
                    "member": {
                      "locationName": "KeyPairId"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "S21": {
      "type": "structure",
      "members": {
        "Items": {
          "type": "list",
          "member": {
            "locationName": "Tag",
            "type": "structure",
            "required": [
              "Key"
            ],
            "members": {
              "Key": {},
              "Value": {}
            }
          }
        }
      }
    },
    "S28": {
      "type": "structure",
      "required": [
        "Paths",
        "CallerReference"
      ],
      "members": {
        "Paths": {
          "type": "structure",
          "required": [
            "Quantity"
          ],
          "members": {
            "Quantity": {
              "type": "integer"
            },
            "Items": {
              "type": "list",
              "member": {
                "locationName": "Path"
              }
            }
          }
        },
        "CallerReference": {}
      }
    },
    "S2c": {
      "type": "structure",
      "required": [
        "Id",
        "Status",
        "CreateTime",
        "InvalidationBatch"
      ],
      "members": {
        "Id": {},
        "Status": {},
        "CreateTime": {
          "type": "timestamp"
        },
        "InvalidationBatch": {
          "shape": "S28"
        }
      }
    },
    "S2e": {
      "type": "structure",
      "required": [
        "CallerReference",
        "S3Origin",
        "Comment",
        "TrustedSigners",
        "Enabled"
      ],
      "members": {
        "CallerReference": {},
        "S3Origin": {
          "shape": "S2f"
        },
        "Aliases": {
          "shape": "S8"
        },
        "Comment": {},
        "Logging": {
          "type": "structure",
          "required": [
            "Enabled",
            "Bucket",
            "Prefix"
          ],
          "members": {
            "Enabled": {
              "type": "boolean"
            },
            "Bucket": {},
            "Prefix": {}
          }
        },
        "TrustedSigners": {
          "shape": "Sy"
        },
        "PriceClass": {},
        "Enabled": {
          "type": "boolean"
        }
      }
    },
    "S2f": {
      "type": "structure",
      "required": [
        "DomainName",
        "OriginAccessIdentity"
      ],
      "members": {
        "DomainName": {},
        "OriginAccessIdentity": {}
      }
    },
    "S2i": {
      "type": "structure",
      "required": [
        "Id",
        "ARN",
        "Status",
        "DomainName",
        "ActiveTrustedSigners",
        "StreamingDistributionConfig"
      ],
      "members": {
        "Id": {},
        "ARN": {},
        "Status": {},
        "LastModifiedTime": {
          "type": "timestamp"
        },
        "DomainName": {},
        "ActiveTrustedSigners": {
          "shape": "S1u"
        },
        "StreamingDistributionConfig": {
          "shape": "S2e"
        }
      }
    },
    "S3a": {
      "type": "structure",
      "required": [
        "Marker",
        "MaxItems",
        "IsTruncated",
        "Quantity"
      ],
      "members": {
        "Marker": {},
        "NextMarker": {},
        "MaxItems": {
          "type": "integer"
        },
        "IsTruncated": {
          "type": "boolean"
        },
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "type": "list",
          "member": {
            "locationName": "DistributionSummary",
            "type": "structure",
            "required": [
              "Id",
              "ARN",
              "Status",
              "LastModifiedTime",
              "DomainName",
              "Aliases",
              "Origins",
              "DefaultCacheBehavior",
              "CacheBehaviors",
              "CustomErrorResponses",
              "Comment",
              "PriceClass",
              "Enabled",
              "ViewerCertificate",
              "Restrictions",
              "WebACLId",
              "HttpVersion",
              "IsIPV6Enabled"
            ],
            "members": {
              "Id": {},
              "ARN": {},
              "Status": {},
              "LastModifiedTime": {
                "type": "timestamp"
              },
              "DomainName": {},
              "Aliases": {
                "shape": "S8"
              },
              "Origins": {
                "shape": "Sb"
              },
              "DefaultCacheBehavior": {
                "shape": "Sn"
              },
              "CacheBehaviors": {
                "shape": "S1a"
              },
              "CustomErrorResponses": {
                "shape": "S1d"
              },
              "Comment": {},
              "PriceClass": {},
              "Enabled": {
                "type": "boolean"
              },
              "ViewerCertificate": {
                "shape": "S1i"
              },
              "Restrictions": {
                "shape": "S1m"
              },
              "WebACLId": {},
              "HttpVersion": {},
              "IsIPV6Enabled": {
                "type": "boolean"
              }
            }
          }
        }
      }
    }
  }
}
},{}],13:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListCloudFrontOriginAccessIdentities": {
      "input_token": "Marker",
      "output_token": "CloudFrontOriginAccessIdentityList.NextMarker",
      "limit_key": "MaxItems",
      "more_results": "CloudFrontOriginAccessIdentityList.IsTruncated",
      "result_key": "CloudFrontOriginAccessIdentityList.Items"
    },
    "ListDistributions": {
      "input_token": "Marker",
      "output_token": "DistributionList.NextMarker",
      "limit_key": "MaxItems",
      "more_results": "DistributionList.IsTruncated",
      "result_key": "DistributionList.Items"
    },
    "ListInvalidations": {
      "input_token": "Marker",
      "output_token": "InvalidationList.NextMarker",
      "limit_key": "MaxItems",
      "more_results": "InvalidationList.IsTruncated",
      "result_key": "InvalidationList.Items"
    },
    "ListStreamingDistributions": {
      "input_token": "Marker",
      "output_token": "StreamingDistributionList.NextMarker",
      "limit_key": "MaxItems",
      "more_results": "StreamingDistributionList.IsTruncated",
      "result_key": "StreamingDistributionList.Items"
    }
  }
}

},{}],14:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "DistributionDeployed": {
      "delay": 60,
      "operation": "GetDistribution",
      "maxAttempts": 25,
      "description": "Wait until a distribution is deployed.",
      "acceptors": [
        {
          "expected": "Deployed",
          "matcher": "path",
          "state": "success",
          "argument": "Distribution.Status"
        }
      ]
    },
    "InvalidationCompleted": {
      "delay": 20,
      "operation": "GetInvalidation",
      "maxAttempts": 30,
      "description": "Wait until an invalidation has completed.",
      "acceptors": [
        {
          "expected": "Completed",
          "matcher": "path",
          "state": "success",
          "argument": "Invalidation.Status"
        }
      ]
    },
    "StreamingDistributionDeployed": {
      "delay": 60,
      "operation": "GetStreamingDistribution",
      "maxAttempts": 25,
      "description": "Wait until a streaming distribution is deployed.",
      "acceptors": [
        {
          "expected": "Deployed",
          "matcher": "path",
          "state": "success",
          "argument": "StreamingDistribution.Status"
        }
      ]
    }
  }
}

},{}],15:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2017-03-25",
    "endpointPrefix": "cloudfront",
    "globalEndpoint": "cloudfront.amazonaws.com",
    "protocol": "rest-xml",
    "serviceAbbreviation": "CloudFront",
    "serviceFullName": "Amazon CloudFront",
    "signatureVersion": "v4",
    "uid": "cloudfront-2017-03-25"
  },
  "operations": {
    "CreateCloudFrontOriginAccessIdentity": {
      "http": {
        "requestUri": "/2017-03-25/origin-access-identity/cloudfront",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "CloudFrontOriginAccessIdentityConfig"
        ],
        "members": {
          "CloudFrontOriginAccessIdentityConfig": {
            "shape": "S2",
            "locationName": "CloudFrontOriginAccessIdentityConfig",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/"
            }
          }
        },
        "payload": "CloudFrontOriginAccessIdentityConfig"
      },
      "output": {
        "type": "structure",
        "members": {
          "CloudFrontOriginAccessIdentity": {
            "shape": "S5"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "CloudFrontOriginAccessIdentity"
      }
    },
    "CreateDistribution": {
      "http": {
        "requestUri": "/2017-03-25/distribution",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "DistributionConfig"
        ],
        "members": {
          "DistributionConfig": {
            "shape": "S7",
            "locationName": "DistributionConfig",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/"
            }
          }
        },
        "payload": "DistributionConfig"
      },
      "output": {
        "type": "structure",
        "members": {
          "Distribution": {
            "shape": "S1s"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "Distribution"
      }
    },
    "CreateDistributionWithTags": {
      "http": {
        "requestUri": "/2017-03-25/distribution?WithTags",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "DistributionConfigWithTags"
        ],
        "members": {
          "DistributionConfigWithTags": {
            "locationName": "DistributionConfigWithTags",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/"
            },
            "type": "structure",
            "required": [
              "DistributionConfig",
              "Tags"
            ],
            "members": {
              "DistributionConfig": {
                "shape": "S7"
              },
              "Tags": {
                "shape": "S21"
              }
            }
          }
        },
        "payload": "DistributionConfigWithTags"
      },
      "output": {
        "type": "structure",
        "members": {
          "Distribution": {
            "shape": "S1s"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "Distribution"
      }
    },
    "CreateInvalidation": {
      "http": {
        "requestUri": "/2017-03-25/distribution/{DistributionId}/invalidation",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "DistributionId",
          "InvalidationBatch"
        ],
        "members": {
          "DistributionId": {
            "location": "uri",
            "locationName": "DistributionId"
          },
          "InvalidationBatch": {
            "shape": "S28",
            "locationName": "InvalidationBatch",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/"
            }
          }
        },
        "payload": "InvalidationBatch"
      },
      "output": {
        "type": "structure",
        "members": {
          "Location": {
            "location": "header",
            "locationName": "Location"
          },
          "Invalidation": {
            "shape": "S2c"
          }
        },
        "payload": "Invalidation"
      }
    },
    "CreateStreamingDistribution": {
      "http": {
        "requestUri": "/2017-03-25/streaming-distribution",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "StreamingDistributionConfig"
        ],
        "members": {
          "StreamingDistributionConfig": {
            "shape": "S2e",
            "locationName": "StreamingDistributionConfig",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/"
            }
          }
        },
        "payload": "StreamingDistributionConfig"
      },
      "output": {
        "type": "structure",
        "members": {
          "StreamingDistribution": {
            "shape": "S2i"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "StreamingDistribution"
      }
    },
    "CreateStreamingDistributionWithTags": {
      "http": {
        "requestUri": "/2017-03-25/streaming-distribution?WithTags",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "StreamingDistributionConfigWithTags"
        ],
        "members": {
          "StreamingDistributionConfigWithTags": {
            "locationName": "StreamingDistributionConfigWithTags",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/"
            },
            "type": "structure",
            "required": [
              "StreamingDistributionConfig",
              "Tags"
            ],
            "members": {
              "StreamingDistributionConfig": {
                "shape": "S2e"
              },
              "Tags": {
                "shape": "S21"
              }
            }
          }
        },
        "payload": "StreamingDistributionConfigWithTags"
      },
      "output": {
        "type": "structure",
        "members": {
          "StreamingDistribution": {
            "shape": "S2i"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "StreamingDistribution"
      }
    },
    "DeleteCloudFrontOriginAccessIdentity": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2017-03-25/origin-access-identity/cloudfront/{Id}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "IfMatch": {
            "location": "header",
            "locationName": "If-Match"
          }
        }
      }
    },
    "DeleteDistribution": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2017-03-25/distribution/{Id}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "IfMatch": {
            "location": "header",
            "locationName": "If-Match"
          }
        }
      }
    },
    "DeleteServiceLinkedRole": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2017-03-25/service-linked-role/{RoleName}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "RoleName"
        ],
        "members": {
          "RoleName": {
            "location": "uri",
            "locationName": "RoleName"
          }
        }
      }
    },
    "DeleteStreamingDistribution": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2017-03-25/streaming-distribution/{Id}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "IfMatch": {
            "location": "header",
            "locationName": "If-Match"
          }
        }
      }
    },
    "GetCloudFrontOriginAccessIdentity": {
      "http": {
        "method": "GET",
        "requestUri": "/2017-03-25/origin-access-identity/cloudfront/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CloudFrontOriginAccessIdentity": {
            "shape": "S5"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "CloudFrontOriginAccessIdentity"
      }
    },
    "GetCloudFrontOriginAccessIdentityConfig": {
      "http": {
        "method": "GET",
        "requestUri": "/2017-03-25/origin-access-identity/cloudfront/{Id}/config"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CloudFrontOriginAccessIdentityConfig": {
            "shape": "S2"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "CloudFrontOriginAccessIdentityConfig"
      }
    },
    "GetDistribution": {
      "http": {
        "method": "GET",
        "requestUri": "/2017-03-25/distribution/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Distribution": {
            "shape": "S1s"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "Distribution"
      }
    },
    "GetDistributionConfig": {
      "http": {
        "method": "GET",
        "requestUri": "/2017-03-25/distribution/{Id}/config"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DistributionConfig": {
            "shape": "S7"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "DistributionConfig"
      }
    },
    "GetInvalidation": {
      "http": {
        "method": "GET",
        "requestUri": "/2017-03-25/distribution/{DistributionId}/invalidation/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "DistributionId",
          "Id"
        ],
        "members": {
          "DistributionId": {
            "location": "uri",
            "locationName": "DistributionId"
          },
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Invalidation": {
            "shape": "S2c"
          }
        },
        "payload": "Invalidation"
      }
    },
    "GetStreamingDistribution": {
      "http": {
        "method": "GET",
        "requestUri": "/2017-03-25/streaming-distribution/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StreamingDistribution": {
            "shape": "S2i"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "StreamingDistribution"
      }
    },
    "GetStreamingDistributionConfig": {
      "http": {
        "method": "GET",
        "requestUri": "/2017-03-25/streaming-distribution/{Id}/config"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StreamingDistributionConfig": {
            "shape": "S2e"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "StreamingDistributionConfig"
      }
    },
    "ListCloudFrontOriginAccessIdentities": {
      "http": {
        "method": "GET",
        "requestUri": "/2017-03-25/origin-access-identity/cloudfront"
      },
      "input": {
        "type": "structure",
        "members": {
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CloudFrontOriginAccessIdentityList": {
            "type": "structure",
            "required": [
              "Marker",
              "MaxItems",
              "IsTruncated",
              "Quantity"
            ],
            "members": {
              "Marker": {},
              "NextMarker": {},
              "MaxItems": {
                "type": "integer"
              },
              "IsTruncated": {
                "type": "boolean"
              },
              "Quantity": {
                "type": "integer"
              },
              "Items": {
                "type": "list",
                "member": {
                  "locationName": "CloudFrontOriginAccessIdentitySummary",
                  "type": "structure",
                  "required": [
                    "Id",
                    "S3CanonicalUserId",
                    "Comment"
                  ],
                  "members": {
                    "Id": {},
                    "S3CanonicalUserId": {},
                    "Comment": {}
                  }
                }
              }
            }
          }
        },
        "payload": "CloudFrontOriginAccessIdentityList"
      }
    },
    "ListDistributions": {
      "http": {
        "method": "GET",
        "requestUri": "/2017-03-25/distribution"
      },
      "input": {
        "type": "structure",
        "members": {
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DistributionList": {
            "shape": "S3b"
          }
        },
        "payload": "DistributionList"
      }
    },
    "ListDistributionsByWebACLId": {
      "http": {
        "method": "GET",
        "requestUri": "/2017-03-25/distributionsByWebACLId/{WebACLId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "WebACLId"
        ],
        "members": {
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems"
          },
          "WebACLId": {
            "location": "uri",
            "locationName": "WebACLId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DistributionList": {
            "shape": "S3b"
          }
        },
        "payload": "DistributionList"
      }
    },
    "ListInvalidations": {
      "http": {
        "method": "GET",
        "requestUri": "/2017-03-25/distribution/{DistributionId}/invalidation"
      },
      "input": {
        "type": "structure",
        "required": [
          "DistributionId"
        ],
        "members": {
          "DistributionId": {
            "location": "uri",
            "locationName": "DistributionId"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InvalidationList": {
            "type": "structure",
            "required": [
              "Marker",
              "MaxItems",
              "IsTruncated",
              "Quantity"
            ],
            "members": {
              "Marker": {},
              "NextMarker": {},
              "MaxItems": {
                "type": "integer"
              },
              "IsTruncated": {
                "type": "boolean"
              },
              "Quantity": {
                "type": "integer"
              },
              "Items": {
                "type": "list",
                "member": {
                  "locationName": "InvalidationSummary",
                  "type": "structure",
                  "required": [
                    "Id",
                    "CreateTime",
                    "Status"
                  ],
                  "members": {
                    "Id": {},
                    "CreateTime": {
                      "type": "timestamp"
                    },
                    "Status": {}
                  }
                }
              }
            }
          }
        },
        "payload": "InvalidationList"
      }
    },
    "ListStreamingDistributions": {
      "http": {
        "method": "GET",
        "requestUri": "/2017-03-25/streaming-distribution"
      },
      "input": {
        "type": "structure",
        "members": {
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StreamingDistributionList": {
            "type": "structure",
            "required": [
              "Marker",
              "MaxItems",
              "IsTruncated",
              "Quantity"
            ],
            "members": {
              "Marker": {},
              "NextMarker": {},
              "MaxItems": {
                "type": "integer"
              },
              "IsTruncated": {
                "type": "boolean"
              },
              "Quantity": {
                "type": "integer"
              },
              "Items": {
                "type": "list",
                "member": {
                  "locationName": "StreamingDistributionSummary",
                  "type": "structure",
                  "required": [
                    "Id",
                    "ARN",
                    "Status",
                    "LastModifiedTime",
                    "DomainName",
                    "S3Origin",
                    "Aliases",
                    "TrustedSigners",
                    "Comment",
                    "PriceClass",
                    "Enabled"
                  ],
                  "members": {
                    "Id": {},
                    "ARN": {},
                    "Status": {},
                    "LastModifiedTime": {
                      "type": "timestamp"
                    },
                    "DomainName": {},
                    "S3Origin": {
                      "shape": "S2f"
                    },
                    "Aliases": {
                      "shape": "S8"
                    },
                    "TrustedSigners": {
                      "shape": "Sy"
                    },
                    "Comment": {},
                    "PriceClass": {},
                    "Enabled": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          }
        },
        "payload": "StreamingDistributionList"
      }
    },
    "ListTagsForResource": {
      "http": {
        "method": "GET",
        "requestUri": "/2017-03-25/tagging"
      },
      "input": {
        "type": "structure",
        "required": [
          "Resource"
        ],
        "members": {
          "Resource": {
            "location": "querystring",
            "locationName": "Resource"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Tags"
        ],
        "members": {
          "Tags": {
            "shape": "S21"
          }
        },
        "payload": "Tags"
      }
    },
    "TagResource": {
      "http": {
        "requestUri": "/2017-03-25/tagging?Operation=Tag",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "Resource",
          "Tags"
        ],
        "members": {
          "Resource": {
            "location": "querystring",
            "locationName": "Resource"
          },
          "Tags": {
            "shape": "S21",
            "locationName": "Tags",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/"
            }
          }
        },
        "payload": "Tags"
      }
    },
    "UntagResource": {
      "http": {
        "requestUri": "/2017-03-25/tagging?Operation=Untag",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "Resource",
          "TagKeys"
        ],
        "members": {
          "Resource": {
            "location": "querystring",
            "locationName": "Resource"
          },
          "TagKeys": {
            "locationName": "TagKeys",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/"
            },
            "type": "structure",
            "members": {
              "Items": {
                "type": "list",
                "member": {
                  "locationName": "Key"
                }
              }
            }
          }
        },
        "payload": "TagKeys"
      }
    },
    "UpdateCloudFrontOriginAccessIdentity": {
      "http": {
        "method": "PUT",
        "requestUri": "/2017-03-25/origin-access-identity/cloudfront/{Id}/config"
      },
      "input": {
        "type": "structure",
        "required": [
          "CloudFrontOriginAccessIdentityConfig",
          "Id"
        ],
        "members": {
          "CloudFrontOriginAccessIdentityConfig": {
            "shape": "S2",
            "locationName": "CloudFrontOriginAccessIdentityConfig",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/"
            }
          },
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "IfMatch": {
            "location": "header",
            "locationName": "If-Match"
          }
        },
        "payload": "CloudFrontOriginAccessIdentityConfig"
      },
      "output": {
        "type": "structure",
        "members": {
          "CloudFrontOriginAccessIdentity": {
            "shape": "S5"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "CloudFrontOriginAccessIdentity"
      }
    },
    "UpdateDistribution": {
      "http": {
        "method": "PUT",
        "requestUri": "/2017-03-25/distribution/{Id}/config"
      },
      "input": {
        "type": "structure",
        "required": [
          "DistributionConfig",
          "Id"
        ],
        "members": {
          "DistributionConfig": {
            "shape": "S7",
            "locationName": "DistributionConfig",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/"
            }
          },
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "IfMatch": {
            "location": "header",
            "locationName": "If-Match"
          }
        },
        "payload": "DistributionConfig"
      },
      "output": {
        "type": "structure",
        "members": {
          "Distribution": {
            "shape": "S1s"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "Distribution"
      }
    },
    "UpdateStreamingDistribution": {
      "http": {
        "method": "PUT",
        "requestUri": "/2017-03-25/streaming-distribution/{Id}/config"
      },
      "input": {
        "type": "structure",
        "required": [
          "StreamingDistributionConfig",
          "Id"
        ],
        "members": {
          "StreamingDistributionConfig": {
            "shape": "S2e",
            "locationName": "StreamingDistributionConfig",
            "xmlNamespace": {
              "uri": "http://cloudfront.amazonaws.com/doc/2017-03-25/"
            }
          },
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "IfMatch": {
            "location": "header",
            "locationName": "If-Match"
          }
        },
        "payload": "StreamingDistributionConfig"
      },
      "output": {
        "type": "structure",
        "members": {
          "StreamingDistribution": {
            "shape": "S2i"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          }
        },
        "payload": "StreamingDistribution"
      }
    }
  },
  "shapes": {
    "S2": {
      "type": "structure",
      "required": [
        "CallerReference",
        "Comment"
      ],
      "members": {
        "CallerReference": {},
        "Comment": {}
      }
    },
    "S5": {
      "type": "structure",
      "required": [
        "Id",
        "S3CanonicalUserId"
      ],
      "members": {
        "Id": {},
        "S3CanonicalUserId": {},
        "CloudFrontOriginAccessIdentityConfig": {
          "shape": "S2"
        }
      }
    },
    "S7": {
      "type": "structure",
      "required": [
        "CallerReference",
        "Origins",
        "DefaultCacheBehavior",
        "Comment",
        "Enabled"
      ],
      "members": {
        "CallerReference": {},
        "Aliases": {
          "shape": "S8"
        },
        "DefaultRootObject": {},
        "Origins": {
          "shape": "Sb"
        },
        "DefaultCacheBehavior": {
          "shape": "Sn"
        },
        "CacheBehaviors": {
          "shape": "S1a"
        },
        "CustomErrorResponses": {
          "shape": "S1d"
        },
        "Comment": {},
        "Logging": {
          "type": "structure",
          "required": [
            "Enabled",
            "IncludeCookies",
            "Bucket",
            "Prefix"
          ],
          "members": {
            "Enabled": {
              "type": "boolean"
            },
            "IncludeCookies": {
              "type": "boolean"
            },
            "Bucket": {},
            "Prefix": {}
          }
        },
        "PriceClass": {},
        "Enabled": {
          "type": "boolean"
        },
        "ViewerCertificate": {
          "shape": "S1i"
        },
        "Restrictions": {
          "shape": "S1m"
        },
        "WebACLId": {},
        "HttpVersion": {},
        "IsIPV6Enabled": {
          "type": "boolean"
        }
      }
    },
    "S8": {
      "type": "structure",
      "required": [
        "Quantity"
      ],
      "members": {
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "type": "list",
          "member": {
            "locationName": "CNAME"
          }
        }
      }
    },
    "Sb": {
      "type": "structure",
      "required": [
        "Quantity"
      ],
      "members": {
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "type": "list",
          "member": {
            "locationName": "Origin",
            "type": "structure",
            "required": [
              "Id",
              "DomainName"
            ],
            "members": {
              "Id": {},
              "DomainName": {},
              "OriginPath": {},
              "CustomHeaders": {
                "type": "structure",
                "required": [
                  "Quantity"
                ],
                "members": {
                  "Quantity": {
                    "type": "integer"
                  },
                  "Items": {
                    "type": "list",
                    "member": {
                      "locationName": "OriginCustomHeader",
                      "type": "structure",
                      "required": [
                        "HeaderName",
                        "HeaderValue"
                      ],
                      "members": {
                        "HeaderName": {},
                        "HeaderValue": {}
                      }
                    }
                  }
                }
              },
              "S3OriginConfig": {
                "type": "structure",
                "required": [
                  "OriginAccessIdentity"
                ],
                "members": {
                  "OriginAccessIdentity": {}
                }
              },
              "CustomOriginConfig": {
                "type": "structure",
                "required": [
                  "HTTPPort",
                  "HTTPSPort",
                  "OriginProtocolPolicy"
                ],
                "members": {
                  "HTTPPort": {
                    "type": "integer"
                  },
                  "HTTPSPort": {
                    "type": "integer"
                  },
                  "OriginProtocolPolicy": {},
                  "OriginSslProtocols": {
                    "type": "structure",
                    "required": [
                      "Quantity",
                      "Items"
                    ],
                    "members": {
                      "Quantity": {
                        "type": "integer"
                      },
                      "Items": {
                        "type": "list",
                        "member": {
                          "locationName": "SslProtocol"
                        }
                      }
                    }
                  },
                  "OriginReadTimeout": {
                    "type": "integer"
                  },
                  "OriginKeepaliveTimeout": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        }
      }
    },
    "Sn": {
      "type": "structure",
      "required": [
        "TargetOriginId",
        "ForwardedValues",
        "TrustedSigners",
        "ViewerProtocolPolicy",
        "MinTTL"
      ],
      "members": {
        "TargetOriginId": {},
        "ForwardedValues": {
          "shape": "So"
        },
        "TrustedSigners": {
          "shape": "Sy"
        },
        "ViewerProtocolPolicy": {},
        "MinTTL": {
          "type": "long"
        },
        "AllowedMethods": {
          "shape": "S12"
        },
        "SmoothStreaming": {
          "type": "boolean"
        },
        "DefaultTTL": {
          "type": "long"
        },
        "MaxTTL": {
          "type": "long"
        },
        "Compress": {
          "type": "boolean"
        },
        "LambdaFunctionAssociations": {
          "shape": "S16"
        }
      }
    },
    "So": {
      "type": "structure",
      "required": [
        "QueryString",
        "Cookies"
      ],
      "members": {
        "QueryString": {
          "type": "boolean"
        },
        "Cookies": {
          "type": "structure",
          "required": [
            "Forward"
          ],
          "members": {
            "Forward": {},
            "WhitelistedNames": {
              "type": "structure",
              "required": [
                "Quantity"
              ],
              "members": {
                "Quantity": {
                  "type": "integer"
                },
                "Items": {
                  "type": "list",
                  "member": {
                    "locationName": "Name"
                  }
                }
              }
            }
          }
        },
        "Headers": {
          "type": "structure",
          "required": [
            "Quantity"
          ],
          "members": {
            "Quantity": {
              "type": "integer"
            },
            "Items": {
              "type": "list",
              "member": {
                "locationName": "Name"
              }
            }
          }
        },
        "QueryStringCacheKeys": {
          "type": "structure",
          "required": [
            "Quantity"
          ],
          "members": {
            "Quantity": {
              "type": "integer"
            },
            "Items": {
              "type": "list",
              "member": {
                "locationName": "Name"
              }
            }
          }
        }
      }
    },
    "Sy": {
      "type": "structure",
      "required": [
        "Enabled",
        "Quantity"
      ],
      "members": {
        "Enabled": {
          "type": "boolean"
        },
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "type": "list",
          "member": {
            "locationName": "AwsAccountNumber"
          }
        }
      }
    },
    "S12": {
      "type": "structure",
      "required": [
        "Quantity",
        "Items"
      ],
      "members": {
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "shape": "S13"
        },
        "CachedMethods": {
          "type": "structure",
          "required": [
            "Quantity",
            "Items"
          ],
          "members": {
            "Quantity": {
              "type": "integer"
            },
            "Items": {
              "shape": "S13"
            }
          }
        }
      }
    },
    "S13": {
      "type": "list",
      "member": {
        "locationName": "Method"
      }
    },
    "S16": {
      "type": "structure",
      "required": [
        "Quantity"
      ],
      "members": {
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "type": "list",
          "member": {
            "locationName": "LambdaFunctionAssociation",
            "type": "structure",
            "members": {
              "LambdaFunctionARN": {},
              "EventType": {}
            }
          }
        }
      }
    },
    "S1a": {
      "type": "structure",
      "required": [
        "Quantity"
      ],
      "members": {
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "type": "list",
          "member": {
            "locationName": "CacheBehavior",
            "type": "structure",
            "required": [
              "PathPattern",
              "TargetOriginId",
              "ForwardedValues",
              "TrustedSigners",
              "ViewerProtocolPolicy",
              "MinTTL"
            ],
            "members": {
              "PathPattern": {},
              "TargetOriginId": {},
              "ForwardedValues": {
                "shape": "So"
              },
              "TrustedSigners": {
                "shape": "Sy"
              },
              "ViewerProtocolPolicy": {},
              "MinTTL": {
                "type": "long"
              },
              "AllowedMethods": {
                "shape": "S12"
              },
              "SmoothStreaming": {
                "type": "boolean"
              },
              "DefaultTTL": {
                "type": "long"
              },
              "MaxTTL": {
                "type": "long"
              },
              "Compress": {
                "type": "boolean"
              },
              "LambdaFunctionAssociations": {
                "shape": "S16"
              }
            }
          }
        }
      }
    },
    "S1d": {
      "type": "structure",
      "required": [
        "Quantity"
      ],
      "members": {
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "type": "list",
          "member": {
            "locationName": "CustomErrorResponse",
            "type": "structure",
            "required": [
              "ErrorCode"
            ],
            "members": {
              "ErrorCode": {
                "type": "integer"
              },
              "ResponsePagePath": {},
              "ResponseCode": {},
              "ErrorCachingMinTTL": {
                "type": "long"
              }
            }
          }
        }
      }
    },
    "S1i": {
      "type": "structure",
      "members": {
        "CloudFrontDefaultCertificate": {
          "type": "boolean"
        },
        "IAMCertificateId": {},
        "ACMCertificateArn": {},
        "SSLSupportMethod": {},
        "MinimumProtocolVersion": {},
        "Certificate": {
          "deprecated": true
        },
        "CertificateSource": {
          "deprecated": true
        }
      }
    },
    "S1m": {
      "type": "structure",
      "required": [
        "GeoRestriction"
      ],
      "members": {
        "GeoRestriction": {
          "type": "structure",
          "required": [
            "RestrictionType",
            "Quantity"
          ],
          "members": {
            "RestrictionType": {},
            "Quantity": {
              "type": "integer"
            },
            "Items": {
              "type": "list",
              "member": {
                "locationName": "Location"
              }
            }
          }
        }
      }
    },
    "S1s": {
      "type": "structure",
      "required": [
        "Id",
        "ARN",
        "Status",
        "LastModifiedTime",
        "InProgressInvalidationBatches",
        "DomainName",
        "ActiveTrustedSigners",
        "DistributionConfig"
      ],
      "members": {
        "Id": {},
        "ARN": {},
        "Status": {},
        "LastModifiedTime": {
          "type": "timestamp"
        },
        "InProgressInvalidationBatches": {
          "type": "integer"
        },
        "DomainName": {},
        "ActiveTrustedSigners": {
          "shape": "S1u"
        },
        "DistributionConfig": {
          "shape": "S7"
        }
      }
    },
    "S1u": {
      "type": "structure",
      "required": [
        "Enabled",
        "Quantity"
      ],
      "members": {
        "Enabled": {
          "type": "boolean"
        },
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "type": "list",
          "member": {
            "locationName": "Signer",
            "type": "structure",
            "members": {
              "AwsAccountNumber": {},
              "KeyPairIds": {
                "type": "structure",
                "required": [
                  "Quantity"
                ],
                "members": {
                  "Quantity": {
                    "type": "integer"
                  },
                  "Items": {
                    "type": "list",
                    "member": {
                      "locationName": "KeyPairId"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "S21": {
      "type": "structure",
      "members": {
        "Items": {
          "type": "list",
          "member": {
            "locationName": "Tag",
            "type": "structure",
            "required": [
              "Key"
            ],
            "members": {
              "Key": {},
              "Value": {}
            }
          }
        }
      }
    },
    "S28": {
      "type": "structure",
      "required": [
        "Paths",
        "CallerReference"
      ],
      "members": {
        "Paths": {
          "type": "structure",
          "required": [
            "Quantity"
          ],
          "members": {
            "Quantity": {
              "type": "integer"
            },
            "Items": {
              "type": "list",
              "member": {
                "locationName": "Path"
              }
            }
          }
        },
        "CallerReference": {}
      }
    },
    "S2c": {
      "type": "structure",
      "required": [
        "Id",
        "Status",
        "CreateTime",
        "InvalidationBatch"
      ],
      "members": {
        "Id": {},
        "Status": {},
        "CreateTime": {
          "type": "timestamp"
        },
        "InvalidationBatch": {
          "shape": "S28"
        }
      }
    },
    "S2e": {
      "type": "structure",
      "required": [
        "CallerReference",
        "S3Origin",
        "Comment",
        "TrustedSigners",
        "Enabled"
      ],
      "members": {
        "CallerReference": {},
        "S3Origin": {
          "shape": "S2f"
        },
        "Aliases": {
          "shape": "S8"
        },
        "Comment": {},
        "Logging": {
          "type": "structure",
          "required": [
            "Enabled",
            "Bucket",
            "Prefix"
          ],
          "members": {
            "Enabled": {
              "type": "boolean"
            },
            "Bucket": {},
            "Prefix": {}
          }
        },
        "TrustedSigners": {
          "shape": "Sy"
        },
        "PriceClass": {},
        "Enabled": {
          "type": "boolean"
        }
      }
    },
    "S2f": {
      "type": "structure",
      "required": [
        "DomainName",
        "OriginAccessIdentity"
      ],
      "members": {
        "DomainName": {},
        "OriginAccessIdentity": {}
      }
    },
    "S2i": {
      "type": "structure",
      "required": [
        "Id",
        "ARN",
        "Status",
        "DomainName",
        "ActiveTrustedSigners",
        "StreamingDistributionConfig"
      ],
      "members": {
        "Id": {},
        "ARN": {},
        "Status": {},
        "LastModifiedTime": {
          "type": "timestamp"
        },
        "DomainName": {},
        "ActiveTrustedSigners": {
          "shape": "S1u"
        },
        "StreamingDistributionConfig": {
          "shape": "S2e"
        }
      }
    },
    "S3b": {
      "type": "structure",
      "required": [
        "Marker",
        "MaxItems",
        "IsTruncated",
        "Quantity"
      ],
      "members": {
        "Marker": {},
        "NextMarker": {},
        "MaxItems": {
          "type": "integer"
        },
        "IsTruncated": {
          "type": "boolean"
        },
        "Quantity": {
          "type": "integer"
        },
        "Items": {
          "type": "list",
          "member": {
            "locationName": "DistributionSummary",
            "type": "structure",
            "required": [
              "Id",
              "ARN",
              "Status",
              "LastModifiedTime",
              "DomainName",
              "Aliases",
              "Origins",
              "DefaultCacheBehavior",
              "CacheBehaviors",
              "CustomErrorResponses",
              "Comment",
              "PriceClass",
              "Enabled",
              "ViewerCertificate",
              "Restrictions",
              "WebACLId",
              "HttpVersion",
              "IsIPV6Enabled"
            ],
            "members": {
              "Id": {},
              "ARN": {},
              "Status": {},
              "LastModifiedTime": {
                "type": "timestamp"
              },
              "DomainName": {},
              "Aliases": {
                "shape": "S8"
              },
              "Origins": {
                "shape": "Sb"
              },
              "DefaultCacheBehavior": {
                "shape": "Sn"
              },
              "CacheBehaviors": {
                "shape": "S1a"
              },
              "CustomErrorResponses": {
                "shape": "S1d"
              },
              "Comment": {},
              "PriceClass": {},
              "Enabled": {
                "type": "boolean"
              },
              "ViewerCertificate": {
                "shape": "S1i"
              },
              "Restrictions": {
                "shape": "S1m"
              },
              "WebACLId": {},
              "HttpVersion": {},
              "IsIPV6Enabled": {
                "type": "boolean"
              }
            }
          }
        }
      }
    }
  }
}
},{}],16:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListCloudFrontOriginAccessIdentities": {
      "input_token": "Marker",
      "limit_key": "MaxItems",
      "more_results": "CloudFrontOriginAccessIdentityList.IsTruncated",
      "output_token": "CloudFrontOriginAccessIdentityList.NextMarker",
      "result_key": "CloudFrontOriginAccessIdentityList.Items"
    },
    "ListDistributions": {
      "input_token": "Marker",
      "limit_key": "MaxItems",
      "more_results": "DistributionList.IsTruncated",
      "output_token": "DistributionList.NextMarker",
      "result_key": "DistributionList.Items"
    },
    "ListInvalidations": {
      "input_token": "Marker",
      "limit_key": "MaxItems",
      "more_results": "InvalidationList.IsTruncated",
      "output_token": "InvalidationList.NextMarker",
      "result_key": "InvalidationList.Items"
    },
    "ListStreamingDistributions": {
      "input_token": "Marker",
      "limit_key": "MaxItems",
      "more_results": "StreamingDistributionList.IsTruncated",
      "output_token": "StreamingDistributionList.NextMarker",
      "result_key": "StreamingDistributionList.Items"
    }
  }
}
},{}],17:[function(require,module,exports){
arguments[4][14][0].apply(exports,arguments)
},{"dup":14}],18:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2014-05-30",
    "endpointPrefix": "cloudhsm",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "CloudHSM",
    "serviceFullName": "Amazon CloudHSM",
    "serviceId": "CloudHSM",
    "signatureVersion": "v4",
    "targetPrefix": "CloudHsmFrontendService",
    "uid": "cloudhsm-2014-05-30"
  },
  "operations": {
    "AddTagsToResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArn",
          "TagList"
        ],
        "members": {
          "ResourceArn": {},
          "TagList": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Status"
        ],
        "members": {
          "Status": {}
        }
      }
    },
    "CreateHapg": {
      "input": {
        "type": "structure",
        "required": [
          "Label"
        ],
        "members": {
          "Label": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "HapgArn": {}
        }
      }
    },
    "CreateHsm": {
      "input": {
        "type": "structure",
        "required": [
          "SubnetId",
          "SshKey",
          "IamRoleArn",
          "SubscriptionType"
        ],
        "members": {
          "SubnetId": {
            "locationName": "SubnetId"
          },
          "SshKey": {
            "locationName": "SshKey"
          },
          "EniIp": {
            "locationName": "EniIp"
          },
          "IamRoleArn": {
            "locationName": "IamRoleArn"
          },
          "ExternalId": {
            "locationName": "ExternalId"
          },
          "SubscriptionType": {
            "locationName": "SubscriptionType"
          },
          "ClientToken": {
            "locationName": "ClientToken"
          },
          "SyslogIp": {
            "locationName": "SyslogIp"
          }
        },
        "locationName": "CreateHsmRequest"
      },
      "output": {
        "type": "structure",
        "members": {
          "HsmArn": {}
        }
      }
    },
    "CreateLunaClient": {
      "input": {
        "type": "structure",
        "required": [
          "Certificate"
        ],
        "members": {
          "Label": {},
          "Certificate": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ClientArn": {}
        }
      }
    },
    "DeleteHapg": {
      "input": {
        "type": "structure",
        "required": [
          "HapgArn"
        ],
        "members": {
          "HapgArn": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Status"
        ],
        "members": {
          "Status": {}
        }
      }
    },
    "DeleteHsm": {
      "input": {
        "type": "structure",
        "required": [
          "HsmArn"
        ],
        "members": {
          "HsmArn": {
            "locationName": "HsmArn"
          }
        },
        "locationName": "DeleteHsmRequest"
      },
      "output": {
        "type": "structure",
        "required": [
          "Status"
        ],
        "members": {
          "Status": {}
        }
      }
    },
    "DeleteLunaClient": {
      "input": {
        "type": "structure",
        "required": [
          "ClientArn"
        ],
        "members": {
          "ClientArn": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Status"
        ],
        "members": {
          "Status": {}
        }
      }
    },
    "DescribeHapg": {
      "input": {
        "type": "structure",
        "required": [
          "HapgArn"
        ],
        "members": {
          "HapgArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "HapgArn": {},
          "HapgSerial": {},
          "HsmsLastActionFailed": {
            "shape": "Sz"
          },
          "HsmsPendingDeletion": {
            "shape": "Sz"
          },
          "HsmsPendingRegistration": {
            "shape": "Sz"
          },
          "Label": {},
          "LastModifiedTimestamp": {},
          "PartitionSerialList": {
            "shape": "S11"
          },
          "State": {}
        }
      }
    },
    "DescribeHsm": {
      "input": {
        "type": "structure",
        "members": {
          "HsmArn": {},
          "HsmSerialNumber": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "HsmArn": {},
          "Status": {},
          "StatusDetails": {},
          "AvailabilityZone": {},
          "EniId": {},
          "EniIp": {},
          "SubscriptionType": {},
          "SubscriptionStartDate": {},
          "SubscriptionEndDate": {},
          "VpcId": {},
          "SubnetId": {},
          "IamRoleArn": {},
          "SerialNumber": {},
          "VendorName": {},
          "HsmType": {},
          "SoftwareVersion": {},
          "SshPublicKey": {},
          "SshKeyLastUpdated": {},
          "ServerCertUri": {},
          "ServerCertLastUpdated": {},
          "Partitions": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "DescribeLunaClient": {
      "input": {
        "type": "structure",
        "members": {
          "ClientArn": {},
          "CertificateFingerprint": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ClientArn": {},
          "Certificate": {},
          "CertificateFingerprint": {},
          "LastModifiedTimestamp": {},
          "Label": {}
        }
      }
    },
    "GetConfig": {
      "input": {
        "type": "structure",
        "required": [
          "ClientArn",
          "ClientVersion",
          "HapgList"
        ],
        "members": {
          "ClientArn": {},
          "ClientVersion": {},
          "HapgList": {
            "shape": "S1i"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ConfigType": {},
          "ConfigFile": {},
          "ConfigCred": {}
        }
      }
    },
    "ListAvailableZones": {
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "members": {
          "AZList": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "ListHapgs": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "HapgList"
        ],
        "members": {
          "HapgList": {
            "shape": "S1i"
          },
          "NextToken": {}
        }
      }
    },
    "ListHsms": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "HsmList": {
            "shape": "Sz"
          },
          "NextToken": {}
        }
      }
    },
    "ListLunaClients": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "ClientList"
        ],
        "members": {
          "ClientList": {
            "type": "list",
            "member": {}
          },
          "NextToken": {}
        }
      }
    },
    "ListTagsForResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArn"
        ],
        "members": {
          "ResourceArn": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "TagList"
        ],
        "members": {
          "TagList": {
            "shape": "S3"
          }
        }
      }
    },
    "ModifyHapg": {
      "input": {
        "type": "structure",
        "required": [
          "HapgArn"
        ],
        "members": {
          "HapgArn": {},
          "Label": {},
          "PartitionSerialList": {
            "shape": "S11"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "HapgArn": {}
        }
      }
    },
    "ModifyHsm": {
      "input": {
        "type": "structure",
        "required": [
          "HsmArn"
        ],
        "members": {
          "HsmArn": {
            "locationName": "HsmArn"
          },
          "SubnetId": {
            "locationName": "SubnetId"
          },
          "EniIp": {
            "locationName": "EniIp"
          },
          "IamRoleArn": {
            "locationName": "IamRoleArn"
          },
          "ExternalId": {
            "locationName": "ExternalId"
          },
          "SyslogIp": {
            "locationName": "SyslogIp"
          }
        },
        "locationName": "ModifyHsmRequest"
      },
      "output": {
        "type": "structure",
        "members": {
          "HsmArn": {}
        }
      }
    },
    "ModifyLunaClient": {
      "input": {
        "type": "structure",
        "required": [
          "ClientArn",
          "Certificate"
        ],
        "members": {
          "ClientArn": {},
          "Certificate": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ClientArn": {}
        }
      }
    },
    "RemoveTagsFromResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArn",
          "TagKeyList"
        ],
        "members": {
          "ResourceArn": {},
          "TagKeyList": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Status"
        ],
        "members": {
          "Status": {}
        }
      }
    }
  },
  "shapes": {
    "S3": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Key",
          "Value"
        ],
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "Sz": {
      "type": "list",
      "member": {}
    },
    "S11": {
      "type": "list",
      "member": {}
    },
    "S1i": {
      "type": "list",
      "member": {}
    }
  }
}
},{}],19:[function(require,module,exports){
module.exports={
  "pagination": {
  }
}

},{}],20:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2013-11-01",
    "endpointPrefix": "cloudtrail",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "CloudTrail",
    "serviceFullName": "AWS CloudTrail",
    "signatureVersion": "v4",
    "targetPrefix": "com.amazonaws.cloudtrail.v20131101.CloudTrail_20131101",
    "uid": "cloudtrail-2013-11-01"
  },
  "operations": {
    "AddTags": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceId"
        ],
        "members": {
          "ResourceId": {},
          "TagsList": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "idempotent": true
    },
    "CreateTrail": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "S3BucketName"
        ],
        "members": {
          "Name": {},
          "S3BucketName": {},
          "S3KeyPrefix": {},
          "SnsTopicName": {},
          "IncludeGlobalServiceEvents": {
            "type": "boolean"
          },
          "IsMultiRegionTrail": {
            "type": "boolean"
          },
          "EnableLogFileValidation": {
            "type": "boolean"
          },
          "CloudWatchLogsLogGroupArn": {},
          "CloudWatchLogsRoleArn": {},
          "KmsKeyId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Name": {},
          "S3BucketName": {},
          "S3KeyPrefix": {},
          "SnsTopicName": {
            "deprecated": true
          },
          "SnsTopicARN": {},
          "IncludeGlobalServiceEvents": {
            "type": "boolean"
          },
          "IsMultiRegionTrail": {
            "type": "boolean"
          },
          "TrailARN": {},
          "LogFileValidationEnabled": {
            "type": "boolean"
          },
          "CloudWatchLogsLogGroupArn": {},
          "CloudWatchLogsRoleArn": {},
          "KmsKeyId": {}
        }
      },
      "idempotent": true
    },
    "DeleteTrail": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "idempotent": true
    },
    "DescribeTrails": {
      "input": {
        "type": "structure",
        "members": {
          "trailNameList": {
            "type": "list",
            "member": {}
          },
          "includeShadowTrails": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "trailList": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "S3BucketName": {},
                "S3KeyPrefix": {},
                "SnsTopicName": {
                  "deprecated": true
                },
                "SnsTopicARN": {},
                "IncludeGlobalServiceEvents": {
                  "type": "boolean"
                },
                "IsMultiRegionTrail": {
                  "type": "boolean"
                },
                "HomeRegion": {},
                "TrailARN": {},
                "LogFileValidationEnabled": {
                  "type": "boolean"
                },
                "CloudWatchLogsLogGroupArn": {},
                "CloudWatchLogsRoleArn": {},
                "KmsKeyId": {},
                "HasCustomEventSelectors": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      },
      "idempotent": true
    },
    "GetEventSelectors": {
      "input": {
        "type": "structure",
        "required": [
          "TrailName"
        ],
        "members": {
          "TrailName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TrailARN": {},
          "EventSelectors": {
            "shape": "Si"
          }
        }
      },
      "idempotent": true
    },
    "GetTrailStatus": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IsLogging": {
            "type": "boolean"
          },
          "LatestDeliveryError": {},
          "LatestNotificationError": {},
          "LatestDeliveryTime": {
            "type": "timestamp"
          },
          "LatestNotificationTime": {
            "type": "timestamp"
          },
          "StartLoggingTime": {
            "type": "timestamp"
          },
          "StopLoggingTime": {
            "type": "timestamp"
          },
          "LatestCloudWatchLogsDeliveryError": {},
          "LatestCloudWatchLogsDeliveryTime": {
            "type": "timestamp"
          },
          "LatestDigestDeliveryTime": {
            "type": "timestamp"
          },
          "LatestDigestDeliveryError": {},
          "LatestDeliveryAttemptTime": {},
          "LatestNotificationAttemptTime": {},
          "LatestNotificationAttemptSucceeded": {},
          "LatestDeliveryAttemptSucceeded": {},
          "TimeLoggingStarted": {},
          "TimeLoggingStopped": {}
        }
      },
      "idempotent": true
    },
    "ListPublicKeys": {
      "input": {
        "type": "structure",
        "members": {
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "PublicKeyList": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Value": {
                  "type": "blob"
                },
                "ValidityStartTime": {
                  "type": "timestamp"
                },
                "ValidityEndTime": {
                  "type": "timestamp"
                },
                "Fingerprint": {}
              }
            }
          },
          "NextToken": {}
        }
      },
      "idempotent": true
    },
    "ListTags": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceIdList"
        ],
        "members": {
          "ResourceIdList": {
            "type": "list",
            "member": {}
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResourceTagList": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ResourceId": {},
                "TagsList": {
                  "shape": "S3"
                }
              }
            }
          },
          "NextToken": {}
        }
      },
      "idempotent": true
    },
    "LookupEvents": {
      "input": {
        "type": "structure",
        "members": {
          "LookupAttributes": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "AttributeKey",
                "AttributeValue"
              ],
              "members": {
                "AttributeKey": {},
                "AttributeValue": {}
              }
            }
          },
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Events": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "EventId": {},
                "EventName": {},
                "EventTime": {
                  "type": "timestamp"
                },
                "EventSource": {},
                "Username": {},
                "Resources": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "ResourceType": {},
                      "ResourceName": {}
                    }
                  }
                },
                "CloudTrailEvent": {}
              }
            }
          },
          "NextToken": {}
        }
      },
      "idempotent": true
    },
    "PutEventSelectors": {
      "input": {
        "type": "structure",
        "required": [
          "TrailName",
          "EventSelectors"
        ],
        "members": {
          "TrailName": {},
          "EventSelectors": {
            "shape": "Si"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TrailARN": {},
          "EventSelectors": {
            "shape": "Si"
          }
        }
      },
      "idempotent": true
    },
    "RemoveTags": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceId"
        ],
        "members": {
          "ResourceId": {},
          "TagsList": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "idempotent": true
    },
    "StartLogging": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "idempotent": true
    },
    "StopLogging": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "idempotent": true
    },
    "UpdateTrail": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {},
          "S3BucketName": {},
          "S3KeyPrefix": {},
          "SnsTopicName": {},
          "IncludeGlobalServiceEvents": {
            "type": "boolean"
          },
          "IsMultiRegionTrail": {
            "type": "boolean"
          },
          "EnableLogFileValidation": {
            "type": "boolean"
          },
          "CloudWatchLogsLogGroupArn": {},
          "CloudWatchLogsRoleArn": {},
          "KmsKeyId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Name": {},
          "S3BucketName": {},
          "S3KeyPrefix": {},
          "SnsTopicName": {
            "deprecated": true
          },
          "SnsTopicARN": {},
          "IncludeGlobalServiceEvents": {
            "type": "boolean"
          },
          "IsMultiRegionTrail": {
            "type": "boolean"
          },
          "TrailARN": {},
          "LogFileValidationEnabled": {
            "type": "boolean"
          },
          "CloudWatchLogsLogGroupArn": {},
          "CloudWatchLogsRoleArn": {},
          "KmsKeyId": {}
        }
      },
      "idempotent": true
    }
  },
  "shapes": {
    "S3": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Key"
        ],
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "Si": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "ReadWriteType": {},
          "IncludeManagementEvents": {
            "type": "boolean"
          },
          "DataResources": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Type": {},
                "Values": {
                  "type": "list",
                  "member": {}
                }
              }
            }
          }
        }
      }
    }
  }
}
},{}],21:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeTrails": {
      "result_key": "trailList"
    },
    "LookupEvents": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "Events"
    }
  }
}
},{}],22:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-04-13",
    "endpointPrefix": "codecommit",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "CodeCommit",
    "serviceFullName": "AWS CodeCommit",
    "signatureVersion": "v4",
    "targetPrefix": "CodeCommit_20150413",
    "uid": "codecommit-2015-04-13"
  },
  "operations": {
    "BatchGetRepositories": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryNames"
        ],
        "members": {
          "repositoryNames": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "repositories": {
            "type": "list",
            "member": {
              "shape": "S6"
            }
          },
          "repositoriesNotFound": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "CreateBranch": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "branchName",
          "commitId"
        ],
        "members": {
          "repositoryName": {},
          "branchName": {},
          "commitId": {}
        }
      }
    },
    "CreatePullRequest": {
      "input": {
        "type": "structure",
        "required": [
          "title",
          "targets"
        ],
        "members": {
          "title": {},
          "description": {},
          "targets": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "repositoryName",
                "sourceReference"
              ],
              "members": {
                "repositoryName": {},
                "sourceReference": {},
                "destinationReference": {}
              }
            }
          },
          "clientRequestToken": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "pullRequest"
        ],
        "members": {
          "pullRequest": {
            "shape": "Sr"
          }
        }
      }
    },
    "CreateRepository": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "repositoryName": {},
          "repositoryDescription": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "repositoryMetadata": {
            "shape": "S6"
          }
        }
      }
    },
    "DeleteBranch": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "branchName"
        ],
        "members": {
          "repositoryName": {},
          "branchName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "deletedBranch": {
            "shape": "S12"
          }
        }
      }
    },
    "DeleteCommentContent": {
      "input": {
        "type": "structure",
        "required": [
          "commentId"
        ],
        "members": {
          "commentId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "comment": {
            "shape": "S16"
          }
        }
      }
    },
    "DeleteRepository": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "repositoryName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "repositoryId": {}
        }
      }
    },
    "DescribePullRequestEvents": {
      "input": {
        "type": "structure",
        "required": [
          "pullRequestId"
        ],
        "members": {
          "pullRequestId": {},
          "pullRequestEventType": {},
          "actorArn": {},
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "pullRequestEvents"
        ],
        "members": {
          "pullRequestEvents": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "pullRequestId": {},
                "eventDate": {
                  "type": "timestamp"
                },
                "pullRequestEventType": {},
                "actorArn": {},
                "pullRequestStatusChangedEventMetadata": {
                  "type": "structure",
                  "members": {
                    "pullRequestStatus": {}
                  }
                },
                "pullRequestSourceReferenceUpdatedEventMetadata": {
                  "type": "structure",
                  "members": {
                    "repositoryName": {},
                    "beforeCommitId": {},
                    "afterCommitId": {}
                  }
                },
                "pullRequestMergedStateChangedEventMetadata": {
                  "type": "structure",
                  "members": {
                    "repositoryName": {},
                    "destinationReference": {},
                    "mergeMetadata": {
                      "shape": "Sw"
                    }
                  }
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "GetBlob": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "blobId"
        ],
        "members": {
          "repositoryName": {},
          "blobId": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "content"
        ],
        "members": {
          "content": {
            "type": "blob"
          }
        }
      }
    },
    "GetBranch": {
      "input": {
        "type": "structure",
        "members": {
          "repositoryName": {},
          "branchName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "branch": {
            "shape": "S12"
          }
        }
      }
    },
    "GetComment": {
      "input": {
        "type": "structure",
        "required": [
          "commentId"
        ],
        "members": {
          "commentId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "comment": {
            "shape": "S16"
          }
        }
      }
    },
    "GetCommentsForComparedCommit": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "afterCommitId"
        ],
        "members": {
          "repositoryName": {},
          "beforeCommitId": {},
          "afterCommitId": {},
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "commentsForComparedCommitData": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "repositoryName": {},
                "beforeCommitId": {},
                "afterCommitId": {},
                "beforeBlobId": {},
                "afterBlobId": {},
                "location": {
                  "shape": "S1y"
                },
                "comments": {
                  "shape": "S22"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "GetCommentsForPullRequest": {
      "input": {
        "type": "structure",
        "required": [
          "pullRequestId"
        ],
        "members": {
          "pullRequestId": {},
          "repositoryName": {},
          "beforeCommitId": {},
          "afterCommitId": {},
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "commentsForPullRequestData": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "pullRequestId": {},
                "repositoryName": {},
                "beforeCommitId": {},
                "afterCommitId": {},
                "beforeBlobId": {},
                "afterBlobId": {},
                "location": {
                  "shape": "S1y"
                },
                "comments": {
                  "shape": "S22"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "GetCommit": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "commitId"
        ],
        "members": {
          "repositoryName": {},
          "commitId": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "commit"
        ],
        "members": {
          "commit": {
            "type": "structure",
            "members": {
              "commitId": {},
              "treeId": {},
              "parents": {
                "type": "list",
                "member": {}
              },
              "message": {},
              "author": {
                "shape": "S2c"
              },
              "committer": {
                "shape": "S2c"
              },
              "additionalData": {}
            }
          }
        }
      }
    },
    "GetDifferences": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "afterCommitSpecifier"
        ],
        "members": {
          "repositoryName": {},
          "beforeCommitSpecifier": {},
          "afterCommitSpecifier": {},
          "beforePath": {},
          "afterPath": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "differences": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "beforeBlob": {
                  "shape": "S2n"
                },
                "afterBlob": {
                  "shape": "S2n"
                },
                "changeType": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "GetMergeConflicts": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "destinationCommitSpecifier",
          "sourceCommitSpecifier",
          "mergeOption"
        ],
        "members": {
          "repositoryName": {},
          "destinationCommitSpecifier": {},
          "sourceCommitSpecifier": {},
          "mergeOption": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "mergeable",
          "destinationCommitId",
          "sourceCommitId"
        ],
        "members": {
          "mergeable": {
            "type": "boolean"
          },
          "destinationCommitId": {},
          "sourceCommitId": {}
        }
      }
    },
    "GetPullRequest": {
      "input": {
        "type": "structure",
        "required": [
          "pullRequestId"
        ],
        "members": {
          "pullRequestId": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "pullRequest"
        ],
        "members": {
          "pullRequest": {
            "shape": "Sr"
          }
        }
      }
    },
    "GetRepository": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "repositoryName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "repositoryMetadata": {
            "shape": "S6"
          }
        }
      }
    },
    "GetRepositoryTriggers": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "repositoryName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "configurationId": {},
          "triggers": {
            "shape": "S31"
          }
        }
      }
    },
    "ListBranches": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "repositoryName": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "branches": {
            "shape": "S35"
          },
          "nextToken": {}
        }
      }
    },
    "ListPullRequests": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "repositoryName": {},
          "authorArn": {},
          "pullRequestStatus": {},
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "pullRequestIds"
        ],
        "members": {
          "pullRequestIds": {
            "type": "list",
            "member": {}
          },
          "nextToken": {}
        }
      }
    },
    "ListRepositories": {
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {},
          "sortBy": {},
          "order": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "repositories": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "repositoryName": {},
                "repositoryId": {}
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "MergePullRequestByFastForward": {
      "input": {
        "type": "structure",
        "required": [
          "pullRequestId",
          "repositoryName"
        ],
        "members": {
          "pullRequestId": {},
          "repositoryName": {},
          "sourceCommitId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "pullRequest": {
            "shape": "Sr"
          }
        }
      }
    },
    "PostCommentForComparedCommit": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "afterCommitId",
          "content"
        ],
        "members": {
          "repositoryName": {},
          "beforeCommitId": {},
          "afterCommitId": {},
          "location": {
            "shape": "S1y"
          },
          "content": {},
          "clientRequestToken": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "repositoryName": {},
          "beforeCommitId": {},
          "afterCommitId": {},
          "beforeBlobId": {},
          "afterBlobId": {},
          "location": {
            "shape": "S1y"
          },
          "comment": {
            "shape": "S16"
          }
        }
      },
      "idempotent": true
    },
    "PostCommentForPullRequest": {
      "input": {
        "type": "structure",
        "required": [
          "pullRequestId",
          "repositoryName",
          "beforeCommitId",
          "afterCommitId",
          "content"
        ],
        "members": {
          "pullRequestId": {},
          "repositoryName": {},
          "beforeCommitId": {},
          "afterCommitId": {},
          "location": {
            "shape": "S1y"
          },
          "content": {},
          "clientRequestToken": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "repositoryName": {},
          "pullRequestId": {},
          "beforeCommitId": {},
          "afterCommitId": {},
          "beforeBlobId": {},
          "afterBlobId": {},
          "location": {
            "shape": "S1y"
          },
          "comment": {
            "shape": "S16"
          }
        }
      },
      "idempotent": true
    },
    "PostCommentReply": {
      "input": {
        "type": "structure",
        "required": [
          "inReplyTo",
          "content"
        ],
        "members": {
          "inReplyTo": {},
          "clientRequestToken": {
            "idempotencyToken": true
          },
          "content": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "comment": {
            "shape": "S16"
          }
        }
      },
      "idempotent": true
    },
    "PutRepositoryTriggers": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "triggers"
        ],
        "members": {
          "repositoryName": {},
          "triggers": {
            "shape": "S31"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "configurationId": {}
        }
      }
    },
    "TestRepositoryTriggers": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "triggers"
        ],
        "members": {
          "repositoryName": {},
          "triggers": {
            "shape": "S31"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "successfulExecutions": {
            "type": "list",
            "member": {}
          },
          "failedExecutions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "trigger": {},
                "failureMessage": {}
              }
            }
          }
        }
      }
    },
    "UpdateComment": {
      "input": {
        "type": "structure",
        "required": [
          "commentId",
          "content"
        ],
        "members": {
          "commentId": {},
          "content": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "comment": {
            "shape": "S16"
          }
        }
      }
    },
    "UpdateDefaultBranch": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "defaultBranchName"
        ],
        "members": {
          "repositoryName": {},
          "defaultBranchName": {}
        }
      }
    },
    "UpdatePullRequestDescription": {
      "input": {
        "type": "structure",
        "required": [
          "pullRequestId",
          "description"
        ],
        "members": {
          "pullRequestId": {},
          "description": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "pullRequest"
        ],
        "members": {
          "pullRequest": {
            "shape": "Sr"
          }
        }
      }
    },
    "UpdatePullRequestStatus": {
      "input": {
        "type": "structure",
        "required": [
          "pullRequestId",
          "pullRequestStatus"
        ],
        "members": {
          "pullRequestId": {},
          "pullRequestStatus": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "pullRequest"
        ],
        "members": {
          "pullRequest": {
            "shape": "Sr"
          }
        }
      }
    },
    "UpdatePullRequestTitle": {
      "input": {
        "type": "structure",
        "required": [
          "pullRequestId",
          "title"
        ],
        "members": {
          "pullRequestId": {},
          "title": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "pullRequest"
        ],
        "members": {
          "pullRequest": {
            "shape": "Sr"
          }
        }
      }
    },
    "UpdateRepositoryDescription": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "repositoryName": {},
          "repositoryDescription": {}
        }
      }
    },
    "UpdateRepositoryName": {
      "input": {
        "type": "structure",
        "required": [
          "oldName",
          "newName"
        ],
        "members": {
          "oldName": {},
          "newName": {}
        }
      }
    }
  },
  "shapes": {
    "S6": {
      "type": "structure",
      "members": {
        "accountId": {},
        "repositoryId": {},
        "repositoryName": {},
        "repositoryDescription": {},
        "defaultBranch": {},
        "lastModifiedDate": {
          "type": "timestamp"
        },
        "creationDate": {
          "type": "timestamp"
        },
        "cloneUrlHttp": {},
        "cloneUrlSsh": {},
        "Arn": {}
      }
    },
    "Sr": {
      "type": "structure",
      "members": {
        "pullRequestId": {},
        "title": {},
        "description": {},
        "lastActivityDate": {
          "type": "timestamp"
        },
        "creationDate": {
          "type": "timestamp"
        },
        "pullRequestStatus": {},
        "authorArn": {},
        "pullRequestTargets": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "repositoryName": {},
              "sourceReference": {},
              "destinationReference": {},
              "destinationCommit": {},
              "sourceCommit": {},
              "mergeMetadata": {
                "shape": "Sw"
              }
            }
          }
        },
        "clientRequestToken": {}
      }
    },
    "Sw": {
      "type": "structure",
      "members": {
        "isMerged": {
          "type": "boolean"
        },
        "mergedBy": {}
      }
    },
    "S12": {
      "type": "structure",
      "members": {
        "branchName": {},
        "commitId": {}
      }
    },
    "S16": {
      "type": "structure",
      "members": {
        "commentId": {},
        "content": {},
        "inReplyTo": {},
        "creationDate": {
          "type": "timestamp"
        },
        "lastModifiedDate": {
          "type": "timestamp"
        },
        "authorArn": {},
        "deleted": {
          "type": "boolean"
        },
        "clientRequestToken": {}
      }
    },
    "S1y": {
      "type": "structure",
      "members": {
        "filePath": {},
        "filePosition": {
          "type": "long"
        },
        "relativeFileVersion": {}
      }
    },
    "S22": {
      "type": "list",
      "member": {
        "shape": "S16"
      }
    },
    "S2c": {
      "type": "structure",
      "members": {
        "name": {},
        "email": {},
        "date": {}
      }
    },
    "S2n": {
      "type": "structure",
      "members": {
        "blobId": {},
        "path": {},
        "mode": {}
      }
    },
    "S31": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "name",
          "destinationArn",
          "events"
        ],
        "members": {
          "name": {},
          "destinationArn": {},
          "customData": {},
          "branches": {
            "shape": "S35"
          },
          "events": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "S35": {
      "type": "list",
      "member": {}
    }
  }
}
},{}],23:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribePullRequestEvents": {
      "input_token": "nextToken",
      "limit_key": "maxResults",
      "output_token": "nextToken"
    },
    "GetCommentsForComparedCommit": {
      "input_token": "nextToken",
      "limit_key": "maxResults",
      "output_token": "nextToken"
    },
    "GetCommentsForPullRequest": {
      "input_token": "nextToken",
      "limit_key": "maxResults",
      "output_token": "nextToken"
    },
    "GetDifferences": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken"
    },
    "ListBranches": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "branches"
    },
    "ListPullRequests": {
      "input_token": "nextToken",
      "limit_key": "maxResults",
      "output_token": "nextToken"
    },
    "ListRepositories": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "repositories"
    }
  }
}
},{}],24:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2014-10-06",
    "endpointPrefix": "codedeploy",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "CodeDeploy",
    "serviceFullName": "AWS CodeDeploy",
    "serviceId": "CodeDeploy",
    "signatureVersion": "v4",
    "targetPrefix": "CodeDeploy_20141006",
    "timestampFormat": "unixTimestamp",
    "uid": "codedeploy-2014-10-06"
  },
  "operations": {
    "AddTagsToOnPremisesInstances": {
      "input": {
        "type": "structure",
        "required": [
          "tags",
          "instanceNames"
        ],
        "members": {
          "tags": {
            "shape": "S2"
          },
          "instanceNames": {
            "shape": "S6"
          }
        }
      }
    },
    "BatchGetApplicationRevisions": {
      "input": {
        "type": "structure",
        "required": [
          "applicationName",
          "revisions"
        ],
        "members": {
          "applicationName": {},
          "revisions": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "applicationName": {},
          "errorMessage": {},
          "revisions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "revisionLocation": {
                  "shape": "Sb"
                },
                "genericRevisionInfo": {
                  "shape": "St"
                }
              }
            }
          }
        }
      }
    },
    "BatchGetApplications": {
      "input": {
        "type": "structure",
        "required": [
          "applicationNames"
        ],
        "members": {
          "applicationNames": {
            "shape": "Sz"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "applicationsInfo": {
            "type": "list",
            "member": {
              "shape": "S12"
            }
          }
        }
      }
    },
    "BatchGetDeploymentGroups": {
      "input": {
        "type": "structure",
        "required": [
          "applicationName",
          "deploymentGroupNames"
        ],
        "members": {
          "applicationName": {},
          "deploymentGroupNames": {
            "shape": "Sv"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "deploymentGroupsInfo": {
            "type": "list",
            "member": {
              "shape": "S1a"
            }
          },
          "errorMessage": {}
        }
      }
    },
    "BatchGetDeploymentInstances": {
      "input": {
        "type": "structure",
        "required": [
          "deploymentId",
          "instanceIds"
        ],
        "members": {
          "deploymentId": {},
          "instanceIds": {
            "shape": "S2r"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "instancesSummary": {
            "type": "list",
            "member": {
              "shape": "S2v"
            }
          },
          "errorMessage": {}
        }
      }
    },
    "BatchGetDeployments": {
      "input": {
        "type": "structure",
        "required": [
          "deploymentIds"
        ],
        "members": {
          "deploymentIds": {
            "shape": "S38"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "deploymentsInfo": {
            "type": "list",
            "member": {
              "shape": "S3b"
            }
          }
        }
      }
    },
    "BatchGetOnPremisesInstances": {
      "input": {
        "type": "structure",
        "required": [
          "instanceNames"
        ],
        "members": {
          "instanceNames": {
            "shape": "S6"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "instanceInfos": {
            "type": "list",
            "member": {
              "shape": "S3q"
            }
          }
        }
      }
    },
    "ContinueDeployment": {
      "input": {
        "type": "structure",
        "members": {
          "deploymentId": {}
        }
      }
    },
    "CreateApplication": {
      "input": {
        "type": "structure",
        "required": [
          "applicationName"
        ],
        "members": {
          "applicationName": {},
          "computePlatform": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "applicationId": {}
        }
      }
    },
    "CreateDeployment": {
      "input": {
        "type": "structure",
        "required": [
          "applicationName"
        ],
        "members": {
          "applicationName": {},
          "deploymentGroupName": {},
          "revision": {
            "shape": "Sb"
          },
          "deploymentConfigName": {},
          "description": {},
          "ignoreApplicationStopFailures": {
            "type": "boolean"
          },
          "targetInstances": {
            "shape": "S3i"
          },
          "autoRollbackConfiguration": {
            "shape": "S1y"
          },
          "updateOutdatedInstancesOnly": {
            "type": "boolean"
          },
          "fileExistsBehavior": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "deploymentId": {}
        }
      }
    },
    "CreateDeploymentConfig": {
      "input": {
        "type": "structure",
        "required": [
          "deploymentConfigName"
        ],
        "members": {
          "deploymentConfigName": {},
          "minimumHealthyHosts": {
            "shape": "S40"
          },
          "trafficRoutingConfig": {
            "shape": "S43"
          },
          "computePlatform": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "deploymentConfigId": {}
        }
      }
    },
    "CreateDeploymentGroup": {
      "input": {
        "type": "structure",
        "required": [
          "applicationName",
          "deploymentGroupName",
          "serviceRoleArn"
        ],
        "members": {
          "applicationName": {},
          "deploymentGroupName": {},
          "deploymentConfigName": {},
          "ec2TagFilters": {
            "shape": "S1d"
          },
          "onPremisesInstanceTagFilters": {
            "shape": "S1g"
          },
          "autoScalingGroups": {
            "shape": "S3j"
          },
          "serviceRoleArn": {},
          "triggerConfigurations": {
            "shape": "S1o"
          },
          "alarmConfiguration": {
            "shape": "S1u"
          },
          "autoRollbackConfiguration": {
            "shape": "S1y"
          },
          "deploymentStyle": {
            "shape": "S21"
          },
          "blueGreenDeploymentConfiguration": {
            "shape": "S24"
          },
          "loadBalancerInfo": {
            "shape": "S2c"
          },
          "ec2TagSet": {
            "shape": "S2m"
          },
          "onPremisesTagSet": {
            "shape": "S2o"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "deploymentGroupId": {}
        }
      }
    },
    "DeleteApplication": {
      "input": {
        "type": "structure",
        "required": [
          "applicationName"
        ],
        "members": {
          "applicationName": {}
        }
      }
    },
    "DeleteDeploymentConfig": {
      "input": {
        "type": "structure",
        "required": [
          "deploymentConfigName"
        ],
        "members": {
          "deploymentConfigName": {}
        }
      }
    },
    "DeleteDeploymentGroup": {
      "input": {
        "type": "structure",
        "required": [
          "applicationName",
          "deploymentGroupName"
        ],
        "members": {
          "applicationName": {},
          "deploymentGroupName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "hooksNotCleanedUp": {
            "shape": "S1j"
          }
        }
      }
    },
    "DeleteGitHubAccountToken": {
      "input": {
        "type": "structure",
        "members": {
          "tokenName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "tokenName": {}
        }
      }
    },
    "DeregisterOnPremisesInstance": {
      "input": {
        "type": "structure",
        "required": [
          "instanceName"
        ],
        "members": {
          "instanceName": {}
        }
      }
    },
    "GetApplication": {
      "input": {
        "type": "structure",
        "required": [
          "applicationName"
        ],
        "members": {
          "applicationName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "application": {
            "shape": "S12"
          }
        }
      }
    },
    "GetApplicationRevision": {
      "input": {
        "type": "structure",
        "required": [
          "applicationName",
          "revision"
        ],
        "members": {
          "applicationName": {},
          "revision": {
            "shape": "Sb"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "applicationName": {},
          "revision": {
            "shape": "Sb"
          },
          "revisionInfo": {
            "shape": "St"
          }
        }
      }
    },
    "GetDeployment": {
      "input": {
        "type": "structure",
        "required": [
          "deploymentId"
        ],
        "members": {
          "deploymentId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "deploymentInfo": {
            "shape": "S3b"
          }
        }
      }
    },
    "GetDeploymentConfig": {
      "input": {
        "type": "structure",
        "required": [
          "deploymentConfigName"
        ],
        "members": {
          "deploymentConfigName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "deploymentConfigInfo": {
            "type": "structure",
            "members": {
              "deploymentConfigId": {},
              "deploymentConfigName": {},
              "minimumHealthyHosts": {
                "shape": "S40"
              },
              "createTime": {
                "type": "timestamp"
              },
              "computePlatform": {},
              "trafficRoutingConfig": {
                "shape": "S43"
              }
            }
          }
        }
      }
    },
    "GetDeploymentGroup": {
      "input": {
        "type": "structure",
        "required": [
          "applicationName",
          "deploymentGroupName"
        ],
        "members": {
          "applicationName": {},
          "deploymentGroupName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "deploymentGroupInfo": {
            "shape": "S1a"
          }
        }
      }
    },
    "GetDeploymentInstance": {
      "input": {
        "type": "structure",
        "required": [
          "deploymentId",
          "instanceId"
        ],
        "members": {
          "deploymentId": {},
          "instanceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "instanceSummary": {
            "shape": "S2v"
          }
        }
      }
    },
    "GetOnPremisesInstance": {
      "input": {
        "type": "structure",
        "required": [
          "instanceName"
        ],
        "members": {
          "instanceName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "instanceInfo": {
            "shape": "S3q"
          }
        }
      }
    },
    "ListApplicationRevisions": {
      "input": {
        "type": "structure",
        "required": [
          "applicationName"
        ],
        "members": {
          "applicationName": {},
          "sortBy": {},
          "sortOrder": {},
          "s3Bucket": {},
          "s3KeyPrefix": {},
          "deployed": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "revisions": {
            "shape": "Sa"
          },
          "nextToken": {}
        }
      }
    },
    "ListApplications": {
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "applications": {
            "shape": "Sz"
          },
          "nextToken": {}
        }
      }
    },
    "ListDeploymentConfigs": {
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "deploymentConfigsList": {
            "type": "list",
            "member": {}
          },
          "nextToken": {}
        }
      }
    },
    "ListDeploymentGroups": {
      "input": {
        "type": "structure",
        "required": [
          "applicationName"
        ],
        "members": {
          "applicationName": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "applicationName": {},
          "deploymentGroups": {
            "shape": "Sv"
          },
          "nextToken": {}
        }
      }
    },
    "ListDeploymentInstances": {
      "input": {
        "type": "structure",
        "required": [
          "deploymentId"
        ],
        "members": {
          "deploymentId": {},
          "nextToken": {},
          "instanceStatusFilter": {
            "type": "list",
            "member": {}
          },
          "instanceTypeFilter": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "instancesList": {
            "shape": "S2r"
          },
          "nextToken": {}
        }
      }
    },
    "ListDeployments": {
      "input": {
        "type": "structure",
        "members": {
          "applicationName": {},
          "deploymentGroupName": {},
          "includeOnlyStatuses": {
            "type": "list",
            "member": {}
          },
          "createTimeRange": {
            "type": "structure",
            "members": {
              "start": {
                "type": "timestamp"
              },
              "end": {
                "type": "timestamp"
              }
            }
          },
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "deployments": {
            "shape": "S38"
          },
          "nextToken": {}
        }
      }
    },
    "ListGitHubAccountTokenNames": {
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "tokenNameList": {
            "type": "list",
            "member": {}
          },
          "nextToken": {}
        }
      }
    },
    "ListOnPremisesInstances": {
      "input": {
        "type": "structure",
        "members": {
          "registrationStatus": {},
          "tagFilters": {
            "shape": "S1g"
          },
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "instanceNames": {
            "shape": "S6"
          },
          "nextToken": {}
        }
      }
    },
    "PutLifecycleEventHookExecutionStatus": {
      "input": {
        "type": "structure",
        "members": {
          "deploymentId": {},
          "lifecycleEventHookExecutionId": {},
          "status": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "lifecycleEventHookExecutionId": {}
        }
      }
    },
    "RegisterApplicationRevision": {
      "input": {
        "type": "structure",
        "required": [
          "applicationName",
          "revision"
        ],
        "members": {
          "applicationName": {},
          "description": {},
          "revision": {
            "shape": "Sb"
          }
        }
      }
    },
    "RegisterOnPremisesInstance": {
      "input": {
        "type": "structure",
        "required": [
          "instanceName"
        ],
        "members": {
          "instanceName": {},
          "iamSessionArn": {},
          "iamUserArn": {}
        }
      }
    },
    "RemoveTagsFromOnPremisesInstances": {
      "input": {
        "type": "structure",
        "required": [
          "tags",
          "instanceNames"
        ],
        "members": {
          "tags": {
            "shape": "S2"
          },
          "instanceNames": {
            "shape": "S6"
          }
        }
      }
    },
    "SkipWaitTimeForInstanceTermination": {
      "input": {
        "type": "structure",
        "members": {
          "deploymentId": {}
        }
      }
    },
    "StopDeployment": {
      "input": {
        "type": "structure",
        "required": [
          "deploymentId"
        ],
        "members": {
          "deploymentId": {},
          "autoRollbackEnabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "status": {},
          "statusMessage": {}
        }
      }
    },
    "UpdateApplication": {
      "input": {
        "type": "structure",
        "members": {
          "applicationName": {},
          "newApplicationName": {}
        }
      }
    },
    "UpdateDeploymentGroup": {
      "input": {
        "type": "structure",
        "required": [
          "applicationName",
          "currentDeploymentGroupName"
        ],
        "members": {
          "applicationName": {},
          "currentDeploymentGroupName": {},
          "newDeploymentGroupName": {},
          "deploymentConfigName": {},
          "ec2TagFilters": {
            "shape": "S1d"
          },
          "onPremisesInstanceTagFilters": {
            "shape": "S1g"
          },
          "autoScalingGroups": {
            "shape": "S3j"
          },
          "serviceRoleArn": {},
          "triggerConfigurations": {
            "shape": "S1o"
          },
          "alarmConfiguration": {
            "shape": "S1u"
          },
          "autoRollbackConfiguration": {
            "shape": "S1y"
          },
          "deploymentStyle": {
            "shape": "S21"
          },
          "blueGreenDeploymentConfiguration": {
            "shape": "S24"
          },
          "loadBalancerInfo": {
            "shape": "S2c"
          },
          "ec2TagSet": {
            "shape": "S2m"
          },
          "onPremisesTagSet": {
            "shape": "S2o"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "hooksNotCleanedUp": {
            "shape": "S1j"
          }
        }
      }
    }
  },
  "shapes": {
    "S2": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "S6": {
      "type": "list",
      "member": {}
    },
    "Sa": {
      "type": "list",
      "member": {
        "shape": "Sb"
      }
    },
    "Sb": {
      "type": "structure",
      "members": {
        "revisionType": {},
        "s3Location": {
          "type": "structure",
          "members": {
            "bucket": {},
            "key": {},
            "bundleType": {},
            "version": {},
            "eTag": {}
          }
        },
        "gitHubLocation": {
          "type": "structure",
          "members": {
            "repository": {},
            "commitId": {}
          }
        },
        "string": {
          "type": "structure",
          "members": {
            "content": {},
            "sha256": {}
          }
        }
      }
    },
    "St": {
      "type": "structure",
      "members": {
        "description": {},
        "deploymentGroups": {
          "shape": "Sv"
        },
        "firstUsedTime": {
          "type": "timestamp"
        },
        "lastUsedTime": {
          "type": "timestamp"
        },
        "registerTime": {
          "type": "timestamp"
        }
      }
    },
    "Sv": {
      "type": "list",
      "member": {}
    },
    "Sz": {
      "type": "list",
      "member": {}
    },
    "S12": {
      "type": "structure",
      "members": {
        "applicationId": {},
        "applicationName": {},
        "createTime": {
          "type": "timestamp"
        },
        "linkedToGitHub": {
          "type": "boolean"
        },
        "gitHubAccountName": {},
        "computePlatform": {}
      }
    },
    "S1a": {
      "type": "structure",
      "members": {
        "applicationName": {},
        "deploymentGroupId": {},
        "deploymentGroupName": {},
        "deploymentConfigName": {},
        "ec2TagFilters": {
          "shape": "S1d"
        },
        "onPremisesInstanceTagFilters": {
          "shape": "S1g"
        },
        "autoScalingGroups": {
          "shape": "S1j"
        },
        "serviceRoleArn": {},
        "targetRevision": {
          "shape": "Sb"
        },
        "triggerConfigurations": {
          "shape": "S1o"
        },
        "alarmConfiguration": {
          "shape": "S1u"
        },
        "autoRollbackConfiguration": {
          "shape": "S1y"
        },
        "deploymentStyle": {
          "shape": "S21"
        },
        "blueGreenDeploymentConfiguration": {
          "shape": "S24"
        },
        "loadBalancerInfo": {
          "shape": "S2c"
        },
        "lastSuccessfulDeployment": {
          "shape": "S2j"
        },
        "lastAttemptedDeployment": {
          "shape": "S2j"
        },
        "ec2TagSet": {
          "shape": "S2m"
        },
        "onPremisesTagSet": {
          "shape": "S2o"
        },
        "computePlatform": {}
      }
    },
    "S1d": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {},
          "Type": {}
        }
      }
    },
    "S1g": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {},
          "Type": {}
        }
      }
    },
    "S1j": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "name": {},
          "hook": {}
        }
      }
    },
    "S1o": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "triggerName": {},
          "triggerTargetArn": {},
          "triggerEvents": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "S1u": {
      "type": "structure",
      "members": {
        "enabled": {
          "type": "boolean"
        },
        "ignorePollAlarmFailure": {
          "type": "boolean"
        },
        "alarms": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "name": {}
            }
          }
        }
      }
    },
    "S1y": {
      "type": "structure",
      "members": {
        "enabled": {
          "type": "boolean"
        },
        "events": {
          "type": "list",
          "member": {}
        }
      }
    },
    "S21": {
      "type": "structure",
      "members": {
        "deploymentType": {},
        "deploymentOption": {}
      }
    },
    "S24": {
      "type": "structure",
      "members": {
        "terminateBlueInstancesOnDeploymentSuccess": {
          "type": "structure",
          "members": {
            "action": {},
            "terminationWaitTimeInMinutes": {
              "type": "integer"
            }
          }
        },
        "deploymentReadyOption": {
          "type": "structure",
          "members": {
            "actionOnTimeout": {},
            "waitTimeInMinutes": {
              "type": "integer"
            }
          }
        },
        "greenFleetProvisioningOption": {
          "type": "structure",
          "members": {
            "action": {}
          }
        }
      }
    },
    "S2c": {
      "type": "structure",
      "members": {
        "elbInfoList": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "name": {}
            }
          }
        },
        "targetGroupInfoList": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "name": {}
            }
          }
        }
      }
    },
    "S2j": {
      "type": "structure",
      "members": {
        "deploymentId": {},
        "status": {},
        "endTime": {
          "type": "timestamp"
        },
        "createTime": {
          "type": "timestamp"
        }
      }
    },
    "S2m": {
      "type": "structure",
      "members": {
        "ec2TagSetList": {
          "type": "list",
          "member": {
            "shape": "S1d"
          }
        }
      }
    },
    "S2o": {
      "type": "structure",
      "members": {
        "onPremisesTagSetList": {
          "type": "list",
          "member": {
            "shape": "S1g"
          }
        }
      }
    },
    "S2r": {
      "type": "list",
      "member": {}
    },
    "S2v": {
      "type": "structure",
      "members": {
        "deploymentId": {},
        "instanceId": {},
        "status": {},
        "lastUpdatedAt": {
          "type": "timestamp"
        },
        "lifecycleEvents": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "lifecycleEventName": {},
              "diagnostics": {
                "type": "structure",
                "members": {
                  "errorCode": {},
                  "scriptName": {},
                  "message": {},
                  "logTail": {}
                }
              },
              "startTime": {
                "type": "timestamp"
              },
              "endTime": {
                "type": "timestamp"
              },
              "status": {}
            }
          }
        },
        "instanceType": {}
      }
    },
    "S38": {
      "type": "list",
      "member": {}
    },
    "S3b": {
      "type": "structure",
      "members": {
        "applicationName": {},
        "deploymentGroupName": {},
        "deploymentConfigName": {},
        "deploymentId": {},
        "previousRevision": {
          "shape": "Sb"
        },
        "revision": {
          "shape": "Sb"
        },
        "status": {},
        "errorInformation": {
          "type": "structure",
          "members": {
            "code": {},
            "message": {}
          }
        },
        "createTime": {
          "type": "timestamp"
        },
        "startTime": {
          "type": "timestamp"
        },
        "completeTime": {
          "type": "timestamp"
        },
        "deploymentOverview": {
          "type": "structure",
          "members": {
            "Pending": {
              "type": "long"
            },
            "InProgress": {
              "type": "long"
            },
            "Succeeded": {
              "type": "long"
            },
            "Failed": {
              "type": "long"
            },
            "Skipped": {
              "type": "long"
            },
            "Ready": {
              "type": "long"
            }
          }
        },
        "description": {},
        "creator": {},
        "ignoreApplicationStopFailures": {
          "type": "boolean"
        },
        "autoRollbackConfiguration": {
          "shape": "S1y"
        },
        "updateOutdatedInstancesOnly": {
          "type": "boolean"
        },
        "rollbackInfo": {
          "type": "structure",
          "members": {
            "rollbackDeploymentId": {},
            "rollbackTriggeringDeploymentId": {},
            "rollbackMessage": {}
          }
        },
        "deploymentStyle": {
          "shape": "S21"
        },
        "targetInstances": {
          "shape": "S3i"
        },
        "instanceTerminationWaitTimeStarted": {
          "type": "boolean"
        },
        "blueGreenDeploymentConfiguration": {
          "shape": "S24"
        },
        "loadBalancerInfo": {
          "shape": "S2c"
        },
        "additionalDeploymentStatusInfo": {
          "type": "string",
          "deprecated": true
        },
        "fileExistsBehavior": {},
        "deploymentStatusMessages": {
          "type": "list",
          "member": {}
        },
        "computePlatform": {}
      }
    },
    "S3i": {
      "type": "structure",
      "members": {
        "tagFilters": {
          "shape": "S1d"
        },
        "autoScalingGroups": {
          "shape": "S3j"
        },
        "ec2TagSet": {
          "shape": "S2m"
        }
      }
    },
    "S3j": {
      "type": "list",
      "member": {}
    },
    "S3q": {
      "type": "structure",
      "members": {
        "instanceName": {},
        "iamSessionArn": {},
        "iamUserArn": {},
        "instanceArn": {},
        "registerTime": {
          "type": "timestamp"
        },
        "deregisterTime": {
          "type": "timestamp"
        },
        "tags": {
          "shape": "S2"
        }
      }
    },
    "S40": {
      "type": "structure",
      "members": {
        "value": {
          "type": "integer"
        },
        "type": {}
      }
    },
    "S43": {
      "type": "structure",
      "members": {
        "type": {},
        "timeBasedCanary": {
          "type": "structure",
          "members": {
            "canaryPercentage": {
              "type": "integer"
            },
            "canaryInterval": {
              "type": "integer"
            }
          }
        },
        "timeBasedLinear": {
          "type": "structure",
          "members": {
            "linearPercentage": {
              "type": "integer"
            },
            "linearInterval": {
              "type": "integer"
            }
          }
        }
      }
    }
  }
}
},{}],25:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListApplicationRevisions": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "revisions"
    },
    "ListApplications": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "applications"
    },
    "ListDeploymentConfigs": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "deploymentConfigsList"
    },
    "ListDeploymentGroups": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "deploymentGroups"
    },
    "ListDeploymentInstances": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "instancesList"
    },
    "ListDeployments": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "deployments"
    }
  }
}
},{}],26:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "DeploymentSuccessful": {
      "delay": 15,
      "operation": "GetDeployment",
      "maxAttempts": 120,
      "acceptors": [
        {
          "expected": "Succeeded",
          "matcher": "path",
          "state": "success",
          "argument": "deploymentInfo.status"
        },
        {
          "expected": "Failed",
          "matcher": "path",
          "state": "failure",
          "argument": "deploymentInfo.status"
        },
        {
          "expected": "Stopped",
          "matcher": "path",
          "state": "failure",
          "argument": "deploymentInfo.status"
        }
      ]
    }
  }
}

},{}],27:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-07-09",
    "endpointPrefix": "codepipeline",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "CodePipeline",
    "serviceFullName": "AWS CodePipeline",
    "signatureVersion": "v4",
    "targetPrefix": "CodePipeline_20150709",
    "uid": "codepipeline-2015-07-09"
  },
  "operations": {
    "AcknowledgeJob": {
      "input": {
        "type": "structure",
        "required": [
          "jobId",
          "nonce"
        ],
        "members": {
          "jobId": {},
          "nonce": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "status": {}
        }
      }
    },
    "AcknowledgeThirdPartyJob": {
      "input": {
        "type": "structure",
        "required": [
          "jobId",
          "nonce",
          "clientToken"
        ],
        "members": {
          "jobId": {},
          "nonce": {},
          "clientToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "status": {}
        }
      }
    },
    "CreateCustomActionType": {
      "input": {
        "type": "structure",
        "required": [
          "category",
          "provider",
          "version",
          "inputArtifactDetails",
          "outputArtifactDetails"
        ],
        "members": {
          "category": {},
          "provider": {},
          "version": {},
          "settings": {
            "shape": "Se"
          },
          "configurationProperties": {
            "shape": "Sh"
          },
          "inputArtifactDetails": {
            "shape": "Sn"
          },
          "outputArtifactDetails": {
            "shape": "Sn"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "actionType"
        ],
        "members": {
          "actionType": {
            "shape": "Sr"
          }
        }
      }
    },
    "CreatePipeline": {
      "input": {
        "type": "structure",
        "required": [
          "pipeline"
        ],
        "members": {
          "pipeline": {
            "shape": "Sv"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "pipeline": {
            "shape": "Sv"
          }
        }
      }
    },
    "DeleteCustomActionType": {
      "input": {
        "type": "structure",
        "required": [
          "category",
          "provider",
          "version"
        ],
        "members": {
          "category": {},
          "provider": {},
          "version": {}
        }
      }
    },
    "DeletePipeline": {
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {}
        }
      }
    },
    "DisableStageTransition": {
      "input": {
        "type": "structure",
        "required": [
          "pipelineName",
          "stageName",
          "transitionType",
          "reason"
        ],
        "members": {
          "pipelineName": {},
          "stageName": {},
          "transitionType": {},
          "reason": {}
        }
      }
    },
    "EnableStageTransition": {
      "input": {
        "type": "structure",
        "required": [
          "pipelineName",
          "stageName",
          "transitionType"
        ],
        "members": {
          "pipelineName": {},
          "stageName": {},
          "transitionType": {}
        }
      }
    },
    "GetJobDetails": {
      "input": {
        "type": "structure",
        "required": [
          "jobId"
        ],
        "members": {
          "jobId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "jobDetails": {
            "type": "structure",
            "members": {
              "id": {},
              "data": {
                "shape": "S1x"
              },
              "accountId": {}
            }
          }
        }
      }
    },
    "GetPipeline": {
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {},
          "version": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "pipeline": {
            "shape": "Sv"
          },
          "metadata": {
            "type": "structure",
            "members": {
              "pipelineArn": {},
              "created": {
                "type": "timestamp"
              },
              "updated": {
                "type": "timestamp"
              }
            }
          }
        }
      }
    },
    "GetPipelineExecution": {
      "input": {
        "type": "structure",
        "required": [
          "pipelineName",
          "pipelineExecutionId"
        ],
        "members": {
          "pipelineName": {},
          "pipelineExecutionId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "pipelineExecution": {
            "type": "structure",
            "members": {
              "pipelineName": {},
              "pipelineVersion": {
                "type": "integer"
              },
              "pipelineExecutionId": {},
              "status": {},
              "artifactRevisions": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "name": {},
                    "revisionId": {},
                    "revisionChangeIdentifier": {},
                    "revisionSummary": {},
                    "created": {
                      "type": "timestamp"
                    },
                    "revisionUrl": {}
                  }
                }
              }
            }
          }
        }
      }
    },
    "GetPipelineState": {
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "pipelineName": {},
          "pipelineVersion": {
            "type": "integer"
          },
          "stageStates": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "stageName": {},
                "inboundTransitionState": {
                  "type": "structure",
                  "members": {
                    "enabled": {
                      "type": "boolean"
                    },
                    "lastChangedBy": {},
                    "lastChangedAt": {
                      "type": "timestamp"
                    },
                    "disabledReason": {}
                  }
                },
                "actionStates": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "actionName": {},
                      "currentRevision": {
                        "shape": "S34"
                      },
                      "latestExecution": {
                        "type": "structure",
                        "members": {
                          "status": {},
                          "summary": {},
                          "lastStatusChange": {
                            "type": "timestamp"
                          },
                          "token": {},
                          "lastUpdatedBy": {},
                          "externalExecutionId": {},
                          "externalExecutionUrl": {},
                          "percentComplete": {
                            "type": "integer"
                          },
                          "errorDetails": {
                            "type": "structure",
                            "members": {
                              "code": {},
                              "message": {}
                            }
                          }
                        }
                      },
                      "entityUrl": {},
                      "revisionUrl": {}
                    }
                  }
                },
                "latestExecution": {
                  "type": "structure",
                  "required": [
                    "pipelineExecutionId",
                    "status"
                  ],
                  "members": {
                    "pipelineExecutionId": {},
                    "status": {}
                  }
                }
              }
            }
          },
          "created": {
            "type": "timestamp"
          },
          "updated": {
            "type": "timestamp"
          }
        }
      }
    },
    "GetThirdPartyJobDetails": {
      "input": {
        "type": "structure",
        "required": [
          "jobId",
          "clientToken"
        ],
        "members": {
          "jobId": {},
          "clientToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "jobDetails": {
            "type": "structure",
            "members": {
              "id": {},
              "data": {
                "type": "structure",
                "members": {
                  "actionTypeId": {
                    "shape": "Ss"
                  },
                  "actionConfiguration": {
                    "shape": "S1y"
                  },
                  "pipelineContext": {
                    "shape": "S1z"
                  },
                  "inputArtifacts": {
                    "shape": "S22"
                  },
                  "outputArtifacts": {
                    "shape": "S22"
                  },
                  "artifactCredentials": {
                    "shape": "S2a"
                  },
                  "continuationToken": {},
                  "encryptionKey": {
                    "shape": "S11"
                  }
                }
              },
              "nonce": {}
            }
          }
        }
      }
    },
    "ListActionTypes": {
      "input": {
        "type": "structure",
        "members": {
          "actionOwnerFilter": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "actionTypes"
        ],
        "members": {
          "actionTypes": {
            "type": "list",
            "member": {
              "shape": "Sr"
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListPipelineExecutions": {
      "input": {
        "type": "structure",
        "required": [
          "pipelineName"
        ],
        "members": {
          "pipelineName": {},
          "maxResults": {
            "type": "integer"
          },
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "pipelineExecutionSummaries": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "pipelineExecutionId": {},
                "status": {},
                "startTime": {
                  "type": "timestamp"
                },
                "lastUpdateTime": {
                  "type": "timestamp"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListPipelines": {
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "pipelines": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "name": {},
                "version": {
                  "type": "integer"
                },
                "created": {
                  "type": "timestamp"
                },
                "updated": {
                  "type": "timestamp"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "PollForJobs": {
      "input": {
        "type": "structure",
        "required": [
          "actionTypeId"
        ],
        "members": {
          "actionTypeId": {
            "shape": "Ss"
          },
          "maxBatchSize": {
            "type": "integer"
          },
          "queryParam": {
            "type": "map",
            "key": {},
            "value": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "jobs": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "id": {},
                "data": {
                  "shape": "S1x"
                },
                "nonce": {},
                "accountId": {}
              }
            }
          }
        }
      }
    },
    "PollForThirdPartyJobs": {
      "input": {
        "type": "structure",
        "required": [
          "actionTypeId"
        ],
        "members": {
          "actionTypeId": {
            "shape": "Ss"
          },
          "maxBatchSize": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "jobs": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "clientId": {},
                "jobId": {}
              }
            }
          }
        }
      }
    },
    "PutActionRevision": {
      "input": {
        "type": "structure",
        "required": [
          "pipelineName",
          "stageName",
          "actionName",
          "actionRevision"
        ],
        "members": {
          "pipelineName": {},
          "stageName": {},
          "actionName": {},
          "actionRevision": {
            "shape": "S34"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "newRevision": {
            "type": "boolean"
          },
          "pipelineExecutionId": {}
        }
      }
    },
    "PutApprovalResult": {
      "input": {
        "type": "structure",
        "required": [
          "pipelineName",
          "stageName",
          "actionName",
          "result",
          "token"
        ],
        "members": {
          "pipelineName": {},
          "stageName": {},
          "actionName": {},
          "result": {
            "type": "structure",
            "required": [
              "summary",
              "status"
            ],
            "members": {
              "summary": {},
              "status": {}
            }
          },
          "token": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "approvedAt": {
            "type": "timestamp"
          }
        }
      }
    },
    "PutJobFailureResult": {
      "input": {
        "type": "structure",
        "required": [
          "jobId",
          "failureDetails"
        ],
        "members": {
          "jobId": {},
          "failureDetails": {
            "shape": "S4j"
          }
        }
      }
    },
    "PutJobSuccessResult": {
      "input": {
        "type": "structure",
        "required": [
          "jobId"
        ],
        "members": {
          "jobId": {},
          "currentRevision": {
            "shape": "S4m"
          },
          "continuationToken": {},
          "executionDetails": {
            "shape": "S4o"
          }
        }
      }
    },
    "PutThirdPartyJobFailureResult": {
      "input": {
        "type": "structure",
        "required": [
          "jobId",
          "clientToken",
          "failureDetails"
        ],
        "members": {
          "jobId": {},
          "clientToken": {},
          "failureDetails": {
            "shape": "S4j"
          }
        }
      }
    },
    "PutThirdPartyJobSuccessResult": {
      "input": {
        "type": "structure",
        "required": [
          "jobId",
          "clientToken"
        ],
        "members": {
          "jobId": {},
          "clientToken": {},
          "currentRevision": {
            "shape": "S4m"
          },
          "continuationToken": {},
          "executionDetails": {
            "shape": "S4o"
          }
        }
      }
    },
    "RetryStageExecution": {
      "input": {
        "type": "structure",
        "required": [
          "pipelineName",
          "stageName",
          "pipelineExecutionId",
          "retryMode"
        ],
        "members": {
          "pipelineName": {},
          "stageName": {},
          "pipelineExecutionId": {},
          "retryMode": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "pipelineExecutionId": {}
        }
      }
    },
    "StartPipelineExecution": {
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "pipelineExecutionId": {}
        }
      }
    },
    "UpdatePipeline": {
      "input": {
        "type": "structure",
        "required": [
          "pipeline"
        ],
        "members": {
          "pipeline": {
            "shape": "Sv"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "pipeline": {
            "shape": "Sv"
          }
        }
      }
    }
  },
  "shapes": {
    "Se": {
      "type": "structure",
      "members": {
        "thirdPartyConfigurationUrl": {},
        "entityUrlTemplate": {},
        "executionUrlTemplate": {},
        "revisionUrlTemplate": {}
      }
    },
    "Sh": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "name",
          "required",
          "key",
          "secret"
        ],
        "members": {
          "name": {},
          "required": {
            "type": "boolean"
          },
          "key": {
            "type": "boolean"
          },
          "secret": {
            "type": "boolean"
          },
          "queryable": {
            "type": "boolean"
          },
          "description": {},
          "type": {}
        }
      }
    },
    "Sn": {
      "type": "structure",
      "required": [
        "minimumCount",
        "maximumCount"
      ],
      "members": {
        "minimumCount": {
          "type": "integer"
        },
        "maximumCount": {
          "type": "integer"
        }
      }
    },
    "Sr": {
      "type": "structure",
      "required": [
        "id",
        "inputArtifactDetails",
        "outputArtifactDetails"
      ],
      "members": {
        "id": {
          "shape": "Ss"
        },
        "settings": {
          "shape": "Se"
        },
        "actionConfigurationProperties": {
          "shape": "Sh"
        },
        "inputArtifactDetails": {
          "shape": "Sn"
        },
        "outputArtifactDetails": {
          "shape": "Sn"
        }
      }
    },
    "Ss": {
      "type": "structure",
      "required": [
        "category",
        "owner",
        "provider",
        "version"
      ],
      "members": {
        "category": {},
        "owner": {},
        "provider": {},
        "version": {}
      }
    },
    "Sv": {
      "type": "structure",
      "required": [
        "name",
        "roleArn",
        "artifactStore",
        "stages"
      ],
      "members": {
        "name": {},
        "roleArn": {},
        "artifactStore": {
          "type": "structure",
          "required": [
            "type",
            "location"
          ],
          "members": {
            "type": {},
            "location": {},
            "encryptionKey": {
              "shape": "S11"
            }
          }
        },
        "stages": {
          "type": "list",
          "member": {
            "type": "structure",
            "required": [
              "name",
              "actions"
            ],
            "members": {
              "name": {},
              "blockers": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "required": [
                    "name",
                    "type"
                  ],
                  "members": {
                    "name": {},
                    "type": {}
                  }
                }
              },
              "actions": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "required": [
                    "name",
                    "actionTypeId"
                  ],
                  "members": {
                    "name": {},
                    "actionTypeId": {
                      "shape": "Ss"
                    },
                    "runOrder": {
                      "type": "integer"
                    },
                    "configuration": {
                      "shape": "S1f"
                    },
                    "outputArtifacts": {
                      "type": "list",
                      "member": {
                        "type": "structure",
                        "required": [
                          "name"
                        ],
                        "members": {
                          "name": {}
                        }
                      }
                    },
                    "inputArtifacts": {
                      "type": "list",
                      "member": {
                        "type": "structure",
                        "required": [
                          "name"
                        ],
                        "members": {
                          "name": {}
                        }
                      }
                    },
                    "roleArn": {}
                  }
                }
              }
            }
          }
        },
        "version": {
          "type": "integer"
        }
      }
    },
    "S11": {
      "type": "structure",
      "required": [
        "id",
        "type"
      ],
      "members": {
        "id": {},
        "type": {}
      }
    },
    "S1f": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S1x": {
      "type": "structure",
      "members": {
        "actionTypeId": {
          "shape": "Ss"
        },
        "actionConfiguration": {
          "shape": "S1y"
        },
        "pipelineContext": {
          "shape": "S1z"
        },
        "inputArtifacts": {
          "shape": "S22"
        },
        "outputArtifacts": {
          "shape": "S22"
        },
        "artifactCredentials": {
          "shape": "S2a"
        },
        "continuationToken": {},
        "encryptionKey": {
          "shape": "S11"
        }
      }
    },
    "S1y": {
      "type": "structure",
      "members": {
        "configuration": {
          "shape": "S1f"
        }
      }
    },
    "S1z": {
      "type": "structure",
      "members": {
        "pipelineName": {},
        "stage": {
          "type": "structure",
          "members": {
            "name": {}
          }
        },
        "action": {
          "type": "structure",
          "members": {
            "name": {}
          }
        }
      }
    },
    "S22": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "name": {},
          "revision": {},
          "location": {
            "type": "structure",
            "members": {
              "type": {},
              "s3Location": {
                "type": "structure",
                "required": [
                  "bucketName",
                  "objectKey"
                ],
                "members": {
                  "bucketName": {},
                  "objectKey": {}
                }
              }
            }
          }
        }
      }
    },
    "S2a": {
      "type": "structure",
      "required": [
        "accessKeyId",
        "secretAccessKey",
        "sessionToken"
      ],
      "members": {
        "accessKeyId": {},
        "secretAccessKey": {},
        "sessionToken": {}
      },
      "sensitive": true
    },
    "S34": {
      "type": "structure",
      "required": [
        "revisionId",
        "revisionChangeId",
        "created"
      ],
      "members": {
        "revisionId": {},
        "revisionChangeId": {},
        "created": {
          "type": "timestamp"
        }
      }
    },
    "S4j": {
      "type": "structure",
      "required": [
        "type",
        "message"
      ],
      "members": {
        "type": {},
        "message": {},
        "externalExecutionId": {}
      }
    },
    "S4m": {
      "type": "structure",
      "required": [
        "revision",
        "changeIdentifier"
      ],
      "members": {
        "revision": {},
        "changeIdentifier": {},
        "created": {
          "type": "timestamp"
        },
        "revisionSummary": {}
      }
    },
    "S4o": {
      "type": "structure",
      "members": {
        "summary": {},
        "externalExecutionId": {},
        "percentComplete": {
          "type": "integer"
        }
      }
    }
  }
}
},{}],28:[function(require,module,exports){
arguments[4][19][0].apply(exports,arguments)
},{"dup":19}],29:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2014-06-30",
    "endpointPrefix": "cognito-identity",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceFullName": "Amazon Cognito Identity",
    "signatureVersion": "v4",
    "targetPrefix": "AWSCognitoIdentityService",
    "uid": "cognito-identity-2014-06-30"
  },
  "operations": {
    "CreateIdentityPool": {
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolName",
          "AllowUnauthenticatedIdentities"
        ],
        "members": {
          "IdentityPoolName": {},
          "AllowUnauthenticatedIdentities": {
            "type": "boolean"
          },
          "SupportedLoginProviders": {
            "shape": "S4"
          },
          "DeveloperProviderName": {},
          "OpenIdConnectProviderARNs": {
            "shape": "S8"
          },
          "CognitoIdentityProviders": {
            "shape": "Sa"
          },
          "SamlProviderARNs": {
            "shape": "Sf"
          }
        }
      },
      "output": {
        "shape": "Sg"
      }
    },
    "DeleteIdentities": {
      "input": {
        "type": "structure",
        "required": [
          "IdentityIdsToDelete"
        ],
        "members": {
          "IdentityIdsToDelete": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UnprocessedIdentityIds": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "IdentityId": {},
                "ErrorCode": {}
              }
            }
          }
        }
      }
    },
    "DeleteIdentityPool": {
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId"
        ],
        "members": {
          "IdentityPoolId": {}
        }
      }
    },
    "DescribeIdentity": {
      "input": {
        "type": "structure",
        "required": [
          "IdentityId"
        ],
        "members": {
          "IdentityId": {}
        }
      },
      "output": {
        "shape": "Sr"
      }
    },
    "DescribeIdentityPool": {
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId"
        ],
        "members": {
          "IdentityPoolId": {}
        }
      },
      "output": {
        "shape": "Sg"
      }
    },
    "GetCredentialsForIdentity": {
      "input": {
        "type": "structure",
        "required": [
          "IdentityId"
        ],
        "members": {
          "IdentityId": {},
          "Logins": {
            "shape": "Sw"
          },
          "CustomRoleArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IdentityId": {},
          "Credentials": {
            "type": "structure",
            "members": {
              "AccessKeyId": {},
              "SecretKey": {},
              "SessionToken": {},
              "Expiration": {
                "type": "timestamp"
              }
            }
          }
        }
      }
    },
    "GetId": {
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId"
        ],
        "members": {
          "AccountId": {},
          "IdentityPoolId": {},
          "Logins": {
            "shape": "Sw"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IdentityId": {}
        }
      }
    },
    "GetIdentityPoolRoles": {
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId"
        ],
        "members": {
          "IdentityPoolId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IdentityPoolId": {},
          "Roles": {
            "shape": "S18"
          },
          "RoleMappings": {
            "shape": "S1a"
          }
        }
      }
    },
    "GetOpenIdToken": {
      "input": {
        "type": "structure",
        "required": [
          "IdentityId"
        ],
        "members": {
          "IdentityId": {},
          "Logins": {
            "shape": "Sw"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IdentityId": {},
          "Token": {}
        }
      }
    },
    "GetOpenIdTokenForDeveloperIdentity": {
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId",
          "Logins"
        ],
        "members": {
          "IdentityPoolId": {},
          "IdentityId": {},
          "Logins": {
            "shape": "Sw"
          },
          "TokenDuration": {
            "type": "long"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IdentityId": {},
          "Token": {}
        }
      }
    },
    "ListIdentities": {
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId",
          "MaxResults"
        ],
        "members": {
          "IdentityPoolId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "HideDisabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IdentityPoolId": {},
          "Identities": {
            "type": "list",
            "member": {
              "shape": "Sr"
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListIdentityPools": {
      "input": {
        "type": "structure",
        "required": [
          "MaxResults"
        ],
        "members": {
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IdentityPools": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "IdentityPoolId": {},
                "IdentityPoolName": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "LookupDeveloperIdentity": {
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId"
        ],
        "members": {
          "IdentityPoolId": {},
          "IdentityId": {},
          "DeveloperUserIdentifier": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IdentityId": {},
          "DeveloperUserIdentifierList": {
            "type": "list",
            "member": {}
          },
          "NextToken": {}
        }
      }
    },
    "MergeDeveloperIdentities": {
      "input": {
        "type": "structure",
        "required": [
          "SourceUserIdentifier",
          "DestinationUserIdentifier",
          "DeveloperProviderName",
          "IdentityPoolId"
        ],
        "members": {
          "SourceUserIdentifier": {},
          "DestinationUserIdentifier": {},
          "DeveloperProviderName": {},
          "IdentityPoolId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IdentityId": {}
        }
      }
    },
    "SetIdentityPoolRoles": {
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId",
          "Roles"
        ],
        "members": {
          "IdentityPoolId": {},
          "Roles": {
            "shape": "S18"
          },
          "RoleMappings": {
            "shape": "S1a"
          }
        }
      }
    },
    "UnlinkDeveloperIdentity": {
      "input": {
        "type": "structure",
        "required": [
          "IdentityId",
          "IdentityPoolId",
          "DeveloperProviderName",
          "DeveloperUserIdentifier"
        ],
        "members": {
          "IdentityId": {},
          "IdentityPoolId": {},
          "DeveloperProviderName": {},
          "DeveloperUserIdentifier": {}
        }
      }
    },
    "UnlinkIdentity": {
      "input": {
        "type": "structure",
        "required": [
          "IdentityId",
          "Logins",
          "LoginsToRemove"
        ],
        "members": {
          "IdentityId": {},
          "Logins": {
            "shape": "Sw"
          },
          "LoginsToRemove": {
            "shape": "Ss"
          }
        }
      }
    },
    "UpdateIdentityPool": {
      "input": {
        "shape": "Sg"
      },
      "output": {
        "shape": "Sg"
      }
    }
  },
  "shapes": {
    "S4": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S8": {
      "type": "list",
      "member": {}
    },
    "Sa": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "ProviderName": {},
          "ClientId": {},
          "ServerSideTokenCheck": {
            "type": "boolean"
          }
        }
      }
    },
    "Sf": {
      "type": "list",
      "member": {}
    },
    "Sg": {
      "type": "structure",
      "required": [
        "IdentityPoolId",
        "IdentityPoolName",
        "AllowUnauthenticatedIdentities"
      ],
      "members": {
        "IdentityPoolId": {},
        "IdentityPoolName": {},
        "AllowUnauthenticatedIdentities": {
          "type": "boolean"
        },
        "SupportedLoginProviders": {
          "shape": "S4"
        },
        "DeveloperProviderName": {},
        "OpenIdConnectProviderARNs": {
          "shape": "S8"
        },
        "CognitoIdentityProviders": {
          "shape": "Sa"
        },
        "SamlProviderARNs": {
          "shape": "Sf"
        }
      }
    },
    "Sr": {
      "type": "structure",
      "members": {
        "IdentityId": {},
        "Logins": {
          "shape": "Ss"
        },
        "CreationDate": {
          "type": "timestamp"
        },
        "LastModifiedDate": {
          "type": "timestamp"
        }
      }
    },
    "Ss": {
      "type": "list",
      "member": {}
    },
    "Sw": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S18": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S1a": {
      "type": "map",
      "key": {},
      "value": {
        "type": "structure",
        "required": [
          "Type"
        ],
        "members": {
          "Type": {},
          "AmbiguousRoleResolution": {},
          "RulesConfiguration": {
            "type": "structure",
            "required": [
              "Rules"
            ],
            "members": {
              "Rules": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "required": [
                    "Claim",
                    "MatchType",
                    "Value",
                    "RoleARN"
                  ],
                  "members": {
                    "Claim": {},
                    "MatchType": {},
                    "Value": {},
                    "RoleARN": {}
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
},{}],30:[function(require,module,exports){
arguments[4][19][0].apply(exports,arguments)
},{"dup":19}],31:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2016-04-18",
    "endpointPrefix": "cognito-idp",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceFullName": "Amazon Cognito Identity Provider",
    "signatureVersion": "v4",
    "targetPrefix": "AWSCognitoIdentityProviderService",
    "uid": "cognito-idp-2016-04-18"
  },
  "operations": {
    "AddCustomAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "CustomAttributes"
        ],
        "members": {
          "UserPoolId": {},
          "CustomAttributes": {
            "type": "list",
            "member": {
              "shape": "S4"
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AdminAddUserToGroup": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username",
          "GroupName"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          },
          "GroupName": {}
        }
      }
    },
    "AdminConfirmSignUp": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AdminCreateUser": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          },
          "UserAttributes": {
            "shape": "Si"
          },
          "ValidationData": {
            "shape": "Si"
          },
          "TemporaryPassword": {
            "shape": "Sm"
          },
          "ForceAliasCreation": {
            "type": "boolean"
          },
          "MessageAction": {},
          "DesiredDeliveryMediums": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "User": {
            "shape": "Ss"
          }
        }
      }
    },
    "AdminDeleteUser": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          }
        }
      }
    },
    "AdminDeleteUserAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username",
          "UserAttributeNames"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          },
          "UserAttributeNames": {
            "shape": "Sz"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AdminDisableProviderForUser": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "User"
        ],
        "members": {
          "UserPoolId": {},
          "User": {
            "shape": "S12"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AdminDisableUser": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AdminEnableUser": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AdminForgetDevice": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username",
          "DeviceKey"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          },
          "DeviceKey": {}
        }
      }
    },
    "AdminGetDevice": {
      "input": {
        "type": "structure",
        "required": [
          "DeviceKey",
          "UserPoolId",
          "Username"
        ],
        "members": {
          "DeviceKey": {},
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Device"
        ],
        "members": {
          "Device": {
            "shape": "S1d"
          }
        }
      }
    },
    "AdminGetUser": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Username"
        ],
        "members": {
          "Username": {
            "shape": "Sd"
          },
          "UserAttributes": {
            "shape": "Si"
          },
          "UserCreateDate": {
            "type": "timestamp"
          },
          "UserLastModifiedDate": {
            "type": "timestamp"
          },
          "Enabled": {
            "type": "boolean"
          },
          "UserStatus": {},
          "MFAOptions": {
            "shape": "Sv"
          },
          "PreferredMfaSetting": {},
          "UserMFASettingList": {
            "shape": "S1g"
          }
        }
      }
    },
    "AdminInitiateAuth": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "ClientId",
          "AuthFlow"
        ],
        "members": {
          "UserPoolId": {},
          "ClientId": {
            "shape": "S1i"
          },
          "AuthFlow": {},
          "AuthParameters": {
            "shape": "S1k"
          },
          "ClientMetadata": {
            "shape": "S1l"
          },
          "AnalyticsMetadata": {
            "shape": "S1m"
          },
          "ContextData": {
            "shape": "S1n"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChallengeName": {},
          "Session": {},
          "ChallengeParameters": {
            "shape": "S1t"
          },
          "AuthenticationResult": {
            "shape": "S1u"
          }
        }
      }
    },
    "AdminLinkProviderForUser": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "DestinationUser",
          "SourceUser"
        ],
        "members": {
          "UserPoolId": {},
          "DestinationUser": {
            "shape": "S12"
          },
          "SourceUser": {
            "shape": "S12"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AdminListDevices": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          },
          "Limit": {
            "type": "integer"
          },
          "PaginationToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Devices": {
            "shape": "S24"
          },
          "PaginationToken": {}
        }
      }
    },
    "AdminListGroupsForUser": {
      "input": {
        "type": "structure",
        "required": [
          "Username",
          "UserPoolId"
        ],
        "members": {
          "Username": {
            "shape": "Sd"
          },
          "UserPoolId": {},
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Groups": {
            "shape": "S28"
          },
          "NextToken": {}
        }
      }
    },
    "AdminListUserAuthEvents": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AuthEvents": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "EventId": {},
                "EventType": {},
                "CreationDate": {
                  "type": "timestamp"
                },
                "EventResponse": {},
                "EventRisk": {
                  "type": "structure",
                  "members": {
                    "RiskDecision": {},
                    "RiskLevel": {}
                  }
                },
                "ChallengeResponses": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "ChallengeName": {},
                      "ChallengeResponse": {}
                    }
                  }
                },
                "EventContextData": {
                  "type": "structure",
                  "members": {
                    "IpAddress": {},
                    "DeviceName": {},
                    "Timezone": {},
                    "City": {},
                    "Country": {}
                  }
                },
                "EventFeedback": {
                  "type": "structure",
                  "required": [
                    "FeedbackValue",
                    "Provider"
                  ],
                  "members": {
                    "FeedbackValue": {},
                    "Provider": {},
                    "FeedbackDate": {
                      "type": "timestamp"
                    }
                  }
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "AdminRemoveUserFromGroup": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username",
          "GroupName"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          },
          "GroupName": {}
        }
      }
    },
    "AdminResetUserPassword": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AdminRespondToAuthChallenge": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "ClientId",
          "ChallengeName"
        ],
        "members": {
          "UserPoolId": {},
          "ClientId": {
            "shape": "S1i"
          },
          "ChallengeName": {},
          "ChallengeResponses": {
            "shape": "S2x"
          },
          "Session": {},
          "AnalyticsMetadata": {
            "shape": "S1m"
          },
          "ContextData": {
            "shape": "S1n"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChallengeName": {},
          "Session": {},
          "ChallengeParameters": {
            "shape": "S1t"
          },
          "AuthenticationResult": {
            "shape": "S1u"
          }
        }
      }
    },
    "AdminSetUserMFAPreference": {
      "input": {
        "type": "structure",
        "required": [
          "Username",
          "UserPoolId"
        ],
        "members": {
          "SMSMfaSettings": {
            "shape": "S30"
          },
          "SoftwareTokenMfaSettings": {
            "shape": "S31"
          },
          "Username": {
            "shape": "Sd"
          },
          "UserPoolId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AdminSetUserSettings": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username",
          "MFAOptions"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          },
          "MFAOptions": {
            "shape": "Sv"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AdminUpdateAuthEventFeedback": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username",
          "EventId",
          "FeedbackValue"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          },
          "EventId": {},
          "FeedbackValue": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AdminUpdateDeviceStatus": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username",
          "DeviceKey"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          },
          "DeviceKey": {},
          "DeviceRememberedStatus": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AdminUpdateUserAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username",
          "UserAttributes"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          },
          "UserAttributes": {
            "shape": "Si"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AdminUserGlobalSignOut": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AssociateSoftwareToken": {
      "input": {
        "type": "structure",
        "members": {
          "AccessToken": {
            "shape": "S1v"
          },
          "Session": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SecretCode": {
            "type": "string",
            "sensitive": true
          },
          "Session": {}
        }
      }
    },
    "ChangePassword": {
      "input": {
        "type": "structure",
        "required": [
          "PreviousPassword",
          "ProposedPassword",
          "AccessToken"
        ],
        "members": {
          "PreviousPassword": {
            "shape": "Sm"
          },
          "ProposedPassword": {
            "shape": "Sm"
          },
          "AccessToken": {
            "shape": "S1v"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "authtype": "none"
    },
    "ConfirmDevice": {
      "input": {
        "type": "structure",
        "required": [
          "AccessToken",
          "DeviceKey"
        ],
        "members": {
          "AccessToken": {
            "shape": "S1v"
          },
          "DeviceKey": {},
          "DeviceSecretVerifierConfig": {
            "type": "structure",
            "members": {
              "PasswordVerifier": {},
              "Salt": {}
            }
          },
          "DeviceName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UserConfirmationNecessary": {
            "type": "boolean"
          }
        }
      }
    },
    "ConfirmForgotPassword": {
      "input": {
        "type": "structure",
        "required": [
          "ClientId",
          "Username",
          "ConfirmationCode",
          "Password"
        ],
        "members": {
          "ClientId": {
            "shape": "S1i"
          },
          "SecretHash": {
            "shape": "S3p"
          },
          "Username": {
            "shape": "Sd"
          },
          "ConfirmationCode": {},
          "Password": {
            "shape": "Sm"
          },
          "AnalyticsMetadata": {
            "shape": "S1m"
          },
          "UserContextData": {
            "shape": "S3r"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "authtype": "none"
    },
    "ConfirmSignUp": {
      "input": {
        "type": "structure",
        "required": [
          "ClientId",
          "Username",
          "ConfirmationCode"
        ],
        "members": {
          "ClientId": {
            "shape": "S1i"
          },
          "SecretHash": {
            "shape": "S3p"
          },
          "Username": {
            "shape": "Sd"
          },
          "ConfirmationCode": {},
          "ForceAliasCreation": {
            "type": "boolean"
          },
          "AnalyticsMetadata": {
            "shape": "S1m"
          },
          "UserContextData": {
            "shape": "S3r"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "authtype": "none"
    },
    "CreateGroup": {
      "input": {
        "type": "structure",
        "required": [
          "GroupName",
          "UserPoolId"
        ],
        "members": {
          "GroupName": {},
          "UserPoolId": {},
          "Description": {},
          "RoleArn": {},
          "Precedence": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Group": {
            "shape": "S29"
          }
        }
      }
    },
    "CreateIdentityProvider": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "ProviderName",
          "ProviderType",
          "ProviderDetails"
        ],
        "members": {
          "UserPoolId": {},
          "ProviderName": {},
          "ProviderType": {},
          "ProviderDetails": {
            "shape": "S40"
          },
          "AttributeMapping": {
            "shape": "S41"
          },
          "IdpIdentifiers": {
            "shape": "S43"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "IdentityProvider"
        ],
        "members": {
          "IdentityProvider": {
            "shape": "S46"
          }
        }
      }
    },
    "CreateResourceServer": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Identifier",
          "Name"
        ],
        "members": {
          "UserPoolId": {},
          "Identifier": {},
          "Name": {},
          "Scopes": {
            "shape": "S4a"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "ResourceServer"
        ],
        "members": {
          "ResourceServer": {
            "shape": "S4f"
          }
        }
      }
    },
    "CreateUserImportJob": {
      "input": {
        "type": "structure",
        "required": [
          "JobName",
          "UserPoolId",
          "CloudWatchLogsRoleArn"
        ],
        "members": {
          "JobName": {},
          "UserPoolId": {},
          "CloudWatchLogsRoleArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UserImportJob": {
            "shape": "S4j"
          }
        }
      }
    },
    "CreateUserPool": {
      "input": {
        "type": "structure",
        "required": [
          "PoolName"
        ],
        "members": {
          "PoolName": {},
          "Policies": {
            "shape": "S4r"
          },
          "LambdaConfig": {
            "shape": "S4u"
          },
          "AutoVerifiedAttributes": {
            "shape": "S4v"
          },
          "AliasAttributes": {
            "shape": "S4x"
          },
          "UsernameAttributes": {
            "shape": "S4z"
          },
          "SmsVerificationMessage": {},
          "EmailVerificationMessage": {},
          "EmailVerificationSubject": {},
          "VerificationMessageTemplate": {
            "shape": "S54"
          },
          "SmsAuthenticationMessage": {},
          "MfaConfiguration": {},
          "DeviceConfiguration": {
            "shape": "S59"
          },
          "EmailConfiguration": {
            "shape": "S5a"
          },
          "SmsConfiguration": {
            "shape": "S5c"
          },
          "UserPoolTags": {
            "shape": "S5d"
          },
          "AdminCreateUserConfig": {
            "shape": "S5e"
          },
          "Schema": {
            "shape": "S5h"
          },
          "UserPoolAddOns": {
            "shape": "S5i"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UserPool": {
            "shape": "S5l"
          }
        }
      }
    },
    "CreateUserPoolClient": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "ClientName"
        ],
        "members": {
          "UserPoolId": {},
          "ClientName": {},
          "GenerateSecret": {
            "type": "boolean"
          },
          "RefreshTokenValidity": {
            "type": "integer"
          },
          "ReadAttributes": {
            "shape": "S5s"
          },
          "WriteAttributes": {
            "shape": "S5s"
          },
          "ExplicitAuthFlows": {
            "shape": "S5u"
          },
          "SupportedIdentityProviders": {
            "shape": "S5w"
          },
          "CallbackURLs": {
            "shape": "S5x"
          },
          "LogoutURLs": {
            "shape": "S5z"
          },
          "DefaultRedirectURI": {},
          "AllowedOAuthFlows": {
            "shape": "S60"
          },
          "AllowedOAuthScopes": {
            "shape": "S62"
          },
          "AllowedOAuthFlowsUserPoolClient": {
            "type": "boolean"
          },
          "AnalyticsConfiguration": {
            "shape": "S64"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UserPoolClient": {
            "shape": "S67"
          }
        }
      }
    },
    "CreateUserPoolDomain": {
      "input": {
        "type": "structure",
        "required": [
          "Domain",
          "UserPoolId"
        ],
        "members": {
          "Domain": {},
          "UserPoolId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteGroup": {
      "input": {
        "type": "structure",
        "required": [
          "GroupName",
          "UserPoolId"
        ],
        "members": {
          "GroupName": {},
          "UserPoolId": {}
        }
      }
    },
    "DeleteIdentityProvider": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "ProviderName"
        ],
        "members": {
          "UserPoolId": {},
          "ProviderName": {}
        }
      }
    },
    "DeleteResourceServer": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Identifier"
        ],
        "members": {
          "UserPoolId": {},
          "Identifier": {}
        }
      }
    },
    "DeleteUser": {
      "input": {
        "type": "structure",
        "required": [
          "AccessToken"
        ],
        "members": {
          "AccessToken": {
            "shape": "S1v"
          }
        }
      },
      "authtype": "none"
    },
    "DeleteUserAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "UserAttributeNames",
          "AccessToken"
        ],
        "members": {
          "UserAttributeNames": {
            "shape": "Sz"
          },
          "AccessToken": {
            "shape": "S1v"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "authtype": "none"
    },
    "DeleteUserPool": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId"
        ],
        "members": {
          "UserPoolId": {}
        }
      }
    },
    "DeleteUserPoolClient": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "ClientId"
        ],
        "members": {
          "UserPoolId": {},
          "ClientId": {
            "shape": "S1i"
          }
        }
      }
    },
    "DeleteUserPoolDomain": {
      "input": {
        "type": "structure",
        "required": [
          "Domain",
          "UserPoolId"
        ],
        "members": {
          "Domain": {},
          "UserPoolId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DescribeIdentityProvider": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "ProviderName"
        ],
        "members": {
          "UserPoolId": {},
          "ProviderName": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "IdentityProvider"
        ],
        "members": {
          "IdentityProvider": {
            "shape": "S46"
          }
        }
      }
    },
    "DescribeResourceServer": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Identifier"
        ],
        "members": {
          "UserPoolId": {},
          "Identifier": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "ResourceServer"
        ],
        "members": {
          "ResourceServer": {
            "shape": "S4f"
          }
        }
      }
    },
    "DescribeRiskConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId"
        ],
        "members": {
          "UserPoolId": {},
          "ClientId": {
            "shape": "S1i"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "RiskConfiguration"
        ],
        "members": {
          "RiskConfiguration": {
            "shape": "S6r"
          }
        }
      }
    },
    "DescribeUserImportJob": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "JobId"
        ],
        "members": {
          "UserPoolId": {},
          "JobId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UserImportJob": {
            "shape": "S4j"
          }
        }
      }
    },
    "DescribeUserPool": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId"
        ],
        "members": {
          "UserPoolId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UserPool": {
            "shape": "S5l"
          }
        }
      }
    },
    "DescribeUserPoolClient": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "ClientId"
        ],
        "members": {
          "UserPoolId": {},
          "ClientId": {
            "shape": "S1i"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UserPoolClient": {
            "shape": "S67"
          }
        }
      }
    },
    "DescribeUserPoolDomain": {
      "input": {
        "type": "structure",
        "required": [
          "Domain"
        ],
        "members": {
          "Domain": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DomainDescription": {
            "type": "structure",
            "members": {
              "UserPoolId": {},
              "AWSAccountId": {},
              "Domain": {},
              "S3Bucket": {},
              "CloudFrontDistribution": {},
              "Version": {},
              "Status": {}
            }
          }
        }
      }
    },
    "ForgetDevice": {
      "input": {
        "type": "structure",
        "required": [
          "DeviceKey"
        ],
        "members": {
          "AccessToken": {
            "shape": "S1v"
          },
          "DeviceKey": {}
        }
      }
    },
    "ForgotPassword": {
      "input": {
        "type": "structure",
        "required": [
          "ClientId",
          "Username"
        ],
        "members": {
          "ClientId": {
            "shape": "S1i"
          },
          "SecretHash": {
            "shape": "S3p"
          },
          "UserContextData": {
            "shape": "S3r"
          },
          "Username": {
            "shape": "Sd"
          },
          "AnalyticsMetadata": {
            "shape": "S1m"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CodeDeliveryDetails": {
            "shape": "S7p"
          }
        }
      },
      "authtype": "none"
    },
    "GetCSVHeader": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId"
        ],
        "members": {
          "UserPoolId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UserPoolId": {},
          "CSVHeader": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "GetDevice": {
      "input": {
        "type": "structure",
        "required": [
          "DeviceKey"
        ],
        "members": {
          "DeviceKey": {},
          "AccessToken": {
            "shape": "S1v"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Device"
        ],
        "members": {
          "Device": {
            "shape": "S1d"
          }
        }
      }
    },
    "GetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "GroupName",
          "UserPoolId"
        ],
        "members": {
          "GroupName": {},
          "UserPoolId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Group": {
            "shape": "S29"
          }
        }
      }
    },
    "GetIdentityProviderByIdentifier": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "IdpIdentifier"
        ],
        "members": {
          "UserPoolId": {},
          "IdpIdentifier": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "IdentityProvider"
        ],
        "members": {
          "IdentityProvider": {
            "shape": "S46"
          }
        }
      }
    },
    "GetUICustomization": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId"
        ],
        "members": {
          "UserPoolId": {},
          "ClientId": {
            "shape": "S1i"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "UICustomization"
        ],
        "members": {
          "UICustomization": {
            "shape": "S81"
          }
        }
      }
    },
    "GetUser": {
      "input": {
        "type": "structure",
        "required": [
          "AccessToken"
        ],
        "members": {
          "AccessToken": {
            "shape": "S1v"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Username",
          "UserAttributes"
        ],
        "members": {
          "Username": {
            "shape": "Sd"
          },
          "UserAttributes": {
            "shape": "Si"
          },
          "MFAOptions": {
            "shape": "Sv"
          },
          "PreferredMfaSetting": {},
          "UserMFASettingList": {
            "shape": "S1g"
          }
        }
      },
      "authtype": "none"
    },
    "GetUserAttributeVerificationCode": {
      "input": {
        "type": "structure",
        "required": [
          "AccessToken",
          "AttributeName"
        ],
        "members": {
          "AccessToken": {
            "shape": "S1v"
          },
          "AttributeName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CodeDeliveryDetails": {
            "shape": "S7p"
          }
        }
      },
      "authtype": "none"
    },
    "GetUserPoolMfaConfig": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId"
        ],
        "members": {
          "UserPoolId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SmsMfaConfiguration": {
            "shape": "S8b"
          },
          "SoftwareTokenMfaConfiguration": {
            "shape": "S8c"
          },
          "MfaConfiguration": {}
        }
      }
    },
    "GlobalSignOut": {
      "input": {
        "type": "structure",
        "required": [
          "AccessToken"
        ],
        "members": {
          "AccessToken": {
            "shape": "S1v"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "InitiateAuth": {
      "input": {
        "type": "structure",
        "required": [
          "AuthFlow",
          "ClientId"
        ],
        "members": {
          "AuthFlow": {},
          "AuthParameters": {
            "shape": "S1k"
          },
          "ClientMetadata": {
            "shape": "S1l"
          },
          "ClientId": {
            "shape": "S1i"
          },
          "AnalyticsMetadata": {
            "shape": "S1m"
          },
          "UserContextData": {
            "shape": "S3r"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChallengeName": {},
          "Session": {},
          "ChallengeParameters": {
            "shape": "S1t"
          },
          "AuthenticationResult": {
            "shape": "S1u"
          }
        }
      }
    },
    "ListDevices": {
      "input": {
        "type": "structure",
        "required": [
          "AccessToken"
        ],
        "members": {
          "AccessToken": {
            "shape": "S1v"
          },
          "Limit": {
            "type": "integer"
          },
          "PaginationToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Devices": {
            "shape": "S24"
          },
          "PaginationToken": {}
        }
      }
    },
    "ListGroups": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId"
        ],
        "members": {
          "UserPoolId": {},
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Groups": {
            "shape": "S28"
          },
          "NextToken": {}
        }
      }
    },
    "ListIdentityProviders": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId"
        ],
        "members": {
          "UserPoolId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Providers"
        ],
        "members": {
          "Providers": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ProviderName": {},
                "ProviderType": {},
                "LastModifiedDate": {
                  "type": "timestamp"
                },
                "CreationDate": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListResourceServers": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId"
        ],
        "members": {
          "UserPoolId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "ResourceServers"
        ],
        "members": {
          "ResourceServers": {
            "type": "list",
            "member": {
              "shape": "S4f"
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListUserImportJobs": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "MaxResults"
        ],
        "members": {
          "UserPoolId": {},
          "MaxResults": {
            "type": "integer"
          },
          "PaginationToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UserImportJobs": {
            "type": "list",
            "member": {
              "shape": "S4j"
            }
          },
          "PaginationToken": {}
        }
      }
    },
    "ListUserPoolClients": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId"
        ],
        "members": {
          "UserPoolId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UserPoolClients": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ClientId": {
                  "shape": "S1i"
                },
                "UserPoolId": {},
                "ClientName": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListUserPools": {
      "input": {
        "type": "structure",
        "required": [
          "MaxResults"
        ],
        "members": {
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UserPools": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Id": {},
                "Name": {},
                "LambdaConfig": {
                  "shape": "S4u"
                },
                "Status": {},
                "LastModifiedDate": {
                  "type": "timestamp"
                },
                "CreationDate": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListUsers": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId"
        ],
        "members": {
          "UserPoolId": {},
          "AttributesToGet": {
            "type": "list",
            "member": {}
          },
          "Limit": {
            "type": "integer"
          },
          "PaginationToken": {},
          "Filter": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Users": {
            "shape": "S9c"
          },
          "PaginationToken": {}
        }
      }
    },
    "ListUsersInGroup": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "GroupName"
        ],
        "members": {
          "UserPoolId": {},
          "GroupName": {},
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Users": {
            "shape": "S9c"
          },
          "NextToken": {}
        }
      }
    },
    "ResendConfirmationCode": {
      "input": {
        "type": "structure",
        "required": [
          "ClientId",
          "Username"
        ],
        "members": {
          "ClientId": {
            "shape": "S1i"
          },
          "SecretHash": {
            "shape": "S3p"
          },
          "UserContextData": {
            "shape": "S3r"
          },
          "Username": {
            "shape": "Sd"
          },
          "AnalyticsMetadata": {
            "shape": "S1m"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CodeDeliveryDetails": {
            "shape": "S7p"
          }
        }
      },
      "authtype": "none"
    },
    "RespondToAuthChallenge": {
      "input": {
        "type": "structure",
        "required": [
          "ClientId",
          "ChallengeName"
        ],
        "members": {
          "ClientId": {
            "shape": "S1i"
          },
          "ChallengeName": {},
          "Session": {},
          "ChallengeResponses": {
            "shape": "S2x"
          },
          "AnalyticsMetadata": {
            "shape": "S1m"
          },
          "UserContextData": {
            "shape": "S3r"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChallengeName": {},
          "Session": {},
          "ChallengeParameters": {
            "shape": "S1t"
          },
          "AuthenticationResult": {
            "shape": "S1u"
          }
        }
      }
    },
    "SetRiskConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId"
        ],
        "members": {
          "UserPoolId": {},
          "ClientId": {
            "shape": "S1i"
          },
          "CompromisedCredentialsRiskConfiguration": {
            "shape": "S6s"
          },
          "AccountTakeoverRiskConfiguration": {
            "shape": "S6x"
          },
          "RiskExceptionConfiguration": {
            "shape": "S76"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "RiskConfiguration"
        ],
        "members": {
          "RiskConfiguration": {
            "shape": "S6r"
          }
        }
      }
    },
    "SetUICustomization": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId"
        ],
        "members": {
          "UserPoolId": {},
          "ClientId": {
            "shape": "S1i"
          },
          "CSS": {},
          "ImageFile": {
            "type": "blob"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "UICustomization"
        ],
        "members": {
          "UICustomization": {
            "shape": "S81"
          }
        }
      }
    },
    "SetUserMFAPreference": {
      "input": {
        "type": "structure",
        "required": [
          "AccessToken"
        ],
        "members": {
          "SMSMfaSettings": {
            "shape": "S30"
          },
          "SoftwareTokenMfaSettings": {
            "shape": "S31"
          },
          "AccessToken": {
            "shape": "S1v"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "SetUserPoolMfaConfig": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId"
        ],
        "members": {
          "UserPoolId": {},
          "SmsMfaConfiguration": {
            "shape": "S8b"
          },
          "SoftwareTokenMfaConfiguration": {
            "shape": "S8c"
          },
          "MfaConfiguration": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SmsMfaConfiguration": {
            "shape": "S8b"
          },
          "SoftwareTokenMfaConfiguration": {
            "shape": "S8c"
          },
          "MfaConfiguration": {}
        }
      }
    },
    "SetUserSettings": {
      "input": {
        "type": "structure",
        "required": [
          "AccessToken",
          "MFAOptions"
        ],
        "members": {
          "AccessToken": {
            "shape": "S1v"
          },
          "MFAOptions": {
            "shape": "Sv"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "authtype": "none"
    },
    "SignUp": {
      "input": {
        "type": "structure",
        "required": [
          "ClientId",
          "Username",
          "Password"
        ],
        "members": {
          "ClientId": {
            "shape": "S1i"
          },
          "SecretHash": {
            "shape": "S3p"
          },
          "Username": {
            "shape": "Sd"
          },
          "Password": {
            "shape": "Sm"
          },
          "UserAttributes": {
            "shape": "Si"
          },
          "ValidationData": {
            "shape": "Si"
          },
          "AnalyticsMetadata": {
            "shape": "S1m"
          },
          "UserContextData": {
            "shape": "S3r"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "UserConfirmed",
          "UserSub"
        ],
        "members": {
          "UserConfirmed": {
            "type": "boolean"
          },
          "CodeDeliveryDetails": {
            "shape": "S7p"
          },
          "UserSub": {}
        }
      },
      "authtype": "none"
    },
    "StartUserImportJob": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "JobId"
        ],
        "members": {
          "UserPoolId": {},
          "JobId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UserImportJob": {
            "shape": "S4j"
          }
        }
      }
    },
    "StopUserImportJob": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "JobId"
        ],
        "members": {
          "UserPoolId": {},
          "JobId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UserImportJob": {
            "shape": "S4j"
          }
        }
      }
    },
    "UpdateAuthEventFeedback": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Username",
          "EventId",
          "FeedbackToken",
          "FeedbackValue"
        ],
        "members": {
          "UserPoolId": {},
          "Username": {
            "shape": "Sd"
          },
          "EventId": {},
          "FeedbackToken": {
            "shape": "S1v"
          },
          "FeedbackValue": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UpdateDeviceStatus": {
      "input": {
        "type": "structure",
        "required": [
          "AccessToken",
          "DeviceKey"
        ],
        "members": {
          "AccessToken": {
            "shape": "S1v"
          },
          "DeviceKey": {},
          "DeviceRememberedStatus": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UpdateGroup": {
      "input": {
        "type": "structure",
        "required": [
          "GroupName",
          "UserPoolId"
        ],
        "members": {
          "GroupName": {},
          "UserPoolId": {},
          "Description": {},
          "RoleArn": {},
          "Precedence": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Group": {
            "shape": "S29"
          }
        }
      }
    },
    "UpdateIdentityProvider": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "ProviderName"
        ],
        "members": {
          "UserPoolId": {},
          "ProviderName": {},
          "ProviderDetails": {
            "shape": "S40"
          },
          "AttributeMapping": {
            "shape": "S41"
          },
          "IdpIdentifiers": {
            "shape": "S43"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "IdentityProvider"
        ],
        "members": {
          "IdentityProvider": {
            "shape": "S46"
          }
        }
      }
    },
    "UpdateResourceServer": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "Identifier",
          "Name"
        ],
        "members": {
          "UserPoolId": {},
          "Identifier": {},
          "Name": {},
          "Scopes": {
            "shape": "S4a"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "ResourceServer"
        ],
        "members": {
          "ResourceServer": {
            "shape": "S4f"
          }
        }
      }
    },
    "UpdateUserAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "UserAttributes",
          "AccessToken"
        ],
        "members": {
          "UserAttributes": {
            "shape": "Si"
          },
          "AccessToken": {
            "shape": "S1v"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CodeDeliveryDetailsList": {
            "type": "list",
            "member": {
              "shape": "S7p"
            }
          }
        }
      },
      "authtype": "none"
    },
    "UpdateUserPool": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId"
        ],
        "members": {
          "UserPoolId": {},
          "Policies": {
            "shape": "S4r"
          },
          "LambdaConfig": {
            "shape": "S4u"
          },
          "AutoVerifiedAttributes": {
            "shape": "S4v"
          },
          "SmsVerificationMessage": {},
          "EmailVerificationMessage": {},
          "EmailVerificationSubject": {},
          "VerificationMessageTemplate": {
            "shape": "S54"
          },
          "SmsAuthenticationMessage": {},
          "MfaConfiguration": {},
          "DeviceConfiguration": {
            "shape": "S59"
          },
          "EmailConfiguration": {
            "shape": "S5a"
          },
          "SmsConfiguration": {
            "shape": "S5c"
          },
          "UserPoolTags": {
            "shape": "S5d"
          },
          "AdminCreateUserConfig": {
            "shape": "S5e"
          },
          "UserPoolAddOns": {
            "shape": "S5i"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UpdateUserPoolClient": {
      "input": {
        "type": "structure",
        "required": [
          "UserPoolId",
          "ClientId"
        ],
        "members": {
          "UserPoolId": {},
          "ClientId": {
            "shape": "S1i"
          },
          "ClientName": {},
          "RefreshTokenValidity": {
            "type": "integer"
          },
          "ReadAttributes": {
            "shape": "S5s"
          },
          "WriteAttributes": {
            "shape": "S5s"
          },
          "ExplicitAuthFlows": {
            "shape": "S5u"
          },
          "SupportedIdentityProviders": {
            "shape": "S5w"
          },
          "CallbackURLs": {
            "shape": "S5x"
          },
          "LogoutURLs": {
            "shape": "S5z"
          },
          "DefaultRedirectURI": {},
          "AllowedOAuthFlows": {
            "shape": "S60"
          },
          "AllowedOAuthScopes": {
            "shape": "S62"
          },
          "AllowedOAuthFlowsUserPoolClient": {
            "type": "boolean"
          },
          "AnalyticsConfiguration": {
            "shape": "S64"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UserPoolClient": {
            "shape": "S67"
          }
        }
      }
    },
    "VerifySoftwareToken": {
      "input": {
        "type": "structure",
        "required": [
          "UserCode"
        ],
        "members": {
          "AccessToken": {
            "shape": "S1v"
          },
          "Session": {},
          "UserCode": {},
          "FriendlyDeviceName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Status": {},
          "Session": {}
        }
      }
    },
    "VerifyUserAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "AccessToken",
          "AttributeName",
          "Code"
        ],
        "members": {
          "AccessToken": {
            "shape": "S1v"
          },
          "AttributeName": {},
          "Code": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "authtype": "none"
    }
  },
  "shapes": {
    "S4": {
      "type": "structure",
      "members": {
        "Name": {},
        "AttributeDataType": {},
        "DeveloperOnlyAttribute": {
          "type": "boolean"
        },
        "Mutable": {
          "type": "boolean"
        },
        "Required": {
          "type": "boolean"
        },
        "NumberAttributeConstraints": {
          "type": "structure",
          "members": {
            "MinValue": {},
            "MaxValue": {}
          }
        },
        "StringAttributeConstraints": {
          "type": "structure",
          "members": {
            "MinLength": {},
            "MaxLength": {}
          }
        }
      }
    },
    "Sd": {
      "type": "string",
      "sensitive": true
    },
    "Si": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {},
          "Value": {
            "type": "string",
            "sensitive": true
          }
        }
      }
    },
    "Sm": {
      "type": "string",
      "sensitive": true
    },
    "Ss": {
      "type": "structure",
      "members": {
        "Username": {
          "shape": "Sd"
        },
        "Attributes": {
          "shape": "Si"
        },
        "UserCreateDate": {
          "type": "timestamp"
        },
        "UserLastModifiedDate": {
          "type": "timestamp"
        },
        "Enabled": {
          "type": "boolean"
        },
        "UserStatus": {},
        "MFAOptions": {
          "shape": "Sv"
        }
      }
    },
    "Sv": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "DeliveryMedium": {},
          "AttributeName": {}
        }
      }
    },
    "Sz": {
      "type": "list",
      "member": {}
    },
    "S12": {
      "type": "structure",
      "members": {
        "ProviderName": {},
        "ProviderAttributeName": {},
        "ProviderAttributeValue": {}
      }
    },
    "S1d": {
      "type": "structure",
      "members": {
        "DeviceKey": {},
        "DeviceAttributes": {
          "shape": "Si"
        },
        "DeviceCreateDate": {
          "type": "timestamp"
        },
        "DeviceLastModifiedDate": {
          "type": "timestamp"
        },
        "DeviceLastAuthenticatedDate": {
          "type": "timestamp"
        }
      }
    },
    "S1g": {
      "type": "list",
      "member": {}
    },
    "S1i": {
      "type": "string",
      "sensitive": true
    },
    "S1k": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S1l": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S1m": {
      "type": "structure",
      "members": {
        "AnalyticsEndpointId": {}
      }
    },
    "S1n": {
      "type": "structure",
      "required": [
        "IpAddress",
        "ServerName",
        "ServerPath",
        "HttpHeaders"
      ],
      "members": {
        "IpAddress": {},
        "ServerName": {},
        "ServerPath": {},
        "HttpHeaders": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "headerName": {},
              "headerValue": {}
            }
          }
        },
        "EncodedData": {}
      }
    },
    "S1t": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S1u": {
      "type": "structure",
      "members": {
        "AccessToken": {
          "shape": "S1v"
        },
        "ExpiresIn": {
          "type": "integer"
        },
        "TokenType": {},
        "RefreshToken": {
          "shape": "S1v"
        },
        "IdToken": {
          "shape": "S1v"
        },
        "NewDeviceMetadata": {
          "type": "structure",
          "members": {
            "DeviceKey": {},
            "DeviceGroupKey": {}
          }
        }
      }
    },
    "S1v": {
      "type": "string",
      "sensitive": true
    },
    "S24": {
      "type": "list",
      "member": {
        "shape": "S1d"
      }
    },
    "S28": {
      "type": "list",
      "member": {
        "shape": "S29"
      }
    },
    "S29": {
      "type": "structure",
      "members": {
        "GroupName": {},
        "UserPoolId": {},
        "Description": {},
        "RoleArn": {},
        "Precedence": {
          "type": "integer"
        },
        "LastModifiedDate": {
          "type": "timestamp"
        },
        "CreationDate": {
          "type": "timestamp"
        }
      }
    },
    "S2x": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S30": {
      "type": "structure",
      "members": {
        "Enabled": {
          "type": "boolean"
        },
        "PreferredMfa": {
          "type": "boolean"
        }
      }
    },
    "S31": {
      "type": "structure",
      "members": {
        "Enabled": {
          "type": "boolean"
        },
        "PreferredMfa": {
          "type": "boolean"
        }
      }
    },
    "S3p": {
      "type": "string",
      "sensitive": true
    },
    "S3r": {
      "type": "structure",
      "members": {
        "EncodedData": {}
      }
    },
    "S40": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S41": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S43": {
      "type": "list",
      "member": {}
    },
    "S46": {
      "type": "structure",
      "members": {
        "UserPoolId": {},
        "ProviderName": {},
        "ProviderType": {},
        "ProviderDetails": {
          "shape": "S40"
        },
        "AttributeMapping": {
          "shape": "S41"
        },
        "IdpIdentifiers": {
          "shape": "S43"
        },
        "LastModifiedDate": {
          "type": "timestamp"
        },
        "CreationDate": {
          "type": "timestamp"
        }
      }
    },
    "S4a": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "ScopeName",
          "ScopeDescription"
        ],
        "members": {
          "ScopeName": {},
          "ScopeDescription": {}
        }
      }
    },
    "S4f": {
      "type": "structure",
      "members": {
        "UserPoolId": {},
        "Identifier": {},
        "Name": {},
        "Scopes": {
          "shape": "S4a"
        }
      }
    },
    "S4j": {
      "type": "structure",
      "members": {
        "JobName": {},
        "JobId": {},
        "UserPoolId": {},
        "PreSignedUrl": {},
        "CreationDate": {
          "type": "timestamp"
        },
        "StartDate": {
          "type": "timestamp"
        },
        "CompletionDate": {
          "type": "timestamp"
        },
        "Status": {},
        "CloudWatchLogsRoleArn": {},
        "ImportedUsers": {
          "type": "long"
        },
        "SkippedUsers": {
          "type": "long"
        },
        "FailedUsers": {
          "type": "long"
        },
        "CompletionMessage": {}
      }
    },
    "S4r": {
      "type": "structure",
      "members": {
        "PasswordPolicy": {
          "type": "structure",
          "members": {
            "MinimumLength": {
              "type": "integer"
            },
            "RequireUppercase": {
              "type": "boolean"
            },
            "RequireLowercase": {
              "type": "boolean"
            },
            "RequireNumbers": {
              "type": "boolean"
            },
            "RequireSymbols": {
              "type": "boolean"
            }
          }
        }
      }
    },
    "S4u": {
      "type": "structure",
      "members": {
        "PreSignUp": {},
        "CustomMessage": {},
        "PostConfirmation": {},
        "PreAuthentication": {},
        "PostAuthentication": {},
        "DefineAuthChallenge": {},
        "CreateAuthChallenge": {},
        "VerifyAuthChallengeResponse": {},
        "PreTokenGeneration": {}
      }
    },
    "S4v": {
      "type": "list",
      "member": {}
    },
    "S4x": {
      "type": "list",
      "member": {}
    },
    "S4z": {
      "type": "list",
      "member": {}
    },
    "S54": {
      "type": "structure",
      "members": {
        "SmsMessage": {},
        "EmailMessage": {},
        "EmailSubject": {},
        "EmailMessageByLink": {},
        "EmailSubjectByLink": {},
        "DefaultEmailOption": {}
      }
    },
    "S59": {
      "type": "structure",
      "members": {
        "ChallengeRequiredOnNewDevice": {
          "type": "boolean"
        },
        "DeviceOnlyRememberedOnUserPrompt": {
          "type": "boolean"
        }
      }
    },
    "S5a": {
      "type": "structure",
      "members": {
        "SourceArn": {},
        "ReplyToEmailAddress": {}
      }
    },
    "S5c": {
      "type": "structure",
      "required": [
        "SnsCallerArn"
      ],
      "members": {
        "SnsCallerArn": {},
        "ExternalId": {}
      }
    },
    "S5d": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S5e": {
      "type": "structure",
      "members": {
        "AllowAdminCreateUserOnly": {
          "type": "boolean"
        },
        "UnusedAccountValidityDays": {
          "type": "integer"
        },
        "InviteMessageTemplate": {
          "type": "structure",
          "members": {
            "SMSMessage": {},
            "EmailMessage": {},
            "EmailSubject": {}
          }
        }
      }
    },
    "S5h": {
      "type": "list",
      "member": {
        "shape": "S4"
      }
    },
    "S5i": {
      "type": "structure",
      "required": [
        "AdvancedSecurityMode"
      ],
      "members": {
        "AdvancedSecurityMode": {}
      }
    },
    "S5l": {
      "type": "structure",
      "members": {
        "Id": {},
        "Name": {},
        "Policies": {
          "shape": "S4r"
        },
        "LambdaConfig": {
          "shape": "S4u"
        },
        "Status": {},
        "LastModifiedDate": {
          "type": "timestamp"
        },
        "CreationDate": {
          "type": "timestamp"
        },
        "SchemaAttributes": {
          "shape": "S5h"
        },
        "AutoVerifiedAttributes": {
          "shape": "S4v"
        },
        "AliasAttributes": {
          "shape": "S4x"
        },
        "UsernameAttributes": {
          "shape": "S4z"
        },
        "SmsVerificationMessage": {},
        "EmailVerificationMessage": {},
        "EmailVerificationSubject": {},
        "VerificationMessageTemplate": {
          "shape": "S54"
        },
        "SmsAuthenticationMessage": {},
        "MfaConfiguration": {},
        "DeviceConfiguration": {
          "shape": "S59"
        },
        "EstimatedNumberOfUsers": {
          "type": "integer"
        },
        "EmailConfiguration": {
          "shape": "S5a"
        },
        "SmsConfiguration": {
          "shape": "S5c"
        },
        "UserPoolTags": {
          "shape": "S5d"
        },
        "SmsConfigurationFailure": {},
        "EmailConfigurationFailure": {},
        "Domain": {},
        "AdminCreateUserConfig": {
          "shape": "S5e"
        },
        "UserPoolAddOns": {
          "shape": "S5i"
        }
      }
    },
    "S5s": {
      "type": "list",
      "member": {}
    },
    "S5u": {
      "type": "list",
      "member": {}
    },
    "S5w": {
      "type": "list",
      "member": {}
    },
    "S5x": {
      "type": "list",
      "member": {}
    },
    "S5z": {
      "type": "list",
      "member": {}
    },
    "S60": {
      "type": "list",
      "member": {}
    },
    "S62": {
      "type": "list",
      "member": {}
    },
    "S64": {
      "type": "structure",
      "required": [
        "ApplicationId",
        "RoleArn",
        "ExternalId"
      ],
      "members": {
        "ApplicationId": {},
        "RoleArn": {},
        "ExternalId": {},
        "UserDataShared": {
          "type": "boolean"
        }
      }
    },
    "S67": {
      "type": "structure",
      "members": {
        "UserPoolId": {},
        "ClientName": {},
        "ClientId": {
          "shape": "S1i"
        },
        "ClientSecret": {
          "type": "string",
          "sensitive": true
        },
        "LastModifiedDate": {
          "type": "timestamp"
        },
        "CreationDate": {
          "type": "timestamp"
        },
        "RefreshTokenValidity": {
          "type": "integer"
        },
        "ReadAttributes": {
          "shape": "S5s"
        },
        "WriteAttributes": {
          "shape": "S5s"
        },
        "ExplicitAuthFlows": {
          "shape": "S5u"
        },
        "SupportedIdentityProviders": {
          "shape": "S5w"
        },
        "CallbackURLs": {
          "shape": "S5x"
        },
        "LogoutURLs": {
          "shape": "S5z"
        },
        "DefaultRedirectURI": {},
        "AllowedOAuthFlows": {
          "shape": "S60"
        },
        "AllowedOAuthScopes": {
          "shape": "S62"
        },
        "AllowedOAuthFlowsUserPoolClient": {
          "type": "boolean"
        },
        "AnalyticsConfiguration": {
          "shape": "S64"
        }
      }
    },
    "S6r": {
      "type": "structure",
      "members": {
        "UserPoolId": {},
        "ClientId": {
          "shape": "S1i"
        },
        "CompromisedCredentialsRiskConfiguration": {
          "shape": "S6s"
        },
        "AccountTakeoverRiskConfiguration": {
          "shape": "S6x"
        },
        "RiskExceptionConfiguration": {
          "shape": "S76"
        },
        "LastModifiedDate": {
          "type": "timestamp"
        }
      }
    },
    "S6s": {
      "type": "structure",
      "required": [
        "Actions"
      ],
      "members": {
        "EventFilter": {
          "type": "list",
          "member": {}
        },
        "Actions": {
          "type": "structure",
          "required": [
            "EventAction"
          ],
          "members": {
            "EventAction": {}
          }
        }
      }
    },
    "S6x": {
      "type": "structure",
      "required": [
        "Actions"
      ],
      "members": {
        "NotifyConfiguration": {
          "type": "structure",
          "required": [
            "SourceArn"
          ],
          "members": {
            "From": {},
            "ReplyTo": {},
            "SourceArn": {},
            "BlockEmail": {
              "shape": "S6z"
            },
            "NoActionEmail": {
              "shape": "S6z"
            },
            "MfaEmail": {
              "shape": "S6z"
            }
          }
        },
        "Actions": {
          "type": "structure",
          "members": {
            "LowAction": {
              "shape": "S73"
            },
            "MediumAction": {
              "shape": "S73"
            },
            "HighAction": {
              "shape": "S73"
            }
          }
        }
      }
    },
    "S6z": {
      "type": "structure",
      "required": [
        "Subject"
      ],
      "members": {
        "Subject": {},
        "HtmlBody": {},
        "TextBody": {}
      }
    },
    "S73": {
      "type": "structure",
      "required": [
        "Notify",
        "EventAction"
      ],
      "members": {
        "Notify": {
          "type": "boolean"
        },
        "EventAction": {}
      }
    },
    "S76": {
      "type": "structure",
      "members": {
        "BlockedIPRangeList": {
          "type": "list",
          "member": {}
        },
        "SkippedIPRangeList": {
          "type": "list",
          "member": {}
        }
      }
    },
    "S7p": {
      "type": "structure",
      "members": {
        "Destination": {},
        "DeliveryMedium": {},
        "AttributeName": {}
      }
    },
    "S81": {
      "type": "structure",
      "members": {
        "UserPoolId": {},
        "ClientId": {
          "shape": "S1i"
        },
        "ImageUrl": {},
        "CSS": {},
        "CSSVersion": {},
        "LastModifiedDate": {
          "type": "timestamp"
        },
        "CreationDate": {
          "type": "timestamp"
        }
      }
    },
    "S8b": {
      "type": "structure",
      "members": {
        "SmsAuthenticationMessage": {},
        "SmsConfiguration": {
          "shape": "S5c"
        }
      }
    },
    "S8c": {
      "type": "structure",
      "members": {
        "Enabled": {
          "type": "boolean"
        }
      }
    },
    "S9c": {
      "type": "list",
      "member": {
        "shape": "Ss"
      }
    }
  }
}
},{}],32:[function(require,module,exports){
arguments[4][19][0].apply(exports,arguments)
},{"dup":19}],33:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2014-06-30",
    "endpointPrefix": "cognito-sync",
    "jsonVersion": "1.1",
    "serviceFullName": "Amazon Cognito Sync",
    "signatureVersion": "v4",
    "protocol": "rest-json",
    "uid": "cognito-sync-2014-06-30"
  },
  "operations": {
    "BulkPublish": {
      "http": {
        "requestUri": "/identitypools/{IdentityPoolId}/bulkpublish",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId"
        ],
        "members": {
          "IdentityPoolId": {
            "location": "uri",
            "locationName": "IdentityPoolId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IdentityPoolId": {}
        }
      }
    },
    "DeleteDataset": {
      "http": {
        "method": "DELETE",
        "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId",
          "IdentityId",
          "DatasetName"
        ],
        "members": {
          "IdentityPoolId": {
            "location": "uri",
            "locationName": "IdentityPoolId"
          },
          "IdentityId": {
            "location": "uri",
            "locationName": "IdentityId"
          },
          "DatasetName": {
            "location": "uri",
            "locationName": "DatasetName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Dataset": {
            "shape": "S8"
          }
        }
      }
    },
    "DescribeDataset": {
      "http": {
        "method": "GET",
        "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId",
          "IdentityId",
          "DatasetName"
        ],
        "members": {
          "IdentityPoolId": {
            "location": "uri",
            "locationName": "IdentityPoolId"
          },
          "IdentityId": {
            "location": "uri",
            "locationName": "IdentityId"
          },
          "DatasetName": {
            "location": "uri",
            "locationName": "DatasetName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Dataset": {
            "shape": "S8"
          }
        }
      }
    },
    "DescribeIdentityPoolUsage": {
      "http": {
        "method": "GET",
        "requestUri": "/identitypools/{IdentityPoolId}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId"
        ],
        "members": {
          "IdentityPoolId": {
            "location": "uri",
            "locationName": "IdentityPoolId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IdentityPoolUsage": {
            "shape": "Sg"
          }
        }
      }
    },
    "DescribeIdentityUsage": {
      "http": {
        "method": "GET",
        "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId",
          "IdentityId"
        ],
        "members": {
          "IdentityPoolId": {
            "location": "uri",
            "locationName": "IdentityPoolId"
          },
          "IdentityId": {
            "location": "uri",
            "locationName": "IdentityId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IdentityUsage": {
            "type": "structure",
            "members": {
              "IdentityId": {},
              "IdentityPoolId": {},
              "LastModifiedDate": {
                "type": "timestamp"
              },
              "DatasetCount": {
                "type": "integer"
              },
              "DataStorage": {
                "type": "long"
              }
            }
          }
        }
      }
    },
    "GetBulkPublishDetails": {
      "http": {
        "requestUri": "/identitypools/{IdentityPoolId}/getBulkPublishDetails",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId"
        ],
        "members": {
          "IdentityPoolId": {
            "location": "uri",
            "locationName": "IdentityPoolId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IdentityPoolId": {},
          "BulkPublishStartTime": {
            "type": "timestamp"
          },
          "BulkPublishCompleteTime": {
            "type": "timestamp"
          },
          "BulkPublishStatus": {},
          "FailureMessage": {}
        }
      }
    },
    "GetCognitoEvents": {
      "http": {
        "method": "GET",
        "requestUri": "/identitypools/{IdentityPoolId}/events",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId"
        ],
        "members": {
          "IdentityPoolId": {
            "location": "uri",
            "locationName": "IdentityPoolId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Events": {
            "shape": "Sq"
          }
        }
      }
    },
    "GetIdentityPoolConfiguration": {
      "http": {
        "method": "GET",
        "requestUri": "/identitypools/{IdentityPoolId}/configuration",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId"
        ],
        "members": {
          "IdentityPoolId": {
            "location": "uri",
            "locationName": "IdentityPoolId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IdentityPoolId": {},
          "PushSync": {
            "shape": "Sv"
          },
          "CognitoStreams": {
            "shape": "Sz"
          }
        }
      }
    },
    "ListDatasets": {
      "http": {
        "method": "GET",
        "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "IdentityId",
          "IdentityPoolId"
        ],
        "members": {
          "IdentityPoolId": {
            "location": "uri",
            "locationName": "IdentityPoolId"
          },
          "IdentityId": {
            "location": "uri",
            "locationName": "IdentityId"
          },
          "NextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "MaxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Datasets": {
            "type": "list",
            "member": {
              "shape": "S8"
            }
          },
          "Count": {
            "type": "integer"
          },
          "NextToken": {}
        }
      }
    },
    "ListIdentityPoolUsage": {
      "http": {
        "method": "GET",
        "requestUri": "/identitypools",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "MaxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IdentityPoolUsages": {
            "type": "list",
            "member": {
              "shape": "Sg"
            }
          },
          "MaxResults": {
            "type": "integer"
          },
          "Count": {
            "type": "integer"
          },
          "NextToken": {}
        }
      }
    },
    "ListRecords": {
      "http": {
        "method": "GET",
        "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/records",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId",
          "IdentityId",
          "DatasetName"
        ],
        "members": {
          "IdentityPoolId": {
            "location": "uri",
            "locationName": "IdentityPoolId"
          },
          "IdentityId": {
            "location": "uri",
            "locationName": "IdentityId"
          },
          "DatasetName": {
            "location": "uri",
            "locationName": "DatasetName"
          },
          "LastSyncCount": {
            "location": "querystring",
            "locationName": "lastSyncCount",
            "type": "long"
          },
          "NextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "MaxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "SyncSessionToken": {
            "location": "querystring",
            "locationName": "syncSessionToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Records": {
            "shape": "S1c"
          },
          "NextToken": {},
          "Count": {
            "type": "integer"
          },
          "DatasetSyncCount": {
            "type": "long"
          },
          "LastModifiedBy": {},
          "MergedDatasetNames": {
            "type": "list",
            "member": {}
          },
          "DatasetExists": {
            "type": "boolean"
          },
          "DatasetDeletedAfterRequestedSyncCount": {
            "type": "boolean"
          },
          "SyncSessionToken": {}
        }
      }
    },
    "RegisterDevice": {
      "http": {
        "requestUri": "/identitypools/{IdentityPoolId}/identity/{IdentityId}/device",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId",
          "IdentityId",
          "Platform",
          "Token"
        ],
        "members": {
          "IdentityPoolId": {
            "location": "uri",
            "locationName": "IdentityPoolId"
          },
          "IdentityId": {
            "location": "uri",
            "locationName": "IdentityId"
          },
          "Platform": {},
          "Token": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DeviceId": {}
        }
      }
    },
    "SetCognitoEvents": {
      "http": {
        "requestUri": "/identitypools/{IdentityPoolId}/events",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId",
          "Events"
        ],
        "members": {
          "IdentityPoolId": {
            "location": "uri",
            "locationName": "IdentityPoolId"
          },
          "Events": {
            "shape": "Sq"
          }
        }
      }
    },
    "SetIdentityPoolConfiguration": {
      "http": {
        "requestUri": "/identitypools/{IdentityPoolId}/configuration",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId"
        ],
        "members": {
          "IdentityPoolId": {
            "location": "uri",
            "locationName": "IdentityPoolId"
          },
          "PushSync": {
            "shape": "Sv"
          },
          "CognitoStreams": {
            "shape": "Sz"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IdentityPoolId": {},
          "PushSync": {
            "shape": "Sv"
          },
          "CognitoStreams": {
            "shape": "Sz"
          }
        }
      }
    },
    "SubscribeToDataset": {
      "http": {
        "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/subscriptions/{DeviceId}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId",
          "IdentityId",
          "DatasetName",
          "DeviceId"
        ],
        "members": {
          "IdentityPoolId": {
            "location": "uri",
            "locationName": "IdentityPoolId"
          },
          "IdentityId": {
            "location": "uri",
            "locationName": "IdentityId"
          },
          "DatasetName": {
            "location": "uri",
            "locationName": "DatasetName"
          },
          "DeviceId": {
            "location": "uri",
            "locationName": "DeviceId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UnsubscribeFromDataset": {
      "http": {
        "method": "DELETE",
        "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/subscriptions/{DeviceId}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId",
          "IdentityId",
          "DatasetName",
          "DeviceId"
        ],
        "members": {
          "IdentityPoolId": {
            "location": "uri",
            "locationName": "IdentityPoolId"
          },
          "IdentityId": {
            "location": "uri",
            "locationName": "IdentityId"
          },
          "DatasetName": {
            "location": "uri",
            "locationName": "DatasetName"
          },
          "DeviceId": {
            "location": "uri",
            "locationName": "DeviceId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UpdateRecords": {
      "http": {
        "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "IdentityPoolId",
          "IdentityId",
          "DatasetName",
          "SyncSessionToken"
        ],
        "members": {
          "IdentityPoolId": {
            "location": "uri",
            "locationName": "IdentityPoolId"
          },
          "IdentityId": {
            "location": "uri",
            "locationName": "IdentityId"
          },
          "DatasetName": {
            "location": "uri",
            "locationName": "DatasetName"
          },
          "DeviceId": {},
          "RecordPatches": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Op",
                "Key",
                "SyncCount"
              ],
              "members": {
                "Op": {},
                "Key": {},
                "Value": {},
                "SyncCount": {
                  "type": "long"
                },
                "DeviceLastModifiedDate": {
                  "type": "timestamp"
                }
              }
            }
          },
          "SyncSessionToken": {},
          "ClientContext": {
            "location": "header",
            "locationName": "x-amz-Client-Context"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Records": {
            "shape": "S1c"
          }
        }
      }
    }
  },
  "shapes": {
    "S8": {
      "type": "structure",
      "members": {
        "IdentityId": {},
        "DatasetName": {},
        "CreationDate": {
          "type": "timestamp"
        },
        "LastModifiedDate": {
          "type": "timestamp"
        },
        "LastModifiedBy": {},
        "DataStorage": {
          "type": "long"
        },
        "NumRecords": {
          "type": "long"
        }
      }
    },
    "Sg": {
      "type": "structure",
      "members": {
        "IdentityPoolId": {},
        "SyncSessionsCount": {
          "type": "long"
        },
        "DataStorage": {
          "type": "long"
        },
        "LastModifiedDate": {
          "type": "timestamp"
        }
      }
    },
    "Sq": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "Sv": {
      "type": "structure",
      "members": {
        "ApplicationArns": {
          "type": "list",
          "member": {}
        },
        "RoleArn": {}
      }
    },
    "Sz": {
      "type": "structure",
      "members": {
        "StreamName": {},
        "RoleArn": {},
        "StreamingStatus": {}
      }
    },
    "S1c": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {},
          "SyncCount": {
            "type": "long"
          },
          "LastModifiedDate": {
            "type": "timestamp"
          },
          "LastModifiedBy": {},
          "DeviceLastModifiedDate": {
            "type": "timestamp"
          }
        }
      }
    }
  },
  "examples": {}
}
},{}],34:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2014-11-12",
    "endpointPrefix": "config",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "Config Service",
    "serviceFullName": "AWS Config",
    "signatureVersion": "v4",
    "targetPrefix": "StarlingDoveService",
    "uid": "config-2014-11-12"
  },
  "operations": {
    "DeleteConfigRule": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigRuleName"
        ],
        "members": {
          "ConfigRuleName": {}
        }
      }
    },
    "DeleteConfigurationRecorder": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigurationRecorderName"
        ],
        "members": {
          "ConfigurationRecorderName": {}
        }
      }
    },
    "DeleteDeliveryChannel": {
      "input": {
        "type": "structure",
        "required": [
          "DeliveryChannelName"
        ],
        "members": {
          "DeliveryChannelName": {}
        }
      }
    },
    "DeleteEvaluationResults": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigRuleName"
        ],
        "members": {
          "ConfigRuleName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeliverConfigSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "deliveryChannelName"
        ],
        "members": {
          "deliveryChannelName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "configSnapshotId": {}
        }
      }
    },
    "DescribeComplianceByConfigRule": {
      "input": {
        "type": "structure",
        "members": {
          "ConfigRuleNames": {
            "shape": "Sd"
          },
          "ComplianceTypes": {
            "shape": "Se"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ComplianceByConfigRules": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ConfigRuleName": {},
                "Compliance": {
                  "shape": "Sj"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeComplianceByResource": {
      "input": {
        "type": "structure",
        "members": {
          "ResourceType": {},
          "ResourceId": {},
          "ComplianceTypes": {
            "shape": "Se"
          },
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ComplianceByResources": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ResourceType": {},
                "ResourceId": {},
                "Compliance": {
                  "shape": "Sj"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeConfigRuleEvaluationStatus": {
      "input": {
        "type": "structure",
        "members": {
          "ConfigRuleNames": {
            "shape": "Sd"
          },
          "NextToken": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ConfigRulesEvaluationStatus": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ConfigRuleName": {},
                "ConfigRuleArn": {},
                "ConfigRuleId": {},
                "LastSuccessfulInvocationTime": {
                  "type": "timestamp"
                },
                "LastFailedInvocationTime": {
                  "type": "timestamp"
                },
                "LastSuccessfulEvaluationTime": {
                  "type": "timestamp"
                },
                "LastFailedEvaluationTime": {
                  "type": "timestamp"
                },
                "FirstActivatedTime": {
                  "type": "timestamp"
                },
                "LastErrorCode": {},
                "LastErrorMessage": {},
                "FirstEvaluationStarted": {
                  "type": "boolean"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeConfigRules": {
      "input": {
        "type": "structure",
        "members": {
          "ConfigRuleNames": {
            "shape": "Sd"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ConfigRules": {
            "type": "list",
            "member": {
              "shape": "S14"
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeConfigurationRecorderStatus": {
      "input": {
        "type": "structure",
        "members": {
          "ConfigurationRecorderNames": {
            "shape": "S1j"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ConfigurationRecordersStatus": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "name": {},
                "lastStartTime": {
                  "type": "timestamp"
                },
                "lastStopTime": {
                  "type": "timestamp"
                },
                "recording": {
                  "type": "boolean"
                },
                "lastStatus": {},
                "lastErrorCode": {},
                "lastErrorMessage": {},
                "lastStatusChangeTime": {
                  "type": "timestamp"
                }
              }
            }
          }
        }
      }
    },
    "DescribeConfigurationRecorders": {
      "input": {
        "type": "structure",
        "members": {
          "ConfigurationRecorderNames": {
            "shape": "S1j"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ConfigurationRecorders": {
            "type": "list",
            "member": {
              "shape": "S1r"
            }
          }
        }
      }
    },
    "DescribeDeliveryChannelStatus": {
      "input": {
        "type": "structure",
        "members": {
          "DeliveryChannelNames": {
            "shape": "S1y"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DeliveryChannelsStatus": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "name": {},
                "configSnapshotDeliveryInfo": {
                  "shape": "S22"
                },
                "configHistoryDeliveryInfo": {
                  "shape": "S22"
                },
                "configStreamDeliveryInfo": {
                  "type": "structure",
                  "members": {
                    "lastStatus": {},
                    "lastErrorCode": {},
                    "lastErrorMessage": {},
                    "lastStatusChangeTime": {
                      "type": "timestamp"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "DescribeDeliveryChannels": {
      "input": {
        "type": "structure",
        "members": {
          "DeliveryChannelNames": {
            "shape": "S1y"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DeliveryChannels": {
            "type": "list",
            "member": {
              "shape": "S28"
            }
          }
        }
      }
    },
    "GetComplianceDetailsByConfigRule": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigRuleName"
        ],
        "members": {
          "ConfigRuleName": {},
          "ComplianceTypes": {
            "shape": "Se"
          },
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "EvaluationResults": {
            "shape": "S2c"
          },
          "NextToken": {}
        }
      }
    },
    "GetComplianceDetailsByResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceType",
          "ResourceId"
        ],
        "members": {
          "ResourceType": {},
          "ResourceId": {},
          "ComplianceTypes": {
            "shape": "Se"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "EvaluationResults": {
            "shape": "S2c"
          },
          "NextToken": {}
        }
      }
    },
    "GetComplianceSummaryByConfigRule": {
      "output": {
        "type": "structure",
        "members": {
          "ComplianceSummary": {
            "shape": "S2j"
          }
        }
      }
    },
    "GetComplianceSummaryByResourceType": {
      "input": {
        "type": "structure",
        "members": {
          "ResourceTypes": {
            "shape": "S2l"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ComplianceSummariesByResourceType": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ResourceType": {},
                "ComplianceSummary": {
                  "shape": "S2j"
                }
              }
            }
          }
        }
      }
    },
    "GetDiscoveredResourceCounts": {
      "input": {
        "type": "structure",
        "members": {
          "resourceTypes": {
            "shape": "S2l"
          },
          "limit": {
            "type": "integer"
          },
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "totalDiscoveredResources": {
            "type": "long"
          },
          "resourceCounts": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "resourceType": {},
                "count": {
                  "type": "long"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "GetResourceConfigHistory": {
      "input": {
        "type": "structure",
        "required": [
          "resourceType",
          "resourceId"
        ],
        "members": {
          "resourceType": {},
          "resourceId": {},
          "laterTime": {
            "type": "timestamp"
          },
          "earlierTime": {
            "type": "timestamp"
          },
          "chronologicalOrder": {},
          "limit": {
            "type": "integer"
          },
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "configurationItems": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "version": {},
                "accountId": {},
                "configurationItemCaptureTime": {
                  "type": "timestamp"
                },
                "configurationItemStatus": {},
                "configurationStateId": {},
                "configurationItemMD5Hash": {},
                "arn": {},
                "resourceType": {},
                "resourceId": {},
                "resourceName": {},
                "awsRegion": {},
                "availabilityZone": {},
                "resourceCreationTime": {
                  "type": "timestamp"
                },
                "tags": {
                  "type": "map",
                  "key": {},
                  "value": {}
                },
                "relatedEvents": {
                  "type": "list",
                  "member": {}
                },
                "relationships": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "resourceType": {},
                      "resourceId": {},
                      "resourceName": {},
                      "relationshipName": {}
                    }
                  }
                },
                "configuration": {},
                "supplementaryConfiguration": {
                  "type": "map",
                  "key": {},
                  "value": {}
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListDiscoveredResources": {
      "input": {
        "type": "structure",
        "required": [
          "resourceType"
        ],
        "members": {
          "resourceType": {},
          "resourceIds": {
            "type": "list",
            "member": {}
          },
          "resourceName": {},
          "limit": {
            "type": "integer"
          },
          "includeDeletedResources": {
            "type": "boolean"
          },
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "resourceIdentifiers": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "resourceType": {},
                "resourceId": {},
                "resourceName": {},
                "resourceDeletionTime": {
                  "type": "timestamp"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "PutConfigRule": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigRule"
        ],
        "members": {
          "ConfigRule": {
            "shape": "S14"
          }
        }
      }
    },
    "PutConfigurationRecorder": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigurationRecorder"
        ],
        "members": {
          "ConfigurationRecorder": {
            "shape": "S1r"
          }
        }
      }
    },
    "PutDeliveryChannel": {
      "input": {
        "type": "structure",
        "required": [
          "DeliveryChannel"
        ],
        "members": {
          "DeliveryChannel": {
            "shape": "S28"
          }
        }
      }
    },
    "PutEvaluations": {
      "input": {
        "type": "structure",
        "required": [
          "ResultToken"
        ],
        "members": {
          "Evaluations": {
            "shape": "S3z"
          },
          "ResultToken": {},
          "TestMode": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FailedEvaluations": {
            "shape": "S3z"
          }
        }
      }
    },
    "StartConfigRulesEvaluation": {
      "input": {
        "type": "structure",
        "members": {
          "ConfigRuleNames": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "StartConfigurationRecorder": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigurationRecorderName"
        ],
        "members": {
          "ConfigurationRecorderName": {}
        }
      }
    },
    "StopConfigurationRecorder": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigurationRecorderName"
        ],
        "members": {
          "ConfigurationRecorderName": {}
        }
      }
    }
  },
  "shapes": {
    "Sd": {
      "type": "list",
      "member": {}
    },
    "Se": {
      "type": "list",
      "member": {}
    },
    "Sj": {
      "type": "structure",
      "members": {
        "ComplianceType": {},
        "ComplianceContributorCount": {
          "shape": "Sk"
        }
      }
    },
    "Sk": {
      "type": "structure",
      "members": {
        "CappedCount": {
          "type": "integer"
        },
        "CapExceeded": {
          "type": "boolean"
        }
      }
    },
    "S14": {
      "type": "structure",
      "required": [
        "Source"
      ],
      "members": {
        "ConfigRuleName": {},
        "ConfigRuleArn": {},
        "ConfigRuleId": {},
        "Description": {},
        "Scope": {
          "type": "structure",
          "members": {
            "ComplianceResourceTypes": {
              "type": "list",
              "member": {}
            },
            "TagKey": {},
            "TagValue": {},
            "ComplianceResourceId": {}
          }
        },
        "Source": {
          "type": "structure",
          "required": [
            "Owner",
            "SourceIdentifier"
          ],
          "members": {
            "Owner": {},
            "SourceIdentifier": {},
            "SourceDetails": {
              "type": "list",
              "member": {
                "type": "structure",
                "members": {
                  "EventSource": {},
                  "MessageType": {},
                  "MaximumExecutionFrequency": {}
                }
              }
            }
          }
        },
        "InputParameters": {},
        "MaximumExecutionFrequency": {},
        "ConfigRuleState": {}
      }
    },
    "S1j": {
      "type": "list",
      "member": {}
    },
    "S1r": {
      "type": "structure",
      "members": {
        "name": {},
        "roleARN": {},
        "recordingGroup": {
          "type": "structure",
          "members": {
            "allSupported": {
              "type": "boolean"
            },
            "includeGlobalResourceTypes": {
              "type": "boolean"
            },
            "resourceTypes": {
              "type": "list",
              "member": {}
            }
          }
        }
      }
    },
    "S1y": {
      "type": "list",
      "member": {}
    },
    "S22": {
      "type": "structure",
      "members": {
        "lastStatus": {},
        "lastErrorCode": {},
        "lastErrorMessage": {},
        "lastAttemptTime": {
          "type": "timestamp"
        },
        "lastSuccessfulTime": {
          "type": "timestamp"
        },
        "nextDeliveryTime": {
          "type": "timestamp"
        }
      }
    },
    "S28": {
      "type": "structure",
      "members": {
        "name": {},
        "s3BucketName": {},
        "s3KeyPrefix": {},
        "snsTopicARN": {},
        "configSnapshotDeliveryProperties": {
          "type": "structure",
          "members": {
            "deliveryFrequency": {}
          }
        }
      }
    },
    "S2c": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "EvaluationResultIdentifier": {
            "type": "structure",
            "members": {
              "EvaluationResultQualifier": {
                "type": "structure",
                "members": {
                  "ConfigRuleName": {},
                  "ResourceType": {},
                  "ResourceId": {}
                }
              },
              "OrderingTimestamp": {
                "type": "timestamp"
              }
            }
          },
          "ComplianceType": {},
          "ResultRecordedTime": {
            "type": "timestamp"
          },
          "ConfigRuleInvokedTime": {
            "type": "timestamp"
          },
          "Annotation": {},
          "ResultToken": {}
        }
      }
    },
    "S2j": {
      "type": "structure",
      "members": {
        "CompliantResourceCount": {
          "shape": "Sk"
        },
        "NonCompliantResourceCount": {
          "shape": "Sk"
        },
        "ComplianceSummaryTimestamp": {
          "type": "timestamp"
        }
      }
    },
    "S2l": {
      "type": "list",
      "member": {}
    },
    "S3z": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "ComplianceResourceType",
          "ComplianceResourceId",
          "ComplianceType",
          "OrderingTimestamp"
        ],
        "members": {
          "ComplianceResourceType": {},
          "ComplianceResourceId": {},
          "ComplianceType": {},
          "Annotation": {},
          "OrderingTimestamp": {
            "type": "timestamp"
          }
        }
      }
    }
  }
}
},{}],35:[function(require,module,exports){
module.exports={
  "pagination": {
    "GetResourceConfigHistory": {
      "input_token": "nextToken",
      "limit_key": "limit",
      "output_token": "nextToken",
      "result_key": "configurationItems"
    }
  }
}
},{}],36:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2017-01-06",
    "endpointPrefix": "cur",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceFullName": "AWS Cost and Usage Report Service",
    "signatureVersion": "v4",
    "signingName": "cur",
    "targetPrefix": "AWSOrigamiServiceGatewayService",
    "uid": "cur-2017-01-06"
  },
  "operations": {
    "DeleteReportDefinition": {
      "input": {
        "type": "structure",
        "members": {
          "ReportName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResponseMessage": {}
        }
      }
    },
    "DescribeReportDefinitions": {
      "input": {
        "type": "structure",
        "members": {
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ReportDefinitions": {
            "type": "list",
            "member": {
              "shape": "Sa"
            }
          },
          "NextToken": {}
        }
      }
    },
    "PutReportDefinition": {
      "input": {
        "type": "structure",
        "required": [
          "ReportDefinition"
        ],
        "members": {
          "ReportDefinition": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    }
  },
  "shapes": {
    "Sa": {
      "type": "structure",
      "required": [
        "ReportName",
        "TimeUnit",
        "Format",
        "Compression",
        "AdditionalSchemaElements",
        "S3Bucket",
        "S3Prefix",
        "S3Region"
      ],
      "members": {
        "ReportName": {},
        "TimeUnit": {},
        "Format": {},
        "Compression": {},
        "AdditionalSchemaElements": {
          "type": "list",
          "member": {}
        },
        "S3Bucket": {},
        "S3Prefix": {},
        "S3Region": {},
        "AdditionalArtifacts": {
          "type": "list",
          "member": {}
        }
      }
    }
  }
}
},{}],37:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeReportDefinitions": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "limit_key": "MaxResults"
    }
  }
}

},{}],38:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-06-23",
    "endpointPrefix": "devicefarm",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceFullName": "AWS Device Farm",
    "signatureVersion": "v4",
    "targetPrefix": "DeviceFarm_20150623",
    "uid": "devicefarm-2015-06-23"
  },
  "operations": {
    "CreateDevicePool": {
      "input": {
        "type": "structure",
        "required": [
          "projectArn",
          "name",
          "rules"
        ],
        "members": {
          "projectArn": {},
          "name": {},
          "description": {},
          "rules": {
            "shape": "S5"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "devicePool": {
            "shape": "Sb"
          }
        }
      }
    },
    "CreateNetworkProfile": {
      "input": {
        "type": "structure",
        "required": [
          "projectArn",
          "name"
        ],
        "members": {
          "projectArn": {},
          "name": {},
          "description": {},
          "type": {},
          "uplinkBandwidthBits": {
            "type": "long"
          },
          "downlinkBandwidthBits": {
            "type": "long"
          },
          "uplinkDelayMs": {
            "type": "long"
          },
          "downlinkDelayMs": {
            "type": "long"
          },
          "uplinkJitterMs": {
            "type": "long"
          },
          "downlinkJitterMs": {
            "type": "long"
          },
          "uplinkLossPercent": {
            "type": "integer"
          },
          "downlinkLossPercent": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "networkProfile": {
            "shape": "Si"
          }
        }
      }
    },
    "CreateProject": {
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {},
          "defaultJobTimeoutMinutes": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "project": {
            "shape": "Sm"
          }
        }
      }
    },
    "CreateRemoteAccessSession": {
      "input": {
        "type": "structure",
        "required": [
          "projectArn",
          "deviceArn"
        ],
        "members": {
          "projectArn": {},
          "deviceArn": {},
          "sshPublicKey": {},
          "remoteDebugEnabled": {
            "type": "boolean"
          },
          "name": {},
          "clientId": {},
          "configuration": {
            "type": "structure",
            "members": {
              "billingMethod": {}
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "remoteAccessSession": {
            "shape": "Sv"
          }
        }
      }
    },
    "CreateUpload": {
      "input": {
        "type": "structure",
        "required": [
          "projectArn",
          "name",
          "type"
        ],
        "members": {
          "projectArn": {},
          "name": {},
          "type": {},
          "contentType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "upload": {
            "shape": "S1b"
          }
        }
      }
    },
    "DeleteDevicePool": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteNetworkProfile": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteProject": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteRemoteAccessSession": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteRun": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteUpload": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "GetAccountSettings": {
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "members": {
          "accountSettings": {
            "type": "structure",
            "members": {
              "awsAccountNumber": {},
              "unmeteredDevices": {
                "shape": "S1v"
              },
              "unmeteredRemoteAccessDevices": {
                "shape": "S1v"
              },
              "maxJobTimeoutMinutes": {
                "type": "integer"
              },
              "trialMinutes": {
                "type": "structure",
                "members": {
                  "total": {
                    "type": "double"
                  },
                  "remaining": {
                    "type": "double"
                  }
                }
              },
              "maxSlots": {
                "type": "map",
                "key": {},
                "value": {
                  "type": "integer"
                }
              },
              "defaultJobTimeoutMinutes": {
                "type": "integer"
              }
            }
          }
        }
      }
    },
    "GetDevice": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "device": {
            "shape": "Sy"
          }
        }
      }
    },
    "GetDevicePool": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "devicePool": {
            "shape": "Sb"
          }
        }
      }
    },
    "GetDevicePoolCompatibility": {
      "input": {
        "type": "structure",
        "required": [
          "devicePoolArn"
        ],
        "members": {
          "devicePoolArn": {},
          "appArn": {},
          "testType": {},
          "test": {
            "shape": "S24"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "compatibleDevices": {
            "shape": "S28"
          },
          "incompatibleDevices": {
            "shape": "S28"
          }
        }
      }
    },
    "GetJob": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "job": {
            "shape": "S2e"
          }
        }
      }
    },
    "GetNetworkProfile": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "networkProfile": {
            "shape": "Si"
          }
        }
      }
    },
    "GetOfferingStatus": {
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "current": {
            "shape": "S2l"
          },
          "nextPeriod": {
            "shape": "S2l"
          },
          "nextToken": {}
        }
      }
    },
    "GetProject": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "project": {
            "shape": "Sm"
          }
        }
      }
    },
    "GetRemoteAccessSession": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "remoteAccessSession": {
            "shape": "Sv"
          }
        }
      }
    },
    "GetRun": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "run": {
            "shape": "S32"
          }
        }
      }
    },
    "GetSuite": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "suite": {
            "shape": "S3a"
          }
        }
      }
    },
    "GetTest": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "test": {
            "shape": "S3d"
          }
        }
      }
    },
    "GetUpload": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "upload": {
            "shape": "S1b"
          }
        }
      }
    },
    "InstallToRemoteAccessSession": {
      "input": {
        "type": "structure",
        "required": [
          "remoteAccessSessionArn",
          "appArn"
        ],
        "members": {
          "remoteAccessSessionArn": {},
          "appArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "appUpload": {
            "shape": "S1b"
          }
        }
      }
    },
    "ListArtifacts": {
      "input": {
        "type": "structure",
        "required": [
          "arn",
          "type"
        ],
        "members": {
          "arn": {},
          "type": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "artifacts": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "arn": {},
                "name": {},
                "type": {},
                "extension": {},
                "url": {}
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListDevicePools": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {},
          "type": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "devicePools": {
            "type": "list",
            "member": {
              "shape": "Sb"
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListDevices": {
      "input": {
        "type": "structure",
        "members": {
          "arn": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "devices": {
            "type": "list",
            "member": {
              "shape": "Sy"
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListJobs": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "jobs": {
            "type": "list",
            "member": {
              "shape": "S2e"
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListNetworkProfiles": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {},
          "type": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "networkProfiles": {
            "type": "list",
            "member": {
              "shape": "Si"
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListOfferingPromotions": {
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "offeringPromotions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "id": {},
                "description": {}
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListOfferingTransactions": {
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "offeringTransactions": {
            "type": "list",
            "member": {
              "shape": "S48"
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListOfferings": {
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "offerings": {
            "type": "list",
            "member": {
              "shape": "S2p"
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListProjects": {
      "input": {
        "type": "structure",
        "members": {
          "arn": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "projects": {
            "type": "list",
            "member": {
              "shape": "Sm"
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListRemoteAccessSessions": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "remoteAccessSessions": {
            "type": "list",
            "member": {
              "shape": "Sv"
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListRuns": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "runs": {
            "type": "list",
            "member": {
              "shape": "S32"
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListSamples": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "samples": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "arn": {},
                "type": {},
                "url": {}
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListSuites": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "suites": {
            "type": "list",
            "member": {
              "shape": "S3a"
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListTests": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "tests": {
            "type": "list",
            "member": {
              "shape": "S3d"
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListUniqueProblems": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "uniqueProblems": {
            "type": "map",
            "key": {},
            "value": {
              "type": "list",
              "member": {
                "type": "structure",
                "members": {
                  "message": {},
                  "problems": {
                    "type": "list",
                    "member": {
                      "type": "structure",
                      "members": {
                        "run": {
                          "shape": "S54"
                        },
                        "job": {
                          "shape": "S54"
                        },
                        "suite": {
                          "shape": "S54"
                        },
                        "test": {
                          "shape": "S54"
                        },
                        "device": {
                          "shape": "Sy"
                        },
                        "result": {},
                        "message": {}
                      }
                    }
                  }
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListUploads": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {},
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "uploads": {
            "type": "list",
            "member": {
              "shape": "S1b"
            }
          },
          "nextToken": {}
        }
      }
    },
    "PurchaseOffering": {
      "input": {
        "type": "structure",
        "members": {
          "offeringId": {},
          "quantity": {
            "type": "integer"
          },
          "offeringPromotionId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "offeringTransaction": {
            "shape": "S48"
          }
        }
      }
    },
    "RenewOffering": {
      "input": {
        "type": "structure",
        "members": {
          "offeringId": {},
          "quantity": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "offeringTransaction": {
            "shape": "S48"
          }
        }
      }
    },
    "ScheduleRun": {
      "input": {
        "type": "structure",
        "required": [
          "projectArn",
          "devicePoolArn",
          "test"
        ],
        "members": {
          "projectArn": {},
          "appArn": {},
          "devicePoolArn": {},
          "name": {},
          "test": {
            "shape": "S24"
          },
          "configuration": {
            "type": "structure",
            "members": {
              "extraDataPackageArn": {},
              "networkProfileArn": {},
              "locale": {},
              "location": {
                "type": "structure",
                "required": [
                  "latitude",
                  "longitude"
                ],
                "members": {
                  "latitude": {
                    "type": "double"
                  },
                  "longitude": {
                    "type": "double"
                  }
                }
              },
              "customerArtifactPaths": {
                "shape": "S34"
              },
              "radios": {
                "type": "structure",
                "members": {
                  "wifi": {
                    "type": "boolean"
                  },
                  "bluetooth": {
                    "type": "boolean"
                  },
                  "nfc": {
                    "type": "boolean"
                  },
                  "gps": {
                    "type": "boolean"
                  }
                }
              },
              "auxiliaryApps": {
                "type": "list",
                "member": {}
              },
              "billingMethod": {}
            }
          },
          "executionConfiguration": {
            "type": "structure",
            "members": {
              "jobTimeoutMinutes": {
                "type": "integer"
              },
              "accountsCleanup": {
                "type": "boolean"
              },
              "appPackagesCleanup": {
                "type": "boolean"
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "run": {
            "shape": "S32"
          }
        }
      }
    },
    "StopRemoteAccessSession": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "remoteAccessSession": {
            "shape": "Sv"
          }
        }
      }
    },
    "StopRun": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "run": {
            "shape": "S32"
          }
        }
      }
    },
    "UpdateDevicePool": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {},
          "name": {},
          "description": {},
          "rules": {
            "shape": "S5"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "devicePool": {
            "shape": "Sb"
          }
        }
      }
    },
    "UpdateNetworkProfile": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {},
          "name": {},
          "description": {},
          "type": {},
          "uplinkBandwidthBits": {
            "type": "long"
          },
          "downlinkBandwidthBits": {
            "type": "long"
          },
          "uplinkDelayMs": {
            "type": "long"
          },
          "downlinkDelayMs": {
            "type": "long"
          },
          "uplinkJitterMs": {
            "type": "long"
          },
          "downlinkJitterMs": {
            "type": "long"
          },
          "uplinkLossPercent": {
            "type": "integer"
          },
          "downlinkLossPercent": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "networkProfile": {
            "shape": "Si"
          }
        }
      }
    },
    "UpdateProject": {
      "input": {
        "type": "structure",
        "required": [
          "arn"
        ],
        "members": {
          "arn": {},
          "name": {},
          "defaultJobTimeoutMinutes": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "project": {
            "shape": "Sm"
          }
        }
      }
    }
  },
  "shapes": {
    "S5": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "attribute": {},
          "operator": {},
          "value": {}
        }
      }
    },
    "Sb": {
      "type": "structure",
      "members": {
        "arn": {},
        "name": {},
        "description": {},
        "type": {},
        "rules": {
          "shape": "S5"
        }
      }
    },
    "Si": {
      "type": "structure",
      "members": {
        "arn": {},
        "name": {},
        "description": {},
        "type": {},
        "uplinkBandwidthBits": {
          "type": "long"
        },
        "downlinkBandwidthBits": {
          "type": "long"
        },
        "uplinkDelayMs": {
          "type": "long"
        },
        "downlinkDelayMs": {
          "type": "long"
        },
        "uplinkJitterMs": {
          "type": "long"
        },
        "downlinkJitterMs": {
          "type": "long"
        },
        "uplinkLossPercent": {
          "type": "integer"
        },
        "downlinkLossPercent": {
          "type": "integer"
        }
      }
    },
    "Sm": {
      "type": "structure",
      "members": {
        "arn": {},
        "name": {},
        "defaultJobTimeoutMinutes": {
          "type": "integer"
        },
        "created": {
          "type": "timestamp"
        }
      }
    },
    "Sv": {
      "type": "structure",
      "members": {
        "arn": {},
        "name": {},
        "created": {
          "type": "timestamp"
        },
        "status": {},
        "result": {},
        "message": {},
        "started": {
          "type": "timestamp"
        },
        "stopped": {
          "type": "timestamp"
        },
        "device": {
          "shape": "Sy"
        },
        "remoteDebugEnabled": {
          "type": "boolean"
        },
        "hostAddress": {},
        "clientId": {},
        "billingMethod": {},
        "deviceMinutes": {
          "shape": "S16"
        },
        "endpoint": {},
        "deviceUdid": {}
      }
    },
    "Sy": {
      "type": "structure",
      "members": {
        "arn": {},
        "name": {},
        "manufacturer": {},
        "model": {},
        "formFactor": {},
        "platform": {},
        "os": {},
        "cpu": {
          "type": "structure",
          "members": {
            "frequency": {},
            "architecture": {},
            "clock": {
              "type": "double"
            }
          }
        },
        "resolution": {
          "type": "structure",
          "members": {
            "width": {
              "type": "integer"
            },
            "height": {
              "type": "integer"
            }
          }
        },
        "heapSize": {
          "type": "long"
        },
        "memory": {
          "type": "long"
        },
        "image": {},
        "carrier": {},
        "radio": {},
        "remoteAccessEnabled": {
          "type": "boolean"
        },
        "remoteDebugEnabled": {
          "type": "boolean"
        },
        "fleetType": {},
        "fleetName": {}
      }
    },
    "S16": {
      "type": "structure",
      "members": {
        "total": {
          "type": "double"
        },
        "metered": {
          "type": "double"
        },
        "unmetered": {
          "type": "double"
        }
      }
    },
    "S1b": {
      "type": "structure",
      "members": {
        "arn": {},
        "name": {},
        "created": {
          "type": "timestamp"
        },
        "type": {},
        "status": {},
        "url": {},
        "metadata": {},
        "contentType": {},
        "message": {}
      }
    },
    "S1v": {
      "type": "map",
      "key": {},
      "value": {
        "type": "integer"
      }
    },
    "S24": {
      "type": "structure",
      "required": [
        "type"
      ],
      "members": {
        "type": {},
        "testPackageArn": {},
        "filter": {},
        "parameters": {
          "type": "map",
          "key": {},
          "value": {}
        }
      }
    },
    "S28": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "device": {
            "shape": "Sy"
          },
          "compatible": {
            "type": "boolean"
          },
          "incompatibilityMessages": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "message": {},
                "type": {}
              }
            }
          }
        }
      }
    },
    "S2e": {
      "type": "structure",
      "members": {
        "arn": {},
        "name": {},
        "type": {},
        "created": {
          "type": "timestamp"
        },
        "status": {},
        "result": {},
        "started": {
          "type": "timestamp"
        },
        "stopped": {
          "type": "timestamp"
        },
        "counters": {
          "shape": "S2f"
        },
        "message": {},
        "device": {
          "shape": "Sy"
        },
        "deviceMinutes": {
          "shape": "S16"
        }
      }
    },
    "S2f": {
      "type": "structure",
      "members": {
        "total": {
          "type": "integer"
        },
        "passed": {
          "type": "integer"
        },
        "failed": {
          "type": "integer"
        },
        "warned": {
          "type": "integer"
        },
        "errored": {
          "type": "integer"
        },
        "stopped": {
          "type": "integer"
        },
        "skipped": {
          "type": "integer"
        }
      }
    },
    "S2l": {
      "type": "map",
      "key": {},
      "value": {
        "shape": "S2n"
      }
    },
    "S2n": {
      "type": "structure",
      "members": {
        "type": {},
        "offering": {
          "shape": "S2p"
        },
        "quantity": {
          "type": "integer"
        },
        "effectiveOn": {
          "type": "timestamp"
        }
      }
    },
    "S2p": {
      "type": "structure",
      "members": {
        "id": {},
        "description": {},
        "type": {},
        "platform": {},
        "recurringCharges": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "cost": {
                "shape": "S2t"
              },
              "frequency": {}
            }
          }
        }
      }
    },
    "S2t": {
      "type": "structure",
      "members": {
        "amount": {
          "type": "double"
        },
        "currencyCode": {}
      }
    },
    "S32": {
      "type": "structure",
      "members": {
        "arn": {},
        "name": {},
        "type": {},
        "platform": {},
        "created": {
          "type": "timestamp"
        },
        "status": {},
        "result": {},
        "started": {
          "type": "timestamp"
        },
        "stopped": {
          "type": "timestamp"
        },
        "counters": {
          "shape": "S2f"
        },
        "message": {},
        "totalJobs": {
          "type": "integer"
        },
        "completedJobs": {
          "type": "integer"
        },
        "billingMethod": {},
        "deviceMinutes": {
          "shape": "S16"
        },
        "networkProfile": {
          "shape": "Si"
        },
        "parsingResultUrl": {},
        "resultCode": {},
        "customerArtifactPaths": {
          "shape": "S34"
        }
      }
    },
    "S34": {
      "type": "structure",
      "members": {
        "iosPaths": {
          "type": "list",
          "member": {}
        },
        "androidPaths": {
          "type": "list",
          "member": {}
        },
        "deviceHostPaths": {
          "type": "list",
          "member": {}
        }
      }
    },
    "S3a": {
      "type": "structure",
      "members": {
        "arn": {},
        "name": {},
        "type": {},
        "created": {
          "type": "timestamp"
        },
        "status": {},
        "result": {},
        "started": {
          "type": "timestamp"
        },
        "stopped": {
          "type": "timestamp"
        },
        "counters": {
          "shape": "S2f"
        },
        "message": {},
        "deviceMinutes": {
          "shape": "S16"
        }
      }
    },
    "S3d": {
      "type": "structure",
      "members": {
        "arn": {},
        "name": {},
        "type": {},
        "created": {
          "type": "timestamp"
        },
        "status": {},
        "result": {},
        "started": {
          "type": "timestamp"
        },
        "stopped": {
          "type": "timestamp"
        },
        "counters": {
          "shape": "S2f"
        },
        "message": {},
        "deviceMinutes": {
          "shape": "S16"
        }
      }
    },
    "S48": {
      "type": "structure",
      "members": {
        "offeringStatus": {
          "shape": "S2n"
        },
        "transactionId": {},
        "offeringPromotionId": {},
        "createdOn": {
          "type": "timestamp"
        },
        "cost": {
          "shape": "S2t"
        }
      }
    },
    "S54": {
      "type": "structure",
      "members": {
        "arn": {},
        "name": {}
      }
    }
  }
}
},{}],39:[function(require,module,exports){
module.exports={
  "pagination": {
    "GetOfferingStatus": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": [
        "current",
        "nextPeriod"
      ]
    },
    "ListArtifacts": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "artifacts"
    },
    "ListDevicePools": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "devicePools"
    },
    "ListDevices": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "devices"
    },
    "ListJobs": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "jobs"
    },
    "ListOfferingTransactions": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "offeringTransactions"
    },
    "ListOfferings": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "offerings"
    },
    "ListProjects": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "projects"
    },
    "ListRuns": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "runs"
    },
    "ListSamples": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "samples"
    },
    "ListSuites": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "suites"
    },
    "ListTests": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "tests"
    },
    "ListUniqueProblems": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "uniqueProblems"
    },
    "ListUploads": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "result_key": "uploads"
    }
  }
}
},{}],40:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2012-10-25",
    "endpointPrefix": "directconnect",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceFullName": "AWS Direct Connect",
    "signatureVersion": "v4",
    "targetPrefix": "OvertureService",
    "uid": "directconnect-2012-10-25"
  },
  "operations": {
    "AllocateConnectionOnInterconnect": {
      "input": {
        "type": "structure",
        "required": [
          "bandwidth",
          "connectionName",
          "ownerAccount",
          "interconnectId",
          "vlan"
        ],
        "members": {
          "bandwidth": {},
          "connectionName": {},
          "ownerAccount": {},
          "interconnectId": {},
          "vlan": {
            "type": "integer"
          }
        }
      },
      "output": {
        "shape": "S7"
      },
      "deprecated": true
    },
    "AllocateHostedConnection": {
      "input": {
        "type": "structure",
        "required": [
          "connectionId",
          "ownerAccount",
          "bandwidth",
          "connectionName",
          "vlan"
        ],
        "members": {
          "connectionId": {},
          "ownerAccount": {},
          "bandwidth": {},
          "connectionName": {},
          "vlan": {
            "type": "integer"
          }
        }
      },
      "output": {
        "shape": "S7"
      }
    },
    "AllocatePrivateVirtualInterface": {
      "input": {
        "type": "structure",
        "required": [
          "connectionId",
          "ownerAccount",
          "newPrivateVirtualInterfaceAllocation"
        ],
        "members": {
          "connectionId": {},
          "ownerAccount": {},
          "newPrivateVirtualInterfaceAllocation": {
            "type": "structure",
            "required": [
              "virtualInterfaceName",
              "vlan",
              "asn"
            ],
            "members": {
              "virtualInterfaceName": {},
              "vlan": {
                "type": "integer"
              },
              "asn": {
                "type": "integer"
              },
              "authKey": {},
              "amazonAddress": {},
              "addressFamily": {},
              "customerAddress": {}
            }
          }
        }
      },
      "output": {
        "shape": "Sp"
      }
    },
    "AllocatePublicVirtualInterface": {
      "input": {
        "type": "structure",
        "required": [
          "connectionId",
          "ownerAccount",
          "newPublicVirtualInterfaceAllocation"
        ],
        "members": {
          "connectionId": {},
          "ownerAccount": {},
          "newPublicVirtualInterfaceAllocation": {
            "type": "structure",
            "required": [
              "virtualInterfaceName",
              "vlan",
              "asn"
            ],
            "members": {
              "virtualInterfaceName": {},
              "vlan": {
                "type": "integer"
              },
              "asn": {
                "type": "integer"
              },
              "authKey": {},
              "amazonAddress": {},
              "customerAddress": {},
              "addressFamily": {},
              "routeFilterPrefixes": {
                "shape": "Sx"
              }
            }
          }
        }
      },
      "output": {
        "shape": "Sp"
      }
    },
    "AssociateConnectionWithLag": {
      "input": {
        "type": "structure",
        "required": [
          "connectionId",
          "lagId"
        ],
        "members": {
          "connectionId": {},
          "lagId": {}
        }
      },
      "output": {
        "shape": "S7"
      }
    },
    "AssociateHostedConnection": {
      "input": {
        "type": "structure",
        "required": [
          "connectionId",
          "parentConnectionId"
        ],
        "members": {
          "connectionId": {},
          "parentConnectionId": {}
        }
      },
      "output": {
        "shape": "S7"
      }
    },
    "AssociateVirtualInterface": {
      "input": {
        "type": "structure",
        "required": [
          "virtualInterfaceId",
          "connectionId"
        ],
        "members": {
          "virtualInterfaceId": {},
          "connectionId": {}
        }
      },
      "output": {
        "shape": "Sp"
      }
    },
    "ConfirmConnection": {
      "input": {
        "type": "structure",
        "required": [
          "connectionId"
        ],
        "members": {
          "connectionId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "connectionState": {}
        }
      }
    },
    "ConfirmPrivateVirtualInterface": {
      "input": {
        "type": "structure",
        "required": [
          "virtualInterfaceId"
        ],
        "members": {
          "virtualInterfaceId": {},
          "virtualGatewayId": {},
          "directConnectGatewayId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "virtualInterfaceState": {}
        }
      }
    },
    "ConfirmPublicVirtualInterface": {
      "input": {
        "type": "structure",
        "required": [
          "virtualInterfaceId"
        ],
        "members": {
          "virtualInterfaceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "virtualInterfaceState": {}
        }
      }
    },
    "CreateBGPPeer": {
      "input": {
        "type": "structure",
        "members": {
          "virtualInterfaceId": {},
          "newBGPPeer": {
            "type": "structure",
            "members": {
              "asn": {
                "type": "integer"
              },
              "authKey": {},
              "addressFamily": {},
              "amazonAddress": {},
              "customerAddress": {}
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "virtualInterface": {
            "shape": "Sp"
          }
        }
      }
    },
    "CreateConnection": {
      "input": {
        "type": "structure",
        "required": [
          "location",
          "bandwidth",
          "connectionName"
        ],
        "members": {
          "location": {},
          "bandwidth": {},
          "connectionName": {},
          "lagId": {}
        }
      },
      "output": {
        "shape": "S7"
      }
    },
    "CreateDirectConnectGateway": {
      "input": {
        "type": "structure",
        "required": [
          "directConnectGatewayName"
        ],
        "members": {
          "directConnectGatewayName": {},
          "amazonSideAsn": {
            "type": "long"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "directConnectGateway": {
            "shape": "S1m"
          }
        }
      }
    },
    "CreateDirectConnectGatewayAssociation": {
      "input": {
        "type": "structure",
        "required": [
          "directConnectGatewayId",
          "virtualGatewayId"
        ],
        "members": {
          "directConnectGatewayId": {},
          "virtualGatewayId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "directConnectGatewayAssociation": {
            "shape": "S1r"
          }
        }
      }
    },
    "CreateInterconnect": {
      "input": {
        "type": "structure",
        "required": [
          "interconnectName",
          "bandwidth",
          "location"
        ],
        "members": {
          "interconnectName": {},
          "bandwidth": {},
          "location": {},
          "lagId": {}
        }
      },
      "output": {
        "shape": "S1w"
      }
    },
    "CreateLag": {
      "input": {
        "type": "structure",
        "required": [
          "numberOfConnections",
          "location",
          "connectionsBandwidth",
          "lagName"
        ],
        "members": {
          "numberOfConnections": {
            "type": "integer"
          },
          "location": {},
          "connectionsBandwidth": {},
          "lagName": {},
          "connectionId": {}
        }
      },
      "output": {
        "shape": "S21"
      }
    },
    "CreatePrivateVirtualInterface": {
      "input": {
        "type": "structure",
        "required": [
          "connectionId",
          "newPrivateVirtualInterface"
        ],
        "members": {
          "connectionId": {},
          "newPrivateVirtualInterface": {
            "type": "structure",
            "required": [
              "virtualInterfaceName",
              "vlan",
              "asn"
            ],
            "members": {
              "virtualInterfaceName": {},
              "vlan": {
                "type": "integer"
              },
              "asn": {
                "type": "integer"
              },
              "authKey": {},
              "amazonAddress": {},
              "customerAddress": {},
              "addressFamily": {},
              "virtualGatewayId": {},
              "directConnectGatewayId": {}
            }
          }
        }
      },
      "output": {
        "shape": "Sp"
      }
    },
    "CreatePublicVirtualInterface": {
      "input": {
        "type": "structure",
        "required": [
          "connectionId",
          "newPublicVirtualInterface"
        ],
        "members": {
          "connectionId": {},
          "newPublicVirtualInterface": {
            "type": "structure",
            "required": [
              "virtualInterfaceName",
              "vlan",
              "asn"
            ],
            "members": {
              "virtualInterfaceName": {},
              "vlan": {
                "type": "integer"
              },
              "asn": {
                "type": "integer"
              },
              "authKey": {},
              "amazonAddress": {},
              "customerAddress": {},
              "addressFamily": {},
              "routeFilterPrefixes": {
                "shape": "Sx"
              }
            }
          }
        }
      },
      "output": {
        "shape": "Sp"
      }
    },
    "DeleteBGPPeer": {
      "input": {
        "type": "structure",
        "members": {
          "virtualInterfaceId": {},
          "asn": {
            "type": "integer"
          },
          "customerAddress": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "virtualInterface": {
            "shape": "Sp"
          }
        }
      }
    },
    "DeleteConnection": {
      "input": {
        "type": "structure",
        "required": [
          "connectionId"
        ],
        "members": {
          "connectionId": {}
        }
      },
      "output": {
        "shape": "S7"
      }
    },
    "DeleteDirectConnectGateway": {
      "input": {
        "type": "structure",
        "required": [
          "directConnectGatewayId"
        ],
        "members": {
          "directConnectGatewayId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "directConnectGateway": {
            "shape": "S1m"
          }
        }
      }
    },
    "DeleteDirectConnectGatewayAssociation": {
      "input": {
        "type": "structure",
        "required": [
          "directConnectGatewayId",
          "virtualGatewayId"
        ],
        "members": {
          "directConnectGatewayId": {},
          "virtualGatewayId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "directConnectGatewayAssociation": {
            "shape": "S1r"
          }
        }
      }
    },
    "DeleteInterconnect": {
      "input": {
        "type": "structure",
        "required": [
          "interconnectId"
        ],
        "members": {
          "interconnectId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "interconnectState": {}
        }
      }
    },
    "DeleteLag": {
      "input": {
        "type": "structure",
        "required": [
          "lagId"
        ],
        "members": {
          "lagId": {}
        }
      },
      "output": {
        "shape": "S21"
      }
    },
    "DeleteVirtualInterface": {
      "input": {
        "type": "structure",
        "required": [
          "virtualInterfaceId"
        ],
        "members": {
          "virtualInterfaceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "virtualInterfaceState": {}
        }
      }
    },
    "DescribeConnectionLoa": {
      "input": {
        "type": "structure",
        "required": [
          "connectionId"
        ],
        "members": {
          "connectionId": {},
          "providerName": {},
          "loaContentType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "loa": {
            "shape": "S2p"
          }
        }
      },
      "deprecated": true
    },
    "DescribeConnections": {
      "input": {
        "type": "structure",
        "members": {
          "connectionId": {}
        }
      },
      "output": {
        "shape": "S2s"
      }
    },
    "DescribeConnectionsOnInterconnect": {
      "input": {
        "type": "structure",
        "required": [
          "interconnectId"
        ],
        "members": {
          "interconnectId": {}
        }
      },
      "output": {
        "shape": "S2s"
      },
      "deprecated": true
    },
    "DescribeDirectConnectGatewayAssociations": {
      "input": {
        "type": "structure",
        "members": {
          "directConnectGatewayId": {},
          "virtualGatewayId": {},
          "maxResults": {
            "type": "integer"
          },
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "directConnectGatewayAssociations": {
            "type": "list",
            "member": {
              "shape": "S1r"
            }
          },
          "nextToken": {}
        }
      }
    },
    "DescribeDirectConnectGatewayAttachments": {
      "input": {
        "type": "structure",
        "members": {
          "directConnectGatewayId": {},
          "virtualInterfaceId": {},
          "maxResults": {
            "type": "integer"
          },
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "directConnectGatewayAttachments": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "directConnectGatewayId": {},
                "virtualInterfaceId": {},
                "virtualInterfaceRegion": {},
                "virtualInterfaceOwnerAccount": {},
                "attachmentState": {},
                "stateChangeError": {}
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "DescribeDirectConnectGateways": {
      "input": {
        "type": "structure",
        "members": {
          "directConnectGatewayId": {},
          "maxResults": {
            "type": "integer"
          },
          "nextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "directConnectGateways": {
            "type": "list",
            "member": {
              "shape": "S1m"
            }
          },
          "nextToken": {}
        }
      }
    },
    "DescribeHostedConnections": {
      "input": {
        "type": "structure",
        "required": [
          "connectionId"
        ],
        "members": {
          "connectionId": {}
        }
      },
      "output": {
        "shape": "S2s"
      }
    },
    "DescribeInterconnectLoa": {
      "input": {
        "type": "structure",
        "required": [
          "interconnectId"
        ],
        "members": {
          "interconnectId": {},
          "providerName": {},
          "loaContentType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "loa": {
            "shape": "S2p"
          }
        }
      },
      "deprecated": true
    },
    "DescribeInterconnects": {
      "input": {
        "type": "structure",
        "members": {
          "interconnectId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "interconnects": {
            "type": "list",
            "member": {
              "shape": "S1w"
            }
          }
        }
      }
    },
    "DescribeLags": {
      "input": {
        "type": "structure",
        "members": {
          "lagId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "lags": {
            "type": "list",
            "member": {
              "shape": "S21"
            }
          }
        }
      }
    },
    "DescribeLoa": {
      "input": {
        "type": "structure",
        "required": [
          "connectionId"
        ],
        "members": {
          "connectionId": {},
          "providerName": {},
          "loaContentType": {}
        }
      },
      "output": {
        "shape": "S2p"
      }
    },
    "DescribeLocations": {
      "output": {
        "type": "structure",
        "members": {
          "locations": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "locationCode": {},
                "locationName": {}
              }
            }
          }
        }
      }
    },
    "DescribeTags": {
      "input": {
        "type": "structure",
        "required": [
          "resourceArns"
        ],
        "members": {
          "resourceArns": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "resourceTags": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "resourceArn": {},
                "tags": {
                  "shape": "S3s"
                }
              }
            }
          }
        }
      }
    },
    "DescribeVirtualGateways": {
      "output": {
        "type": "structure",
        "members": {
          "virtualGateways": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "virtualGatewayId": {},
                "virtualGatewayState": {}
              }
            }
          }
        }
      }
    },
    "DescribeVirtualInterfaces": {
      "input": {
        "type": "structure",
        "members": {
          "connectionId": {},
          "virtualInterfaceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "virtualInterfaces": {
            "type": "list",
            "member": {
              "shape": "Sp"
            }
          }
        }
      }
    },
    "DisassociateConnectionFromLag": {
      "input": {
        "type": "structure",
        "required": [
          "connectionId",
          "lagId"
        ],
        "members": {
          "connectionId": {},
          "lagId": {}
        }
      },
      "output": {
        "shape": "S7"
      }
    },
    "TagResource": {
      "input": {
        "type": "structure",
        "required": [
          "resourceArn",
          "tags"
        ],
        "members": {
          "resourceArn": {},
          "tags": {
            "shape": "S3s"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UntagResource": {
      "input": {
        "type": "structure",
        "required": [
          "resourceArn",
          "tagKeys"
        ],
        "members": {
          "resourceArn": {},
          "tagKeys": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UpdateLag": {
      "input": {
        "type": "structure",
        "required": [
          "lagId"
        ],
        "members": {
          "lagId": {},
          "lagName": {},
          "minimumLinks": {
            "type": "integer"
          }
        }
      },
      "output": {
        "shape": "S21"
      }
    }
  },
  "shapes": {
    "S7": {
      "type": "structure",
      "members": {
        "ownerAccount": {},
        "connectionId": {},
        "connectionName": {},
        "connectionState": {},
        "region": {},
        "location": {},
        "bandwidth": {},
        "vlan": {
          "type": "integer"
        },
        "partnerName": {},
        "loaIssueTime": {
          "type": "timestamp"
        },
        "lagId": {},
        "awsDevice": {}
      }
    },
    "Sp": {
      "type": "structure",
      "members": {
        "ownerAccount": {},
        "virtualInterfaceId": {},
        "location": {},
        "connectionId": {},
        "virtualInterfaceType": {},
        "virtualInterfaceName": {},
        "vlan": {
          "type": "integer"
        },
        "asn": {
          "type": "integer"
        },
        "amazonSideAsn": {
          "type": "long"
        },
        "authKey": {},
        "amazonAddress": {},
        "customerAddress": {},
        "addressFamily": {},
        "virtualInterfaceState": {},
        "customerRouterConfig": {},
        "virtualGatewayId": {},
        "directConnectGatewayId": {},
        "routeFilterPrefixes": {
          "shape": "Sx"
        },
        "bgpPeers": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "asn": {
                "type": "integer"
              },
              "authKey": {},
              "addressFamily": {},
              "amazonAddress": {},
              "customerAddress": {},
              "bgpPeerState": {},
              "bgpStatus": {}
            }
          }
        }
      }
    },
    "Sx": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "cidr": {}
        }
      }
    },
    "S1m": {
      "type": "structure",
      "members": {
        "directConnectGatewayId": {},
        "directConnectGatewayName": {},
        "amazonSideAsn": {
          "type": "long"
        },
        "ownerAccount": {},
        "directConnectGatewayState": {},
        "stateChangeError": {}
      }
    },
    "S1r": {
      "type": "structure",
      "members": {
        "directConnectGatewayId": {},
        "virtualGatewayId": {},
        "virtualGatewayRegion": {},
        "virtualGatewayOwnerAccount": {},
        "associationState": {},
        "stateChangeError": {}
      }
    },
    "S1w": {
      "type": "structure",
      "members": {
        "interconnectId": {},
        "interconnectName": {},
        "interconnectState": {},
        "region": {},
        "location": {},
        "bandwidth": {},
        "loaIssueTime": {
          "type": "timestamp"
        },
        "lagId": {},
        "awsDevice": {}
      }
    },
    "S21": {
      "type": "structure",
      "members": {
        "connectionsBandwidth": {},
        "numberOfConnections": {
          "type": "integer"
        },
        "lagId": {},
        "ownerAccount": {},
        "lagName": {},
        "lagState": {},
        "location": {},
        "region": {},
        "minimumLinks": {
          "type": "integer"
        },
        "awsDevice": {},
        "connections": {
          "shape": "S23"
        },
        "allowsHostedConnections": {
          "type": "boolean"
        }
      }
    },
    "S23": {
      "type": "list",
      "member": {
        "shape": "S7"
      }
    },
    "S2p": {
      "type": "structure",
      "members": {
        "loaContent": {
          "type": "blob"
        },
        "loaContentType": {}
      }
    },
    "S2s": {
      "type": "structure",
      "members": {
        "connections": {
          "shape": "S23"
        }
      }
    },
    "S3s": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "key"
        ],
        "members": {
          "key": {},
          "value": {}
        }
      }
    }
  }
}
},{}],41:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeConnections": {
      "result_key": "connections"
    },
    "DescribeConnectionsOnInterconnect": {
      "result_key": "connections"
    },
    "DescribeInterconnects": {
      "result_key": "interconnects"
    },
    "DescribeLocations": {
      "result_key": "locations"
    },
    "DescribeVirtualGateways": {
      "result_key": "virtualGateways"
    },
    "DescribeVirtualInterfaces": {
      "result_key": "virtualInterfaces"
    }
  }
}
},{}],42:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2011-12-05",
    "endpointPrefix": "dynamodb",
    "jsonVersion": "1.0",
    "protocol": "json",
    "serviceAbbreviation": "DynamoDB",
    "serviceFullName": "Amazon DynamoDB",
    "serviceId": "DynamoDB",
    "signatureVersion": "v4",
    "targetPrefix": "DynamoDB_20111205",
    "uid": "dynamodb-2011-12-05"
  },
  "operations": {
    "BatchGetItem": {
      "input": {
        "type": "structure",
        "required": [
          "RequestItems"
        ],
        "members": {
          "RequestItems": {
            "shape": "S2"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Responses": {
            "type": "map",
            "key": {},
            "value": {
              "type": "structure",
              "members": {
                "Items": {
                  "shape": "Sk"
                },
                "ConsumedCapacityUnits": {
                  "type": "double"
                }
              }
            }
          },
          "UnprocessedKeys": {
            "shape": "S2"
          }
        }
      }
    },
    "BatchWriteItem": {
      "input": {
        "type": "structure",
        "required": [
          "RequestItems"
        ],
        "members": {
          "RequestItems": {
            "shape": "So"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Responses": {
            "type": "map",
            "key": {},
            "value": {
              "type": "structure",
              "members": {
                "ConsumedCapacityUnits": {
                  "type": "double"
                }
              }
            }
          },
          "UnprocessedItems": {
            "shape": "So"
          }
        }
      }
    },
    "CreateTable": {
      "input": {
        "type": "structure",
        "required": [
          "TableName",
          "KeySchema",
          "ProvisionedThroughput"
        ],
        "members": {
          "TableName": {},
          "KeySchema": {
            "shape": "Sy"
          },
          "ProvisionedThroughput": {
            "shape": "S12"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TableDescription": {
            "shape": "S15"
          }
        }
      }
    },
    "DeleteItem": {
      "input": {
        "type": "structure",
        "required": [
          "TableName",
          "Key"
        ],
        "members": {
          "TableName": {},
          "Key": {
            "shape": "S6"
          },
          "Expected": {
            "shape": "S1b"
          },
          "ReturnValues": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Attributes": {
            "shape": "Sl"
          },
          "ConsumedCapacityUnits": {
            "type": "double"
          }
        }
      }
    },
    "DeleteTable": {
      "input": {
        "type": "structure",
        "required": [
          "TableName"
        ],
        "members": {
          "TableName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TableDescription": {
            "shape": "S15"
          }
        }
      }
    },
    "DescribeTable": {
      "input": {
        "type": "structure",
        "required": [
          "TableName"
        ],
        "members": {
          "TableName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Table": {
            "shape": "S15"
          }
        }
      }
    },
    "GetItem": {
      "input": {
        "type": "structure",
        "required": [
          "TableName",
          "Key"
        ],
        "members": {
          "TableName": {},
          "Key": {
            "shape": "S6"
          },
          "AttributesToGet": {
            "shape": "Se"
          },
          "ConsistentRead": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Item": {
            "shape": "Sl"
          },
          "ConsumedCapacityUnits": {
            "type": "double"
          }
        }
      }
    },
    "ListTables": {
      "input": {
        "type": "structure",
        "members": {
          "ExclusiveStartTableName": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TableNames": {
            "type": "list",
            "member": {}
          },
          "LastEvaluatedTableName": {}
        }
      }
    },
    "PutItem": {
      "input": {
        "type": "structure",
        "required": [
          "TableName",
          "Item"
        ],
        "members": {
          "TableName": {},
          "Item": {
            "shape": "Ss"
          },
          "Expected": {
            "shape": "S1b"
          },
          "ReturnValues": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Attributes": {
            "shape": "Sl"
          },
          "ConsumedCapacityUnits": {
            "type": "double"
          }
        }
      }
    },
    "Query": {
      "input": {
        "type": "structure",
        "required": [
          "TableName",
          "HashKeyValue"
        ],
        "members": {
          "TableName": {},
          "AttributesToGet": {
            "shape": "Se"
          },
          "Limit": {
            "type": "integer"
          },
          "ConsistentRead": {
            "type": "boolean"
          },
          "Count": {
            "type": "boolean"
          },
          "HashKeyValue": {
            "shape": "S7"
          },
          "RangeKeyCondition": {
            "shape": "S1u"
          },
          "ScanIndexForward": {
            "type": "boolean"
          },
          "ExclusiveStartKey": {
            "shape": "S6"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Items": {
            "shape": "Sk"
          },
          "Count": {
            "type": "integer"
          },
          "LastEvaluatedKey": {
            "shape": "S6"
          },
          "ConsumedCapacityUnits": {
            "type": "double"
          }
        }
      }
    },
    "Scan": {
      "input": {
        "type": "structure",
        "required": [
          "TableName"
        ],
        "members": {
          "TableName": {},
          "AttributesToGet": {
            "shape": "Se"
          },
          "Limit": {
            "type": "integer"
          },
          "Count": {
            "type": "boolean"
          },
          "ScanFilter": {
            "type": "map",
            "key": {},
            "value": {
              "shape": "S1u"
            }
          },
          "ExclusiveStartKey": {
            "shape": "S6"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Items": {
            "shape": "Sk"
          },
          "Count": {
            "type": "integer"
          },
          "ScannedCount": {
            "type": "integer"
          },
          "LastEvaluatedKey": {
            "shape": "S6"
          },
          "ConsumedCapacityUnits": {
            "type": "double"
          }
        }
      }
    },
    "UpdateItem": {
      "input": {
        "type": "structure",
        "required": [
          "TableName",
          "Key",
          "AttributeUpdates"
        ],
        "members": {
          "TableName": {},
          "Key": {
            "shape": "S6"
          },
          "AttributeUpdates": {
            "type": "map",
            "key": {},
            "value": {
              "type": "structure",
              "members": {
                "Value": {
                  "shape": "S7"
                },
                "Action": {}
              }
            }
          },
          "Expected": {
            "shape": "S1b"
          },
          "ReturnValues": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Attributes": {
            "shape": "Sl"
          },
          "ConsumedCapacityUnits": {
            "type": "double"
          }
        }
      }
    },
    "UpdateTable": {
      "input": {
        "type": "structure",
        "required": [
          "TableName",
          "ProvisionedThroughput"
        ],
        "members": {
          "TableName": {},
          "ProvisionedThroughput": {
            "shape": "S12"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TableDescription": {
            "shape": "S15"
          }
        }
      }
    }
  },
  "shapes": {
    "S2": {
      "type": "map",
      "key": {},
      "value": {
        "type": "structure",
        "required": [
          "Keys"
        ],
        "members": {
          "Keys": {
            "type": "list",
            "member": {
              "shape": "S6"
            }
          },
          "AttributesToGet": {
            "shape": "Se"
          },
          "ConsistentRead": {
            "type": "boolean"
          }
        }
      }
    },
    "S6": {
      "type": "structure",
      "required": [
        "HashKeyElement"
      ],
      "members": {
        "HashKeyElement": {
          "shape": "S7"
        },
        "RangeKeyElement": {
          "shape": "S7"
        }
      }
    },
    "S7": {
      "type": "structure",
      "members": {
        "S": {},
        "N": {},
        "B": {
          "type": "blob"
        },
        "SS": {
          "type": "list",
          "member": {}
        },
        "NS": {
          "type": "list",
          "member": {}
        },
        "BS": {
          "type": "list",
          "member": {
            "type": "blob"
          }
        }
      }
    },
    "Se": {
      "type": "list",
      "member": {}
    },
    "Sk": {
      "type": "list",
      "member": {
        "shape": "Sl"
      }
    },
    "Sl": {
      "type": "map",
      "key": {},
      "value": {
        "shape": "S7"
      }
    },
    "So": {
      "type": "map",
      "key": {},
      "value": {
        "type": "list",
        "member": {
          "type": "structure",
          "members": {
            "PutRequest": {
              "type": "structure",
              "required": [
                "Item"
              ],
              "members": {
                "Item": {
                  "shape": "Ss"
                }
              }
            },
            "DeleteRequest": {
              "type": "structure",
              "required": [
                "Key"
              ],
              "members": {
                "Key": {
                  "shape": "S6"
                }
              }
            }
          }
        }
      }
    },
    "Ss": {
      "type": "map",
      "key": {},
      "value": {
        "shape": "S7"
      }
    },
    "Sy": {
      "type": "structure",
      "required": [
        "HashKeyElement"
      ],
      "members": {
        "HashKeyElement": {
          "shape": "Sz"
        },
        "RangeKeyElement": {
          "shape": "Sz"
        }
      }
    },
    "Sz": {
      "type": "structure",
      "required": [
        "AttributeName",
        "AttributeType"
      ],
      "members": {
        "AttributeName": {},
        "AttributeType": {}
      }
    },
    "S12": {
      "type": "structure",
      "required": [
        "ReadCapacityUnits",
        "WriteCapacityUnits"
      ],
      "members": {
        "ReadCapacityUnits": {
          "type": "long"
        },
        "WriteCapacityUnits": {
          "type": "long"
        }
      }
    },
    "S15": {
      "type": "structure",
      "members": {
        "TableName": {},
        "KeySchema": {
          "shape": "Sy"
        },
        "TableStatus": {},
        "CreationDateTime": {
          "type": "timestamp"
        },
        "ProvisionedThroughput": {
          "type": "structure",
          "members": {
            "LastIncreaseDateTime": {
              "type": "timestamp"
            },
            "LastDecreaseDateTime": {
              "type": "timestamp"
            },
            "NumberOfDecreasesToday": {
              "type": "long"
            },
            "ReadCapacityUnits": {
              "type": "long"
            },
            "WriteCapacityUnits": {
              "type": "long"
            }
          }
        },
        "TableSizeBytes": {
          "type": "long"
        },
        "ItemCount": {
          "type": "long"
        }
      }
    },
    "S1b": {
      "type": "map",
      "key": {},
      "value": {
        "type": "structure",
        "members": {
          "Value": {
            "shape": "S7"
          },
          "Exists": {
            "type": "boolean"
          }
        }
      }
    },
    "S1u": {
      "type": "structure",
      "required": [
        "ComparisonOperator"
      ],
      "members": {
        "AttributeValueList": {
          "type": "list",
          "member": {
            "shape": "S7"
          }
        },
        "ComparisonOperator": {}
      }
    }
  }
}
},{}],43:[function(require,module,exports){
module.exports={
  "pagination": {
    "BatchGetItem": {
      "input_token": "RequestItems",
      "output_token": "UnprocessedKeys"
    },
    "ListTables": {
      "input_token": "ExclusiveStartTableName",
      "limit_key": "Limit",
      "output_token": "LastEvaluatedTableName",
      "result_key": "TableNames"
    },
    "Query": {
      "input_token": "ExclusiveStartKey",
      "limit_key": "Limit",
      "output_token": "LastEvaluatedKey",
      "result_key": "Items"
    },
    "Scan": {
      "input_token": "ExclusiveStartKey",
      "limit_key": "Limit",
      "output_token": "LastEvaluatedKey",
      "result_key": "Items"
    }
  }
}
},{}],44:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "TableExists": {
      "delay": 20,
      "operation": "DescribeTable",
      "maxAttempts": 25,
      "acceptors": [
        {
          "expected": "ACTIVE",
          "matcher": "path",
          "state": "success",
          "argument": "Table.TableStatus"
        },
        {
          "expected": "ResourceNotFoundException",
          "matcher": "error",
          "state": "retry"
        }
      ]
    },
    "TableNotExists": {
      "delay": 20,
      "operation": "DescribeTable",
      "maxAttempts": 25,
      "acceptors": [
        {
          "expected": "ResourceNotFoundException",
          "matcher": "error",
          "state": "success"
        }
      ]
    }
  }
}

},{}],45:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2012-08-10",
    "endpointPrefix": "dynamodb",
    "jsonVersion": "1.0",
    "protocol": "json",
    "serviceAbbreviation": "DynamoDB",
    "serviceFullName": "Amazon DynamoDB",
    "serviceId": "DynamoDB",
    "signatureVersion": "v4",
    "targetPrefix": "DynamoDB_20120810",
    "uid": "dynamodb-2012-08-10"
  },
  "operations": {
    "BatchGetItem": {
      "input": {
        "type": "structure",
        "required": [
          "RequestItems"
        ],
        "members": {
          "RequestItems": {
            "shape": "S2"
          },
          "ReturnConsumedCapacity": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Responses": {
            "type": "map",
            "key": {},
            "value": {
              "shape": "Sr"
            }
          },
          "UnprocessedKeys": {
            "shape": "S2"
          },
          "ConsumedCapacity": {
            "shape": "St"
          }
        }
      }
    },
    "BatchWriteItem": {
      "input": {
        "type": "structure",
        "required": [
          "RequestItems"
        ],
        "members": {
          "RequestItems": {
            "shape": "S10"
          },
          "ReturnConsumedCapacity": {},
          "ReturnItemCollectionMetrics": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UnprocessedItems": {
            "shape": "S10"
          },
          "ItemCollectionMetrics": {
            "type": "map",
            "key": {},
            "value": {
              "type": "list",
              "member": {
                "shape": "S1a"
              }
            }
          },
          "ConsumedCapacity": {
            "shape": "St"
          }
        }
      }
    },
    "CreateBackup": {
      "input": {
        "type": "structure",
        "required": [
          "TableName",
          "BackupName"
        ],
        "members": {
          "TableName": {},
          "BackupName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BackupDetails": {
            "shape": "S1h"
          }
        }
      }
    },
    "CreateGlobalTable": {
      "input": {
        "type": "structure",
        "required": [
          "GlobalTableName",
          "ReplicationGroup"
        ],
        "members": {
          "GlobalTableName": {},
          "ReplicationGroup": {
            "shape": "S1n"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GlobalTableDescription": {
            "shape": "S1r"
          }
        }
      }
    },
    "CreateTable": {
      "input": {
        "type": "structure",
        "required": [
          "AttributeDefinitions",
          "TableName",
          "KeySchema",
          "ProvisionedThroughput"
        ],
        "members": {
          "AttributeDefinitions": {
            "shape": "S1y"
          },
          "TableName": {},
          "KeySchema": {
            "shape": "S22"
          },
          "LocalSecondaryIndexes": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "IndexName",
                "KeySchema",
                "Projection"
              ],
              "members": {
                "IndexName": {},
                "KeySchema": {
                  "shape": "S22"
                },
                "Projection": {
                  "shape": "S27"
                }
              }
            }
          },
          "GlobalSecondaryIndexes": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "IndexName",
                "KeySchema",
                "Projection",
                "ProvisionedThroughput"
              ],
              "members": {
                "IndexName": {},
                "KeySchema": {
                  "shape": "S22"
                },
                "Projection": {
                  "shape": "S27"
                },
                "ProvisionedThroughput": {
                  "shape": "S2d"
                }
              }
            }
          },
          "ProvisionedThroughput": {
            "shape": "S2d"
          },
          "StreamSpecification": {
            "shape": "S2f"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TableDescription": {
            "shape": "S2j"
          }
        }
      }
    },
    "DeleteBackup": {
      "input": {
        "type": "structure",
        "required": [
          "BackupArn"
        ],
        "members": {
          "BackupArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BackupDescription": {
            "shape": "S32"
          }
        }
      }
    },
    "DeleteItem": {
      "input": {
        "type": "structure",
        "required": [
          "TableName",
          "Key"
        ],
        "members": {
          "TableName": {},
          "Key": {
            "shape": "S6"
          },
          "Expected": {
            "shape": "S3f"
          },
          "ConditionalOperator": {},
          "ReturnValues": {},
          "ReturnConsumedCapacity": {},
          "ReturnItemCollectionMetrics": {},
          "ConditionExpression": {},
          "ExpressionAttributeNames": {
            "shape": "Sm"
          },
          "ExpressionAttributeValues": {
            "shape": "S3n"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Attributes": {
            "shape": "Ss"
          },
          "ConsumedCapacity": {
            "shape": "Su"
          },
          "ItemCollectionMetrics": {
            "shape": "S1a"
          }
        }
      }
    },
    "DeleteTable": {
      "input": {
        "type": "structure",
        "required": [
          "TableName"
        ],
        "members": {
          "TableName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TableDescription": {
            "shape": "S2j"
          }
        }
      }
    },
    "DescribeBackup": {
      "input": {
        "type": "structure",
        "required": [
          "BackupArn"
        ],
        "members": {
          "BackupArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BackupDescription": {
            "shape": "S32"
          }
        }
      }
    },
    "DescribeContinuousBackups": {
      "input": {
        "type": "structure",
        "required": [
          "TableName"
        ],
        "members": {
          "TableName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ContinuousBackupsDescription": {
            "type": "structure",
            "required": [
              "ContinuousBackupsStatus"
            ],
            "members": {
              "ContinuousBackupsStatus": {}
            }
          }
        }
      }
    },
    "DescribeGlobalTable": {
      "input": {
        "type": "structure",
        "required": [
          "GlobalTableName"
        ],
        "members": {
          "GlobalTableName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GlobalTableDescription": {
            "shape": "S1r"
          }
        }
      }
    },
    "DescribeLimits": {
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "members": {
          "AccountMaxReadCapacityUnits": {
            "type": "long"
          },
          "AccountMaxWriteCapacityUnits": {
            "type": "long"
          },
          "TableMaxReadCapacityUnits": {
            "type": "long"
          },
          "TableMaxWriteCapacityUnits": {
            "type": "long"
          }
        }
      }
    },
    "DescribeTable": {
      "input": {
        "type": "structure",
        "required": [
          "TableName"
        ],
        "members": {
          "TableName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Table": {
            "shape": "S2j"
          }
        }
      }
    },
    "DescribeTimeToLive": {
      "input": {
        "type": "structure",
        "required": [
          "TableName"
        ],
        "members": {
          "TableName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TimeToLiveDescription": {
            "shape": "S3b"
          }
        }
      }
    },
    "GetItem": {
      "input": {
        "type": "structure",
        "required": [
          "TableName",
          "Key"
        ],
        "members": {
          "TableName": {},
          "Key": {
            "shape": "S6"
          },
          "AttributesToGet": {
            "shape": "Sj"
          },
          "ConsistentRead": {
            "type": "boolean"
          },
          "ReturnConsumedCapacity": {},
          "ProjectionExpression": {},
          "ExpressionAttributeNames": {
            "shape": "Sm"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Item": {
            "shape": "Ss"
          },
          "ConsumedCapacity": {
            "shape": "Su"
          }
        }
      }
    },
    "ListBackups": {
      "input": {
        "type": "structure",
        "members": {
          "TableName": {},
          "Limit": {
            "type": "integer"
          },
          "TimeRangeLowerBound": {
            "type": "timestamp"
          },
          "TimeRangeUpperBound": {
            "type": "timestamp"
          },
          "ExclusiveStartBackupArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BackupSummaries": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "TableName": {},
                "TableId": {},
                "TableArn": {},
                "BackupArn": {},
                "BackupName": {},
                "BackupCreationDateTime": {
                  "type": "timestamp"
                },
                "BackupStatus": {},
                "BackupSizeBytes": {
                  "type": "long"
                }
              }
            }
          },
          "LastEvaluatedBackupArn": {}
        }
      }
    },
    "ListGlobalTables": {
      "input": {
        "type": "structure",
        "members": {
          "ExclusiveStartGlobalTableName": {},
          "Limit": {
            "type": "integer"
          },
          "RegionName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GlobalTables": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "GlobalTableName": {},
                "ReplicationGroup": {
                  "shape": "S1n"
                }
              }
            }
          },
          "LastEvaluatedGlobalTableName": {}
        }
      }
    },
    "ListTables": {
      "input": {
        "type": "structure",
        "members": {
          "ExclusiveStartTableName": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TableNames": {
            "type": "list",
            "member": {}
          },
          "LastEvaluatedTableName": {}
        }
      }
    },
    "ListTagsOfResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArn"
        ],
        "members": {
          "ResourceArn": {},
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Tags": {
            "shape": "S4s"
          },
          "NextToken": {}
        }
      }
    },
    "PutItem": {
      "input": {
        "type": "structure",
        "required": [
          "TableName",
          "Item"
        ],
        "members": {
          "TableName": {},
          "Item": {
            "shape": "S14"
          },
          "Expected": {
            "shape": "S3f"
          },
          "ReturnValues": {},
          "ReturnConsumedCapacity": {},
          "ReturnItemCollectionMetrics": {},
          "ConditionalOperator": {},
          "ConditionExpression": {},
          "ExpressionAttributeNames": {
            "shape": "Sm"
          },
          "ExpressionAttributeValues": {
            "shape": "S3n"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Attributes": {
            "shape": "Ss"
          },
          "ConsumedCapacity": {
            "shape": "Su"
          },
          "ItemCollectionMetrics": {
            "shape": "S1a"
          }
        }
      }
    },
    "Query": {
      "input": {
        "type": "structure",
        "required": [
          "TableName"
        ],
        "members": {
          "TableName": {},
          "IndexName": {},
          "Select": {},
          "AttributesToGet": {
            "shape": "Sj"
          },
          "Limit": {
            "type": "integer"
          },
          "ConsistentRead": {
            "type": "boolean"
          },
          "KeyConditions": {
            "type": "map",
            "key": {},
            "value": {
              "shape": "S51"
            }
          },
          "QueryFilter": {
            "shape": "S52"
          },
          "ConditionalOperator": {},
          "ScanIndexForward": {
            "type": "boolean"
          },
          "ExclusiveStartKey": {
            "shape": "S6"
          },
          "ReturnConsumedCapacity": {},
          "ProjectionExpression": {},
          "FilterExpression": {},
          "KeyConditionExpression": {},
          "ExpressionAttributeNames": {
            "shape": "Sm"
          },
          "ExpressionAttributeValues": {
            "shape": "S3n"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Items": {
            "shape": "Sr"
          },
          "Count": {
            "type": "integer"
          },
          "ScannedCount": {
            "type": "integer"
          },
          "LastEvaluatedKey": {
            "shape": "S6"
          },
          "ConsumedCapacity": {
            "shape": "Su"
          }
        }
      }
    },
    "RestoreTableFromBackup": {
      "input": {
        "type": "structure",
        "required": [
          "TargetTableName",
          "BackupArn"
        ],
        "members": {
          "TargetTableName": {},
          "BackupArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TableDescription": {
            "shape": "S2j"
          }
        }
      }
    },
    "Scan": {
      "input": {
        "type": "structure",
        "required": [
          "TableName"
        ],
        "members": {
          "TableName": {},
          "IndexName": {},
          "AttributesToGet": {
            "shape": "Sj"
          },
          "Limit": {
            "type": "integer"
          },
          "Select": {},
          "ScanFilter": {
            "shape": "S52"
          },
          "ConditionalOperator": {},
          "ExclusiveStartKey": {
            "shape": "S6"
          },
          "ReturnConsumedCapacity": {},
          "TotalSegments": {
            "type": "integer"
          },
          "Segment": {
            "type": "integer"
          },
          "ProjectionExpression": {},
          "FilterExpression": {},
          "ExpressionAttributeNames": {
            "shape": "Sm"
          },
          "ExpressionAttributeValues": {
            "shape": "S3n"
          },
          "ConsistentRead": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Items": {
            "shape": "Sr"
          },
          "Count": {
            "type": "integer"
          },
          "ScannedCount": {
            "type": "integer"
          },
          "LastEvaluatedKey": {
            "shape": "S6"
          },
          "ConsumedCapacity": {
            "shape": "Su"
          }
        }
      }
    },
    "TagResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArn",
          "Tags"
        ],
        "members": {
          "ResourceArn": {},
          "Tags": {
            "shape": "S4s"
          }
        }
      }
    },
    "UntagResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArn",
          "TagKeys"
        ],
        "members": {
          "ResourceArn": {},
          "TagKeys": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "UpdateGlobalTable": {
      "input": {
        "type": "structure",
        "required": [
          "GlobalTableName",
          "ReplicaUpdates"
        ],
        "members": {
          "GlobalTableName": {},
          "ReplicaUpdates": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Create": {
                  "type": "structure",
                  "required": [
                    "RegionName"
                  ],
                  "members": {
                    "RegionName": {}
                  }
                },
                "Delete": {
                  "type": "structure",
                  "required": [
                    "RegionName"
                  ],
                  "members": {
                    "RegionName": {}
                  }
                }
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GlobalTableDescription": {
            "shape": "S1r"
          }
        }
      }
    },
    "UpdateItem": {
      "input": {
        "type": "structure",
        "required": [
          "TableName",
          "Key"
        ],
        "members": {
          "TableName": {},
          "Key": {
            "shape": "S6"
          },
          "AttributeUpdates": {
            "type": "map",
            "key": {},
            "value": {
              "type": "structure",
              "members": {
                "Value": {
                  "shape": "S8"
                },
                "Action": {}
              }
            }
          },
          "Expected": {
            "shape": "S3f"
          },
          "ConditionalOperator": {},
          "ReturnValues": {},
          "ReturnConsumedCapacity": {},
          "ReturnItemCollectionMetrics": {},
          "UpdateExpression": {},
          "ConditionExpression": {},
          "ExpressionAttributeNames": {
            "shape": "Sm"
          },
          "ExpressionAttributeValues": {
            "shape": "S3n"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Attributes": {
            "shape": "Ss"
          },
          "ConsumedCapacity": {
            "shape": "Su"
          },
          "ItemCollectionMetrics": {
            "shape": "S1a"
          }
        }
      }
    },
    "UpdateTable": {
      "input": {
        "type": "structure",
        "required": [
          "TableName"
        ],
        "members": {
          "AttributeDefinitions": {
            "shape": "S1y"
          },
          "TableName": {},
          "ProvisionedThroughput": {
            "shape": "S2d"
          },
          "GlobalSecondaryIndexUpdates": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Update": {
                  "type": "structure",
                  "required": [
                    "IndexName",
                    "ProvisionedThroughput"
                  ],
                  "members": {
                    "IndexName": {},
                    "ProvisionedThroughput": {
                      "shape": "S2d"
                    }
                  }
                },
                "Create": {
                  "type": "structure",
                  "required": [
                    "IndexName",
                    "KeySchema",
                    "Projection",
                    "ProvisionedThroughput"
                  ],
                  "members": {
                    "IndexName": {},
                    "KeySchema": {
                      "shape": "S22"
                    },
                    "Projection": {
                      "shape": "S27"
                    },
                    "ProvisionedThroughput": {
                      "shape": "S2d"
                    }
                  }
                },
                "Delete": {
                  "type": "structure",
                  "required": [
                    "IndexName"
                  ],
                  "members": {
                    "IndexName": {}
                  }
                }
              }
            }
          },
          "StreamSpecification": {
            "shape": "S2f"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TableDescription": {
            "shape": "S2j"
          }
        }
      }
    },
    "UpdateTimeToLive": {
      "input": {
        "type": "structure",
        "required": [
          "TableName",
          "TimeToLiveSpecification"
        ],
        "members": {
          "TableName": {},
          "TimeToLiveSpecification": {
            "shape": "S5z"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TimeToLiveSpecification": {
            "shape": "S5z"
          }
        }
      }
    }
  },
  "shapes": {
    "S2": {
      "type": "map",
      "key": {},
      "value": {
        "type": "structure",
        "required": [
          "Keys"
        ],
        "members": {
          "Keys": {
            "type": "list",
            "member": {
              "shape": "S6"
            }
          },
          "AttributesToGet": {
            "shape": "Sj"
          },
          "ConsistentRead": {
            "type": "boolean"
          },
          "ProjectionExpression": {},
          "ExpressionAttributeNames": {
            "shape": "Sm"
          }
        }
      }
    },
    "S6": {
      "type": "map",
      "key": {},
      "value": {
        "shape": "S8"
      }
    },
    "S8": {
      "type": "structure",
      "members": {
        "S": {},
        "N": {},
        "B": {
          "type": "blob"
        },
        "SS": {
          "type": "list",
          "member": {}
        },
        "NS": {
          "type": "list",
          "member": {}
        },
        "BS": {
          "type": "list",
          "member": {
            "type": "blob"
          }
        },
        "M": {
          "type": "map",
          "key": {},
          "value": {
            "shape": "S8"
          }
        },
        "L": {
          "type": "list",
          "member": {
            "shape": "S8"
          }
        },
        "NULL": {
          "type": "boolean"
        },
        "BOOL": {
          "type": "boolean"
        }
      }
    },
    "Sj": {
      "type": "list",
      "member": {}
    },
    "Sm": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "Sr": {
      "type": "list",
      "member": {
        "shape": "Ss"
      }
    },
    "Ss": {
      "type": "map",
      "key": {},
      "value": {
        "shape": "S8"
      }
    },
    "St": {
      "type": "list",
      "member": {
        "shape": "Su"
      }
    },
    "Su": {
      "type": "structure",
      "members": {
        "TableName": {},
        "CapacityUnits": {
          "type": "double"
        },
        "Table": {
          "shape": "Sw"
        },
        "LocalSecondaryIndexes": {
          "shape": "Sx"
        },
        "GlobalSecondaryIndexes": {
          "shape": "Sx"
        }
      }
    },
    "Sw": {
      "type": "structure",
      "members": {
        "CapacityUnits": {
          "type": "double"
        }
      }
    },
    "Sx": {
      "type": "map",
      "key": {},
      "value": {
        "shape": "Sw"
      }
    },
    "S10": {
      "type": "map",
      "key": {},
      "value": {
        "type": "list",
        "member": {
          "type": "structure",
          "members": {
            "PutRequest": {
              "type": "structure",
              "required": [
                "Item"
              ],
              "members": {
                "Item": {
                  "shape": "S14"
                }
              }
            },
            "DeleteRequest": {
              "type": "structure",
              "required": [
                "Key"
              ],
              "members": {
                "Key": {
                  "shape": "S6"
                }
              }
            }
          }
        }
      }
    },
    "S14": {
      "type": "map",
      "key": {},
      "value": {
        "shape": "S8"
      }
    },
    "S1a": {
      "type": "structure",
      "members": {
        "ItemCollectionKey": {
          "type": "map",
          "key": {},
          "value": {
            "shape": "S8"
          }
        },
        "SizeEstimateRangeGB": {
          "type": "list",
          "member": {
            "type": "double"
          }
        }
      }
    },
    "S1h": {
      "type": "structure",
      "required": [
        "BackupArn",
        "BackupName",
        "BackupStatus",
        "BackupCreationDateTime"
      ],
      "members": {
        "BackupArn": {},
        "BackupName": {},
        "BackupSizeBytes": {
          "type": "long"
        },
        "BackupStatus": {},
        "BackupCreationDateTime": {
          "type": "timestamp"
        }
      }
    },
    "S1n": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "RegionName": {}
        }
      }
    },
    "S1r": {
      "type": "structure",
      "members": {
        "ReplicationGroup": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "RegionName": {}
            }
          }
        },
        "GlobalTableArn": {},
        "CreationDateTime": {
          "type": "timestamp"
        },
        "GlobalTableStatus": {},
        "GlobalTableName": {}
      }
    },
    "S1y": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "AttributeName",
          "AttributeType"
        ],
        "members": {
          "AttributeName": {},
          "AttributeType": {}
        }
      }
    },
    "S22": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "AttributeName",
          "KeyType"
        ],
        "members": {
          "AttributeName": {},
          "KeyType": {}
        }
      }
    },
    "S27": {
      "type": "structure",
      "members": {
        "ProjectionType": {},
        "NonKeyAttributes": {
          "type": "list",
          "member": {}
        }
      }
    },
    "S2d": {
      "type": "structure",
      "required": [
        "ReadCapacityUnits",
        "WriteCapacityUnits"
      ],
      "members": {
        "ReadCapacityUnits": {
          "type": "long"
        },
        "WriteCapacityUnits": {
          "type": "long"
        }
      }
    },
    "S2f": {
      "type": "structure",
      "members": {
        "StreamEnabled": {
          "type": "boolean"
        },
        "StreamViewType": {}
      }
    },
    "S2j": {
      "type": "structure",
      "members": {
        "AttributeDefinitions": {
          "shape": "S1y"
        },
        "TableName": {},
        "KeySchema": {
          "shape": "S22"
        },
        "TableStatus": {},
        "CreationDateTime": {
          "type": "timestamp"
        },
        "ProvisionedThroughput": {
          "shape": "S2l"
        },
        "TableSizeBytes": {
          "type": "long"
        },
        "ItemCount": {
          "type": "long"
        },
        "TableArn": {},
        "TableId": {},
        "LocalSecondaryIndexes": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "IndexName": {},
              "KeySchema": {
                "shape": "S22"
              },
              "Projection": {
                "shape": "S27"
              },
              "IndexSizeBytes": {
                "type": "long"
              },
              "ItemCount": {
                "type": "long"
              },
              "IndexArn": {}
            }
          }
        },
        "GlobalSecondaryIndexes": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "IndexName": {},
              "KeySchema": {
                "shape": "S22"
              },
              "Projection": {
                "shape": "S27"
              },
              "IndexStatus": {},
              "Backfilling": {
                "type": "boolean"
              },
              "ProvisionedThroughput": {
                "shape": "S2l"
              },
              "IndexSizeBytes": {
                "type": "long"
              },
              "ItemCount": {
                "type": "long"
              },
              "IndexArn": {}
            }
          }
        },
        "StreamSpecification": {
          "shape": "S2f"
        },
        "LatestStreamLabel": {},
        "LatestStreamArn": {},
        "RestoreSummary": {
          "type": "structure",
          "required": [
            "RestoreDateTime",
            "RestoreInProgress"
          ],
          "members": {
            "SourceBackupArn": {},
            "SourceTableArn": {},
            "RestoreDateTime": {
              "type": "timestamp"
            },
            "RestoreInProgress": {
              "type": "boolean"
            }
          }
        }
      }
    },
    "S2l": {
      "type": "structure",
      "members": {
        "LastIncreaseDateTime": {
          "type": "timestamp"
        },
        "LastDecreaseDateTime": {
          "type": "timestamp"
        },
        "NumberOfDecreasesToday": {
          "type": "long"
        },
        "ReadCapacityUnits": {
          "type": "long"
        },
        "WriteCapacityUnits": {
          "type": "long"
        }
      }
    },
    "S32": {
      "type": "structure",
      "members": {
        "BackupDetails": {
          "shape": "S1h"
        },
        "SourceTableDetails": {
          "type": "structure",
          "required": [
            "TableName",
            "TableId",
            "KeySchema",
            "TableCreationDateTime",
            "ProvisionedThroughput"
          ],
          "members": {
            "TableName": {},
            "TableId": {},
            "TableArn": {},
            "TableSizeBytes": {
              "type": "long"
            },
            "KeySchema": {
              "shape": "S22"
            },
            "TableCreationDateTime": {
              "type": "timestamp"
            },
            "ProvisionedThroughput": {
              "shape": "S2d"
            },
            "ItemCount": {
              "type": "long"
            }
          }
        },
        "SourceTableFeatureDetails": {
          "type": "structure",
          "members": {
            "LocalSecondaryIndexes": {
              "type": "list",
              "member": {
                "type": "structure",
                "members": {
                  "IndexName": {},
                  "KeySchema": {
                    "shape": "S22"
                  },
                  "Projection": {
                    "shape": "S27"
                  }
                }
              }
            },
            "GlobalSecondaryIndexes": {
              "type": "list",
              "member": {
                "type": "structure",
                "members": {
                  "IndexName": {},
                  "KeySchema": {
                    "shape": "S22"
                  },
                  "Projection": {
                    "shape": "S27"
                  },
                  "ProvisionedThroughput": {
                    "shape": "S2d"
                  }
                }
              }
            },
            "StreamDescription": {
              "shape": "S2f"
            },
            "TimeToLiveDescription": {
              "shape": "S3b"
            }
          }
        }
      }
    },
    "S3b": {
      "type": "structure",
      "members": {
        "TimeToLiveStatus": {},
        "AttributeName": {}
      }
    },
    "S3f": {
      "type": "map",
      "key": {},
      "value": {
        "type": "structure",
        "members": {
          "Value": {
            "shape": "S8"
          },
          "Exists": {
            "type": "boolean"
          },
          "ComparisonOperator": {},
          "AttributeValueList": {
            "shape": "S3j"
          }
        }
      }
    },
    "S3j": {
      "type": "list",
      "member": {
        "shape": "S8"
      }
    },
    "S3n": {
      "type": "map",
      "key": {},
      "value": {
        "shape": "S8"
      }
    },
    "S4s": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Key",
          "Value"
        ],
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "S51": {
      "type": "structure",
      "required": [
        "ComparisonOperator"
      ],
      "members": {
        "AttributeValueList": {
          "shape": "S3j"
        },
        "ComparisonOperator": {}
      }
    },
    "S52": {
      "type": "map",
      "key": {},
      "value": {
        "shape": "S51"
      }
    },
    "S5z": {
      "type": "structure",
      "required": [
        "Enabled",
        "AttributeName"
      ],
      "members": {
        "Enabled": {
          "type": "boolean"
        },
        "AttributeName": {}
      }
    }
  }
}
},{}],46:[function(require,module,exports){
arguments[4][43][0].apply(exports,arguments)
},{"dup":43}],47:[function(require,module,exports){
arguments[4][44][0].apply(exports,arguments)
},{"dup":44}],48:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2016-11-15",
    "endpointPrefix": "ec2",
    "protocol": "ec2",
    "serviceAbbreviation": "Amazon EC2",
    "serviceFullName": "Amazon Elastic Compute Cloud",
    "serviceId": "EC2",
    "signatureVersion": "v4",
    "uid": "ec2-2016-11-15",
    "xmlNamespace": "http://ec2.amazonaws.com/doc/2016-11-15"
  },
  "operations": {
    "AcceptReservedInstancesExchangeQuote": {
      "input": {
        "type": "structure",
        "required": [
          "ReservedInstanceIds"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ReservedInstanceIds": {
            "shape": "S3",
            "locationName": "ReservedInstanceId"
          },
          "TargetConfigurations": {
            "shape": "S5",
            "locationName": "TargetConfiguration"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ExchangeId": {
            "locationName": "exchangeId"
          }
        }
      }
    },
    "AcceptVpcEndpointConnections": {
      "input": {
        "type": "structure",
        "required": [
          "ServiceId",
          "VpcEndpointIds"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ServiceId": {},
          "VpcEndpointIds": {
            "shape": "Sa",
            "locationName": "VpcEndpointId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Unsuccessful": {
            "shape": "Sc",
            "locationName": "unsuccessful"
          }
        }
      }
    },
    "AcceptVpcPeeringConnection": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "VpcPeeringConnectionId": {
            "locationName": "vpcPeeringConnectionId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VpcPeeringConnection": {
            "shape": "Sh",
            "locationName": "vpcPeeringConnection"
          }
        }
      }
    },
    "AllocateAddress": {
      "input": {
        "type": "structure",
        "members": {
          "Domain": {},
          "Address": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "PublicIp": {
            "locationName": "publicIp"
          },
          "AllocationId": {
            "locationName": "allocationId"
          },
          "Domain": {
            "locationName": "domain"
          }
        }
      }
    },
    "AllocateHosts": {
      "input": {
        "type": "structure",
        "required": [
          "AvailabilityZone",
          "InstanceType",
          "Quantity"
        ],
        "members": {
          "AutoPlacement": {
            "locationName": "autoPlacement"
          },
          "AvailabilityZone": {
            "locationName": "availabilityZone"
          },
          "ClientToken": {
            "locationName": "clientToken"
          },
          "InstanceType": {
            "locationName": "instanceType"
          },
          "Quantity": {
            "locationName": "quantity",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "HostIds": {
            "shape": "Sz",
            "locationName": "hostIdSet"
          }
        }
      }
    },
    "AssignIpv6Addresses": {
      "input": {
        "type": "structure",
        "required": [
          "NetworkInterfaceId"
        ],
        "members": {
          "Ipv6AddressCount": {
            "locationName": "ipv6AddressCount",
            "type": "integer"
          },
          "Ipv6Addresses": {
            "shape": "S11",
            "locationName": "ipv6Addresses"
          },
          "NetworkInterfaceId": {
            "locationName": "networkInterfaceId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AssignedIpv6Addresses": {
            "shape": "S11",
            "locationName": "assignedIpv6Addresses"
          },
          "NetworkInterfaceId": {
            "locationName": "networkInterfaceId"
          }
        }
      }
    },
    "AssignPrivateIpAddresses": {
      "input": {
        "type": "structure",
        "required": [
          "NetworkInterfaceId"
        ],
        "members": {
          "AllowReassignment": {
            "locationName": "allowReassignment",
            "type": "boolean"
          },
          "NetworkInterfaceId": {
            "locationName": "networkInterfaceId"
          },
          "PrivateIpAddresses": {
            "shape": "S14",
            "locationName": "privateIpAddress"
          },
          "SecondaryPrivateIpAddressCount": {
            "locationName": "secondaryPrivateIpAddressCount",
            "type": "integer"
          }
        }
      }
    },
    "AssociateAddress": {
      "input": {
        "type": "structure",
        "members": {
          "AllocationId": {},
          "InstanceId": {},
          "PublicIp": {},
          "AllowReassociation": {
            "locationName": "allowReassociation",
            "type": "boolean"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "NetworkInterfaceId": {
            "locationName": "networkInterfaceId"
          },
          "PrivateIpAddress": {
            "locationName": "privateIpAddress"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AssociationId": {
            "locationName": "associationId"
          }
        }
      }
    },
    "AssociateDhcpOptions": {
      "input": {
        "type": "structure",
        "required": [
          "DhcpOptionsId",
          "VpcId"
        ],
        "members": {
          "DhcpOptionsId": {},
          "VpcId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "AssociateIamInstanceProfile": {
      "input": {
        "type": "structure",
        "required": [
          "IamInstanceProfile",
          "InstanceId"
        ],
        "members": {
          "IamInstanceProfile": {
            "shape": "S19"
          },
          "InstanceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IamInstanceProfileAssociation": {
            "shape": "S1b",
            "locationName": "iamInstanceProfileAssociation"
          }
        }
      }
    },
    "AssociateRouteTable": {
      "input": {
        "type": "structure",
        "required": [
          "RouteTableId",
          "SubnetId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "RouteTableId": {
            "locationName": "routeTableId"
          },
          "SubnetId": {
            "locationName": "subnetId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AssociationId": {
            "locationName": "associationId"
          }
        }
      }
    },
    "AssociateSubnetCidrBlock": {
      "input": {
        "type": "structure",
        "required": [
          "Ipv6CidrBlock",
          "SubnetId"
        ],
        "members": {
          "Ipv6CidrBlock": {
            "locationName": "ipv6CidrBlock"
          },
          "SubnetId": {
            "locationName": "subnetId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Ipv6CidrBlockAssociation": {
            "shape": "S1i",
            "locationName": "ipv6CidrBlockAssociation"
          },
          "SubnetId": {
            "locationName": "subnetId"
          }
        }
      }
    },
    "AssociateVpcCidrBlock": {
      "input": {
        "type": "structure",
        "required": [
          "VpcId"
        ],
        "members": {
          "AmazonProvidedIpv6CidrBlock": {
            "locationName": "amazonProvidedIpv6CidrBlock",
            "type": "boolean"
          },
          "CidrBlock": {},
          "VpcId": {
            "locationName": "vpcId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Ipv6CidrBlockAssociation": {
            "shape": "S1n",
            "locationName": "ipv6CidrBlockAssociation"
          },
          "CidrBlockAssociation": {
            "shape": "S1q",
            "locationName": "cidrBlockAssociation"
          },
          "VpcId": {
            "locationName": "vpcId"
          }
        }
      }
    },
    "AttachClassicLinkVpc": {
      "input": {
        "type": "structure",
        "required": [
          "Groups",
          "InstanceId",
          "VpcId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "Groups": {
            "shape": "S1s",
            "locationName": "SecurityGroupId"
          },
          "InstanceId": {
            "locationName": "instanceId"
          },
          "VpcId": {
            "locationName": "vpcId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "AttachInternetGateway": {
      "input": {
        "type": "structure",
        "required": [
          "InternetGatewayId",
          "VpcId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "InternetGatewayId": {
            "locationName": "internetGatewayId"
          },
          "VpcId": {
            "locationName": "vpcId"
          }
        }
      }
    },
    "AttachNetworkInterface": {
      "input": {
        "type": "structure",
        "required": [
          "DeviceIndex",
          "InstanceId",
          "NetworkInterfaceId"
        ],
        "members": {
          "DeviceIndex": {
            "locationName": "deviceIndex",
            "type": "integer"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "InstanceId": {
            "locationName": "instanceId"
          },
          "NetworkInterfaceId": {
            "locationName": "networkInterfaceId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AttachmentId": {
            "locationName": "attachmentId"
          }
        }
      }
    },
    "AttachVolume": {
      "input": {
        "type": "structure",
        "required": [
          "Device",
          "InstanceId",
          "VolumeId"
        ],
        "members": {
          "Device": {},
          "InstanceId": {},
          "VolumeId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "shape": "S1y"
      }
    },
    "AttachVpnGateway": {
      "input": {
        "type": "structure",
        "required": [
          "VpcId",
          "VpnGatewayId"
        ],
        "members": {
          "VpcId": {},
          "VpnGatewayId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VpcAttachment": {
            "shape": "S22",
            "locationName": "attachment"
          }
        }
      }
    },
    "AuthorizeSecurityGroupEgress": {
      "input": {
        "type": "structure",
        "required": [
          "GroupId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "GroupId": {
            "locationName": "groupId"
          },
          "IpPermissions": {
            "shape": "S25",
            "locationName": "ipPermissions"
          },
          "CidrIp": {
            "locationName": "cidrIp"
          },
          "FromPort": {
            "locationName": "fromPort",
            "type": "integer"
          },
          "IpProtocol": {
            "locationName": "ipProtocol"
          },
          "ToPort": {
            "locationName": "toPort",
            "type": "integer"
          },
          "SourceSecurityGroupName": {
            "locationName": "sourceSecurityGroupName"
          },
          "SourceSecurityGroupOwnerId": {
            "locationName": "sourceSecurityGroupOwnerId"
          }
        }
      }
    },
    "AuthorizeSecurityGroupIngress": {
      "input": {
        "type": "structure",
        "members": {
          "CidrIp": {},
          "FromPort": {
            "type": "integer"
          },
          "GroupId": {},
          "GroupName": {},
          "IpPermissions": {
            "shape": "S25"
          },
          "IpProtocol": {},
          "SourceSecurityGroupName": {},
          "SourceSecurityGroupOwnerId": {},
          "ToPort": {
            "type": "integer"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "BundleInstance": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId",
          "Storage"
        ],
        "members": {
          "InstanceId": {},
          "Storage": {
            "shape": "S2h"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BundleTask": {
            "shape": "S2l",
            "locationName": "bundleInstanceTask"
          }
        }
      }
    },
    "CancelBundleTask": {
      "input": {
        "type": "structure",
        "required": [
          "BundleId"
        ],
        "members": {
          "BundleId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BundleTask": {
            "shape": "S2l",
            "locationName": "bundleInstanceTask"
          }
        }
      }
    },
    "CancelConversionTask": {
      "input": {
        "type": "structure",
        "required": [
          "ConversionTaskId"
        ],
        "members": {
          "ConversionTaskId": {
            "locationName": "conversionTaskId"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "ReasonMessage": {
            "locationName": "reasonMessage"
          }
        }
      }
    },
    "CancelExportTask": {
      "input": {
        "type": "structure",
        "required": [
          "ExportTaskId"
        ],
        "members": {
          "ExportTaskId": {
            "locationName": "exportTaskId"
          }
        }
      }
    },
    "CancelImportTask": {
      "input": {
        "type": "structure",
        "members": {
          "CancelReason": {},
          "DryRun": {
            "type": "boolean"
          },
          "ImportTaskId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ImportTaskId": {
            "locationName": "importTaskId"
          },
          "PreviousState": {
            "locationName": "previousState"
          },
          "State": {
            "locationName": "state"
          }
        }
      }
    },
    "CancelReservedInstancesListing": {
      "input": {
        "type": "structure",
        "required": [
          "ReservedInstancesListingId"
        ],
        "members": {
          "ReservedInstancesListingId": {
            "locationName": "reservedInstancesListingId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ReservedInstancesListings": {
            "shape": "S2w",
            "locationName": "reservedInstancesListingsSet"
          }
        }
      }
    },
    "CancelSpotFleetRequests": {
      "input": {
        "type": "structure",
        "required": [
          "SpotFleetRequestIds",
          "TerminateInstances"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "SpotFleetRequestIds": {
            "shape": "Sa",
            "locationName": "spotFleetRequestId"
          },
          "TerminateInstances": {
            "locationName": "terminateInstances",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SuccessfulFleetRequests": {
            "locationName": "successfulFleetRequestSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "required": [
                "CurrentSpotFleetRequestState",
                "PreviousSpotFleetRequestState",
                "SpotFleetRequestId"
              ],
              "members": {
                "CurrentSpotFleetRequestState": {
                  "locationName": "currentSpotFleetRequestState"
                },
                "PreviousSpotFleetRequestState": {
                  "locationName": "previousSpotFleetRequestState"
                },
                "SpotFleetRequestId": {
                  "locationName": "spotFleetRequestId"
                }
              }
            }
          },
          "UnsuccessfulFleetRequests": {
            "locationName": "unsuccessfulFleetRequestSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "required": [
                "Error",
                "SpotFleetRequestId"
              ],
              "members": {
                "Error": {
                  "locationName": "error",
                  "type": "structure",
                  "required": [
                    "Code",
                    "Message"
                  ],
                  "members": {
                    "Code": {
                      "locationName": "code"
                    },
                    "Message": {
                      "locationName": "message"
                    }
                  }
                },
                "SpotFleetRequestId": {
                  "locationName": "spotFleetRequestId"
                }
              }
            }
          }
        }
      }
    },
    "CancelSpotInstanceRequests": {
      "input": {
        "type": "structure",
        "required": [
          "SpotInstanceRequestIds"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "SpotInstanceRequestIds": {
            "shape": "S3h",
            "locationName": "SpotInstanceRequestId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CancelledSpotInstanceRequests": {
            "locationName": "spotInstanceRequestSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "SpotInstanceRequestId": {
                  "locationName": "spotInstanceRequestId"
                },
                "State": {
                  "locationName": "state"
                }
              }
            }
          }
        }
      }
    },
    "ConfirmProductInstance": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId",
          "ProductCode"
        ],
        "members": {
          "InstanceId": {},
          "ProductCode": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "OwnerId": {
            "locationName": "ownerId"
          },
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "CopyFpgaImage": {
      "input": {
        "type": "structure",
        "required": [
          "SourceFpgaImageId",
          "SourceRegion"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "SourceFpgaImageId": {},
          "Description": {},
          "Name": {},
          "SourceRegion": {},
          "ClientToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FpgaImageId": {
            "locationName": "fpgaImageId"
          }
        }
      }
    },
    "CopyImage": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "SourceImageId",
          "SourceRegion"
        ],
        "members": {
          "ClientToken": {},
          "Description": {},
          "Encrypted": {
            "locationName": "encrypted",
            "type": "boolean"
          },
          "KmsKeyId": {
            "locationName": "kmsKeyId"
          },
          "Name": {},
          "SourceImageId": {},
          "SourceRegion": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ImageId": {
            "locationName": "imageId"
          }
        }
      }
    },
    "CopySnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "SourceRegion",
          "SourceSnapshotId"
        ],
        "members": {
          "Description": {},
          "DestinationRegion": {
            "locationName": "destinationRegion"
          },
          "Encrypted": {
            "locationName": "encrypted",
            "type": "boolean"
          },
          "KmsKeyId": {
            "locationName": "kmsKeyId"
          },
          "PresignedUrl": {
            "locationName": "presignedUrl"
          },
          "SourceRegion": {},
          "SourceSnapshotId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SnapshotId": {
            "locationName": "snapshotId"
          }
        }
      }
    },
    "CreateCustomerGateway": {
      "input": {
        "type": "structure",
        "required": [
          "BgpAsn",
          "PublicIp",
          "Type"
        ],
        "members": {
          "BgpAsn": {
            "type": "integer"
          },
          "PublicIp": {
            "locationName": "IpAddress"
          },
          "Type": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CustomerGateway": {
            "shape": "S3x",
            "locationName": "customerGateway"
          }
        }
      }
    },
    "CreateDefaultSubnet": {
      "input": {
        "type": "structure",
        "required": [
          "AvailabilityZone"
        ],
        "members": {
          "AvailabilityZone": {},
          "DryRun": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Subnet": {
            "shape": "S40",
            "locationName": "subnet"
          }
        }
      }
    },
    "CreateDefaultVpc": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Vpc": {
            "shape": "S45",
            "locationName": "vpc"
          }
        }
      }
    },
    "CreateDhcpOptions": {
      "input": {
        "type": "structure",
        "required": [
          "DhcpConfigurations"
        ],
        "members": {
          "DhcpConfigurations": {
            "locationName": "dhcpConfiguration",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "Key": {
                  "locationName": "key"
                },
                "Values": {
                  "shape": "Sa",
                  "locationName": "Value"
                }
              }
            }
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DhcpOptions": {
            "shape": "S4e",
            "locationName": "dhcpOptions"
          }
        }
      }
    },
    "CreateEgressOnlyInternetGateway": {
      "input": {
        "type": "structure",
        "required": [
          "VpcId"
        ],
        "members": {
          "ClientToken": {},
          "DryRun": {
            "type": "boolean"
          },
          "VpcId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ClientToken": {
            "locationName": "clientToken"
          },
          "EgressOnlyInternetGateway": {
            "shape": "S4l",
            "locationName": "egressOnlyInternetGateway"
          }
        }
      }
    },
    "CreateFlowLogs": {
      "input": {
        "type": "structure",
        "required": [
          "DeliverLogsPermissionArn",
          "LogGroupName",
          "ResourceIds",
          "ResourceType",
          "TrafficType"
        ],
        "members": {
          "ClientToken": {},
          "DeliverLogsPermissionArn": {},
          "LogGroupName": {},
          "ResourceIds": {
            "shape": "Sa",
            "locationName": "ResourceId"
          },
          "ResourceType": {},
          "TrafficType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ClientToken": {
            "locationName": "clientToken"
          },
          "FlowLogIds": {
            "shape": "Sa",
            "locationName": "flowLogIdSet"
          },
          "Unsuccessful": {
            "shape": "Sc",
            "locationName": "unsuccessful"
          }
        }
      }
    },
    "CreateFpgaImage": {
      "input": {
        "type": "structure",
        "required": [
          "InputStorageLocation"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "InputStorageLocation": {
            "shape": "S4u"
          },
          "LogsStorageLocation": {
            "shape": "S4u"
          },
          "Description": {},
          "Name": {},
          "ClientToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FpgaImageId": {
            "locationName": "fpgaImageId"
          },
          "FpgaImageGlobalId": {
            "locationName": "fpgaImageGlobalId"
          }
        }
      }
    },
    "CreateImage": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId",
          "Name"
        ],
        "members": {
          "BlockDeviceMappings": {
            "shape": "S4x",
            "locationName": "blockDeviceMapping"
          },
          "Description": {
            "locationName": "description"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "InstanceId": {
            "locationName": "instanceId"
          },
          "Name": {
            "locationName": "name"
          },
          "NoReboot": {
            "locationName": "noReboot",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ImageId": {
            "locationName": "imageId"
          }
        }
      }
    },
    "CreateInstanceExportTask": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "Description": {
            "locationName": "description"
          },
          "ExportToS3Task": {
            "locationName": "exportToS3",
            "type": "structure",
            "members": {
              "ContainerFormat": {
                "locationName": "containerFormat"
              },
              "DiskImageFormat": {
                "locationName": "diskImageFormat"
              },
              "S3Bucket": {
                "locationName": "s3Bucket"
              },
              "S3Prefix": {
                "locationName": "s3Prefix"
              }
            }
          },
          "InstanceId": {
            "locationName": "instanceId"
          },
          "TargetEnvironment": {
            "locationName": "targetEnvironment"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ExportTask": {
            "shape": "S58",
            "locationName": "exportTask"
          }
        }
      }
    },
    "CreateInternetGateway": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InternetGateway": {
            "shape": "S5e",
            "locationName": "internetGateway"
          }
        }
      }
    },
    "CreateKeyPair": {
      "input": {
        "type": "structure",
        "required": [
          "KeyName"
        ],
        "members": {
          "KeyName": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "KeyFingerprint": {
            "locationName": "keyFingerprint"
          },
          "KeyMaterial": {
            "locationName": "keyMaterial"
          },
          "KeyName": {
            "locationName": "keyName"
          }
        }
      }
    },
    "CreateLaunchTemplate": {
      "input": {
        "type": "structure",
        "required": [
          "LaunchTemplateName",
          "LaunchTemplateData"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ClientToken": {},
          "LaunchTemplateName": {},
          "VersionDescription": {},
          "LaunchTemplateData": {
            "shape": "S5k"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "LaunchTemplate": {
            "shape": "S6d",
            "locationName": "launchTemplate"
          }
        }
      }
    },
    "CreateLaunchTemplateVersion": {
      "input": {
        "type": "structure",
        "required": [
          "LaunchTemplateData"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ClientToken": {},
          "LaunchTemplateId": {},
          "LaunchTemplateName": {},
          "SourceVersion": {},
          "VersionDescription": {},
          "LaunchTemplateData": {
            "shape": "S5k"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "LaunchTemplateVersion": {
            "shape": "S6g",
            "locationName": "launchTemplateVersion"
          }
        }
      }
    },
    "CreateNatGateway": {
      "input": {
        "type": "structure",
        "required": [
          "AllocationId",
          "SubnetId"
        ],
        "members": {
          "AllocationId": {},
          "ClientToken": {},
          "SubnetId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ClientToken": {
            "locationName": "clientToken"
          },
          "NatGateway": {
            "shape": "S71",
            "locationName": "natGateway"
          }
        }
      }
    },
    "CreateNetworkAcl": {
      "input": {
        "type": "structure",
        "required": [
          "VpcId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "VpcId": {
            "locationName": "vpcId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NetworkAcl": {
            "shape": "S78",
            "locationName": "networkAcl"
          }
        }
      }
    },
    "CreateNetworkAclEntry": {
      "input": {
        "type": "structure",
        "required": [
          "Egress",
          "NetworkAclId",
          "Protocol",
          "RuleAction",
          "RuleNumber"
        ],
        "members": {
          "CidrBlock": {
            "locationName": "cidrBlock"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "Egress": {
            "locationName": "egress",
            "type": "boolean"
          },
          "IcmpTypeCode": {
            "shape": "S7d",
            "locationName": "Icmp"
          },
          "Ipv6CidrBlock": {
            "locationName": "ipv6CidrBlock"
          },
          "NetworkAclId": {
            "locationName": "networkAclId"
          },
          "PortRange": {
            "shape": "S7e",
            "locationName": "portRange"
          },
          "Protocol": {
            "locationName": "protocol"
          },
          "RuleAction": {
            "locationName": "ruleAction"
          },
          "RuleNumber": {
            "locationName": "ruleNumber",
            "type": "integer"
          }
        }
      }
    },
    "CreateNetworkInterface": {
      "input": {
        "type": "structure",
        "required": [
          "SubnetId"
        ],
        "members": {
          "Description": {
            "locationName": "description"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "Groups": {
            "shape": "S5r",
            "locationName": "SecurityGroupId"
          },
          "Ipv6AddressCount": {
            "locationName": "ipv6AddressCount",
            "type": "integer"
          },
          "Ipv6Addresses": {
            "shape": "S6o",
            "locationName": "ipv6Addresses"
          },
          "PrivateIpAddress": {
            "locationName": "privateIpAddress"
          },
          "PrivateIpAddresses": {
            "shape": "S5u",
            "locationName": "privateIpAddresses"
          },
          "SecondaryPrivateIpAddressCount": {
            "locationName": "secondaryPrivateIpAddressCount",
            "type": "integer"
          },
          "SubnetId": {
            "locationName": "subnetId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NetworkInterface": {
            "shape": "S7j",
            "locationName": "networkInterface"
          }
        }
      }
    },
    "CreateNetworkInterfacePermission": {
      "input": {
        "type": "structure",
        "required": [
          "NetworkInterfaceId",
          "Permission"
        ],
        "members": {
          "NetworkInterfaceId": {},
          "AwsAccountId": {},
          "AwsService": {},
          "Permission": {},
          "DryRun": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InterfacePermission": {
            "shape": "S7x",
            "locationName": "interfacePermission"
          }
        }
      }
    },
    "CreatePlacementGroup": {
      "input": {
        "type": "structure",
        "required": [
          "GroupName",
          "Strategy"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "GroupName": {
            "locationName": "groupName"
          },
          "Strategy": {
            "locationName": "strategy"
          }
        }
      }
    },
    "CreateReservedInstancesListing": {
      "input": {
        "type": "structure",
        "required": [
          "ClientToken",
          "InstanceCount",
          "PriceSchedules",
          "ReservedInstancesId"
        ],
        "members": {
          "ClientToken": {
            "locationName": "clientToken"
          },
          "InstanceCount": {
            "locationName": "instanceCount",
            "type": "integer"
          },
          "PriceSchedules": {
            "locationName": "priceSchedules",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "CurrencyCode": {
                  "locationName": "currencyCode"
                },
                "Price": {
                  "locationName": "price",
                  "type": "double"
                },
                "Term": {
                  "locationName": "term",
                  "type": "long"
                }
              }
            }
          },
          "ReservedInstancesId": {
            "locationName": "reservedInstancesId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ReservedInstancesListings": {
            "shape": "S2w",
            "locationName": "reservedInstancesListingsSet"
          }
        }
      }
    },
    "CreateRoute": {
      "input": {
        "type": "structure",
        "required": [
          "RouteTableId"
        ],
        "members": {
          "DestinationCidrBlock": {
            "locationName": "destinationCidrBlock"
          },
          "DestinationIpv6CidrBlock": {
            "locationName": "destinationIpv6CidrBlock"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "EgressOnlyInternetGatewayId": {
            "locationName": "egressOnlyInternetGatewayId"
          },
          "GatewayId": {
            "locationName": "gatewayId"
          },
          "InstanceId": {
            "locationName": "instanceId"
          },
          "NatGatewayId": {
            "locationName": "natGatewayId"
          },
          "NetworkInterfaceId": {
            "locationName": "networkInterfaceId"
          },
          "RouteTableId": {
            "locationName": "routeTableId"
          },
          "VpcPeeringConnectionId": {
            "locationName": "vpcPeeringConnectionId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "CreateRouteTable": {
      "input": {
        "type": "structure",
        "required": [
          "VpcId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "VpcId": {
            "locationName": "vpcId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RouteTable": {
            "shape": "S8a",
            "locationName": "routeTable"
          }
        }
      }
    },
    "CreateSecurityGroup": {
      "input": {
        "type": "structure",
        "required": [
          "Description",
          "GroupName"
        ],
        "members": {
          "Description": {
            "locationName": "GroupDescription"
          },
          "GroupName": {},
          "VpcId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GroupId": {
            "locationName": "groupId"
          }
        }
      }
    },
    "CreateSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeId"
        ],
        "members": {
          "Description": {},
          "VolumeId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "shape": "S8m"
      }
    },
    "CreateSpotDatafeedSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "locationName": "bucket"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "Prefix": {
            "locationName": "prefix"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SpotDatafeedSubscription": {
            "shape": "S8q",
            "locationName": "spotDatafeedSubscription"
          }
        }
      }
    },
    "CreateSubnet": {
      "input": {
        "type": "structure",
        "required": [
          "CidrBlock",
          "VpcId"
        ],
        "members": {
          "AvailabilityZone": {},
          "CidrBlock": {},
          "Ipv6CidrBlock": {},
          "VpcId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Subnet": {
            "shape": "S40",
            "locationName": "subnet"
          }
        }
      }
    },
    "CreateTags": {
      "input": {
        "type": "structure",
        "required": [
          "Resources",
          "Tags"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "Resources": {
            "shape": "S8w",
            "locationName": "ResourceId"
          },
          "Tags": {
            "shape": "Sr",
            "locationName": "Tag"
          }
        }
      }
    },
    "CreateVolume": {
      "input": {
        "type": "structure",
        "required": [
          "AvailabilityZone"
        ],
        "members": {
          "AvailabilityZone": {},
          "Encrypted": {
            "locationName": "encrypted",
            "type": "boolean"
          },
          "Iops": {
            "type": "integer"
          },
          "KmsKeyId": {},
          "Size": {
            "type": "integer"
          },
          "SnapshotId": {},
          "VolumeType": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "TagSpecifications": {
            "shape": "S8y",
            "locationName": "TagSpecification"
          }
        }
      },
      "output": {
        "shape": "S90"
      }
    },
    "CreateVpc": {
      "input": {
        "type": "structure",
        "required": [
          "CidrBlock"
        ],
        "members": {
          "CidrBlock": {},
          "AmazonProvidedIpv6CidrBlock": {
            "locationName": "amazonProvidedIpv6CidrBlock",
            "type": "boolean"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "InstanceTenancy": {
            "locationName": "instanceTenancy"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Vpc": {
            "shape": "S45",
            "locationName": "vpc"
          }
        }
      }
    },
    "CreateVpcEndpoint": {
      "input": {
        "type": "structure",
        "required": [
          "VpcId",
          "ServiceName"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "VpcEndpointType": {},
          "VpcId": {},
          "ServiceName": {},
          "PolicyDocument": {},
          "RouteTableIds": {
            "shape": "Sa",
            "locationName": "RouteTableId"
          },
          "SubnetIds": {
            "shape": "Sa",
            "locationName": "SubnetId"
          },
          "SecurityGroupIds": {
            "shape": "Sa",
            "locationName": "SecurityGroupId"
          },
          "ClientToken": {},
          "PrivateDnsEnabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VpcEndpoint": {
            "shape": "S98",
            "locationName": "vpcEndpoint"
          },
          "ClientToken": {
            "locationName": "clientToken"
          }
        }
      }
    },
    "CreateVpcEndpointConnectionNotification": {
      "input": {
        "type": "structure",
        "required": [
          "ConnectionNotificationArn",
          "ConnectionEvents"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ServiceId": {},
          "VpcEndpointId": {},
          "ConnectionNotificationArn": {},
          "ConnectionEvents": {
            "shape": "Sa"
          },
          "ClientToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ConnectionNotification": {
            "shape": "S9g",
            "locationName": "connectionNotification"
          },
          "ClientToken": {
            "locationName": "clientToken"
          }
        }
      }
    },
    "CreateVpcEndpointServiceConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "NetworkLoadBalancerArns"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "AcceptanceRequired": {
            "type": "boolean"
          },
          "NetworkLoadBalancerArns": {
            "shape": "Sa",
            "locationName": "NetworkLoadBalancerArn"
          },
          "ClientToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ServiceConfiguration": {
            "shape": "S9l",
            "locationName": "serviceConfiguration"
          },
          "ClientToken": {
            "locationName": "clientToken"
          }
        }
      }
    },
    "CreateVpcPeeringConnection": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "PeerOwnerId": {
            "locationName": "peerOwnerId"
          },
          "PeerVpcId": {
            "locationName": "peerVpcId"
          },
          "VpcId": {
            "locationName": "vpcId"
          },
          "PeerRegion": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VpcPeeringConnection": {
            "shape": "Sh",
            "locationName": "vpcPeeringConnection"
          }
        }
      }
    },
    "CreateVpnConnection": {
      "input": {
        "type": "structure",
        "required": [
          "CustomerGatewayId",
          "Type",
          "VpnGatewayId"
        ],
        "members": {
          "CustomerGatewayId": {},
          "Type": {},
          "VpnGatewayId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "Options": {
            "locationName": "options",
            "type": "structure",
            "members": {
              "StaticRoutesOnly": {
                "locationName": "staticRoutesOnly",
                "type": "boolean"
              },
              "TunnelOptions": {
                "type": "list",
                "member": {
                  "locationName": "item",
                  "type": "structure",
                  "members": {
                    "TunnelInsideCidr": {},
                    "PreSharedKey": {}
                  }
                }
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VpnConnection": {
            "shape": "S9x",
            "locationName": "vpnConnection"
          }
        }
      }
    },
    "CreateVpnConnectionRoute": {
      "input": {
        "type": "structure",
        "required": [
          "DestinationCidrBlock",
          "VpnConnectionId"
        ],
        "members": {
          "DestinationCidrBlock": {},
          "VpnConnectionId": {}
        }
      }
    },
    "CreateVpnGateway": {
      "input": {
        "type": "structure",
        "required": [
          "Type"
        ],
        "members": {
          "AvailabilityZone": {},
          "Type": {},
          "AmazonSideAsn": {
            "type": "long"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VpnGateway": {
            "shape": "Sa9",
            "locationName": "vpnGateway"
          }
        }
      }
    },
    "DeleteCustomerGateway": {
      "input": {
        "type": "structure",
        "required": [
          "CustomerGatewayId"
        ],
        "members": {
          "CustomerGatewayId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "DeleteDhcpOptions": {
      "input": {
        "type": "structure",
        "required": [
          "DhcpOptionsId"
        ],
        "members": {
          "DhcpOptionsId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "DeleteEgressOnlyInternetGateway": {
      "input": {
        "type": "structure",
        "required": [
          "EgressOnlyInternetGatewayId"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "EgressOnlyInternetGatewayId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ReturnCode": {
            "locationName": "returnCode",
            "type": "boolean"
          }
        }
      }
    },
    "DeleteFlowLogs": {
      "input": {
        "type": "structure",
        "required": [
          "FlowLogIds"
        ],
        "members": {
          "FlowLogIds": {
            "shape": "Sa",
            "locationName": "FlowLogId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Unsuccessful": {
            "shape": "Sc",
            "locationName": "unsuccessful"
          }
        }
      }
    },
    "DeleteFpgaImage": {
      "input": {
        "type": "structure",
        "required": [
          "FpgaImageId"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "FpgaImageId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "DeleteInternetGateway": {
      "input": {
        "type": "structure",
        "required": [
          "InternetGatewayId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "InternetGatewayId": {
            "locationName": "internetGatewayId"
          }
        }
      }
    },
    "DeleteKeyPair": {
      "input": {
        "type": "structure",
        "required": [
          "KeyName"
        ],
        "members": {
          "KeyName": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "DeleteLaunchTemplate": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "LaunchTemplateId": {},
          "LaunchTemplateName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "LaunchTemplate": {
            "shape": "S6d",
            "locationName": "launchTemplate"
          }
        }
      }
    },
    "DeleteLaunchTemplateVersions": {
      "input": {
        "type": "structure",
        "required": [
          "Versions"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "LaunchTemplateId": {},
          "LaunchTemplateName": {},
          "Versions": {
            "shape": "Sao",
            "locationName": "LaunchTemplateVersion"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SuccessfullyDeletedLaunchTemplateVersions": {
            "locationName": "successfullyDeletedLaunchTemplateVersionSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "LaunchTemplateId": {
                  "locationName": "launchTemplateId"
                },
                "LaunchTemplateName": {
                  "locationName": "launchTemplateName"
                },
                "VersionNumber": {
                  "locationName": "versionNumber",
                  "type": "long"
                }
              }
            }
          },
          "UnsuccessfullyDeletedLaunchTemplateVersions": {
            "locationName": "unsuccessfullyDeletedLaunchTemplateVersionSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "LaunchTemplateId": {
                  "locationName": "launchTemplateId"
                },
                "LaunchTemplateName": {
                  "locationName": "launchTemplateName"
                },
                "VersionNumber": {
                  "locationName": "versionNumber",
                  "type": "long"
                },
                "ResponseError": {
                  "locationName": "responseError",
                  "type": "structure",
                  "members": {
                    "Code": {
                      "locationName": "code"
                    },
                    "Message": {
                      "locationName": "message"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "DeleteNatGateway": {
      "input": {
        "type": "structure",
        "required": [
          "NatGatewayId"
        ],
        "members": {
          "NatGatewayId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NatGatewayId": {
            "locationName": "natGatewayId"
          }
        }
      }
    },
    "DeleteNetworkAcl": {
      "input": {
        "type": "structure",
        "required": [
          "NetworkAclId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "NetworkAclId": {
            "locationName": "networkAclId"
          }
        }
      }
    },
    "DeleteNetworkAclEntry": {
      "input": {
        "type": "structure",
        "required": [
          "Egress",
          "NetworkAclId",
          "RuleNumber"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "Egress": {
            "locationName": "egress",
            "type": "boolean"
          },
          "NetworkAclId": {
            "locationName": "networkAclId"
          },
          "RuleNumber": {
            "locationName": "ruleNumber",
            "type": "integer"
          }
        }
      }
    },
    "DeleteNetworkInterface": {
      "input": {
        "type": "structure",
        "required": [
          "NetworkInterfaceId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "NetworkInterfaceId": {
            "locationName": "networkInterfaceId"
          }
        }
      }
    },
    "DeleteNetworkInterfacePermission": {
      "input": {
        "type": "structure",
        "required": [
          "NetworkInterfacePermissionId"
        ],
        "members": {
          "NetworkInterfacePermissionId": {},
          "Force": {
            "type": "boolean"
          },
          "DryRun": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "DeletePlacementGroup": {
      "input": {
        "type": "structure",
        "required": [
          "GroupName"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "GroupName": {
            "locationName": "groupName"
          }
        }
      }
    },
    "DeleteRoute": {
      "input": {
        "type": "structure",
        "required": [
          "RouteTableId"
        ],
        "members": {
          "DestinationCidrBlock": {
            "locationName": "destinationCidrBlock"
          },
          "DestinationIpv6CidrBlock": {
            "locationName": "destinationIpv6CidrBlock"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "RouteTableId": {
            "locationName": "routeTableId"
          }
        }
      }
    },
    "DeleteRouteTable": {
      "input": {
        "type": "structure",
        "required": [
          "RouteTableId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "RouteTableId": {
            "locationName": "routeTableId"
          }
        }
      }
    },
    "DeleteSecurityGroup": {
      "input": {
        "type": "structure",
        "members": {
          "GroupId": {},
          "GroupName": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "DeleteSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "SnapshotId"
        ],
        "members": {
          "SnapshotId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "DeleteSpotDatafeedSubscription": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "DeleteSubnet": {
      "input": {
        "type": "structure",
        "required": [
          "SubnetId"
        ],
        "members": {
          "SubnetId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "DeleteTags": {
      "input": {
        "type": "structure",
        "required": [
          "Resources"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "Resources": {
            "shape": "S8w",
            "locationName": "resourceId"
          },
          "Tags": {
            "shape": "Sr",
            "locationName": "tag"
          }
        }
      }
    },
    "DeleteVolume": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeId"
        ],
        "members": {
          "VolumeId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "DeleteVpc": {
      "input": {
        "type": "structure",
        "required": [
          "VpcId"
        ],
        "members": {
          "VpcId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "DeleteVpcEndpointConnectionNotifications": {
      "input": {
        "type": "structure",
        "required": [
          "ConnectionNotificationIds"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ConnectionNotificationIds": {
            "shape": "Sa",
            "locationName": "ConnectionNotificationId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Unsuccessful": {
            "shape": "Sc",
            "locationName": "unsuccessful"
          }
        }
      }
    },
    "DeleteVpcEndpointServiceConfigurations": {
      "input": {
        "type": "structure",
        "required": [
          "ServiceIds"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ServiceIds": {
            "shape": "Sa",
            "locationName": "ServiceId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Unsuccessful": {
            "shape": "Sc",
            "locationName": "unsuccessful"
          }
        }
      }
    },
    "DeleteVpcEndpoints": {
      "input": {
        "type": "structure",
        "required": [
          "VpcEndpointIds"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "VpcEndpointIds": {
            "shape": "Sa",
            "locationName": "VpcEndpointId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Unsuccessful": {
            "shape": "Sc",
            "locationName": "unsuccessful"
          }
        }
      }
    },
    "DeleteVpcPeeringConnection": {
      "input": {
        "type": "structure",
        "required": [
          "VpcPeeringConnectionId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "VpcPeeringConnectionId": {
            "locationName": "vpcPeeringConnectionId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "DeleteVpnConnection": {
      "input": {
        "type": "structure",
        "required": [
          "VpnConnectionId"
        ],
        "members": {
          "VpnConnectionId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "DeleteVpnConnectionRoute": {
      "input": {
        "type": "structure",
        "required": [
          "DestinationCidrBlock",
          "VpnConnectionId"
        ],
        "members": {
          "DestinationCidrBlock": {},
          "VpnConnectionId": {}
        }
      }
    },
    "DeleteVpnGateway": {
      "input": {
        "type": "structure",
        "required": [
          "VpnGatewayId"
        ],
        "members": {
          "VpnGatewayId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "DeregisterImage": {
      "input": {
        "type": "structure",
        "required": [
          "ImageId"
        ],
        "members": {
          "ImageId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "DescribeAccountAttributes": {
      "input": {
        "type": "structure",
        "members": {
          "AttributeNames": {
            "locationName": "attributeName",
            "type": "list",
            "member": {
              "locationName": "attributeName"
            }
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AccountAttributes": {
            "locationName": "accountAttributeSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "AttributeName": {
                  "locationName": "attributeName"
                },
                "AttributeValues": {
                  "locationName": "attributeValueSet",
                  "type": "list",
                  "member": {
                    "locationName": "item",
                    "type": "structure",
                    "members": {
                      "AttributeValue": {
                        "locationName": "attributeValue"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "DescribeAddresses": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "PublicIps": {
            "locationName": "PublicIp",
            "type": "list",
            "member": {
              "locationName": "PublicIp"
            }
          },
          "AllocationIds": {
            "locationName": "AllocationId",
            "type": "list",
            "member": {
              "locationName": "AllocationId"
            }
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Addresses": {
            "locationName": "addressesSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "InstanceId": {
                  "locationName": "instanceId"
                },
                "PublicIp": {
                  "locationName": "publicIp"
                },
                "AllocationId": {
                  "locationName": "allocationId"
                },
                "AssociationId": {
                  "locationName": "associationId"
                },
                "Domain": {
                  "locationName": "domain"
                },
                "NetworkInterfaceId": {
                  "locationName": "networkInterfaceId"
                },
                "NetworkInterfaceOwnerId": {
                  "locationName": "networkInterfaceOwnerId"
                },
                "PrivateIpAddress": {
                  "locationName": "privateIpAddress"
                },
                "Tags": {
                  "shape": "Sr",
                  "locationName": "tagSet"
                }
              }
            }
          }
        }
      }
    },
    "DescribeAvailabilityZones": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "ZoneNames": {
            "locationName": "ZoneName",
            "type": "list",
            "member": {
              "locationName": "ZoneName"
            }
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AvailabilityZones": {
            "locationName": "availabilityZoneInfo",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "State": {
                  "locationName": "zoneState"
                },
                "Messages": {
                  "locationName": "messageSet",
                  "type": "list",
                  "member": {
                    "locationName": "item",
                    "type": "structure",
                    "members": {
                      "Message": {
                        "locationName": "message"
                      }
                    }
                  }
                },
                "RegionName": {
                  "locationName": "regionName"
                },
                "ZoneName": {
                  "locationName": "zoneName"
                }
              }
            }
          }
        }
      }
    },
    "DescribeBundleTasks": {
      "input": {
        "type": "structure",
        "members": {
          "BundleIds": {
            "locationName": "BundleId",
            "type": "list",
            "member": {
              "locationName": "BundleId"
            }
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BundleTasks": {
            "locationName": "bundleInstanceTasksSet",
            "type": "list",
            "member": {
              "shape": "S2l",
              "locationName": "item"
            }
          }
        }
      }
    },
    "DescribeClassicLinkInstances": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "InstanceIds": {
            "shape": "Sci",
            "locationName": "InstanceId"
          },
          "MaxResults": {
            "locationName": "maxResults",
            "type": "integer"
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Instances": {
            "locationName": "instancesSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "Groups": {
                  "shape": "S7m",
                  "locationName": "groupSet"
                },
                "InstanceId": {
                  "locationName": "instanceId"
                },
                "Tags": {
                  "shape": "Sr",
                  "locationName": "tagSet"
                },
                "VpcId": {
                  "locationName": "vpcId"
                }
              }
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeConversionTasks": {
      "input": {
        "type": "structure",
        "members": {
          "ConversionTaskIds": {
            "locationName": "conversionTaskId",
            "type": "list",
            "member": {
              "locationName": "item"
            }
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ConversionTasks": {
            "locationName": "conversionTasks",
            "type": "list",
            "member": {
              "shape": "Scq",
              "locationName": "item"
            }
          }
        }
      }
    },
    "DescribeCustomerGateways": {
      "input": {
        "type": "structure",
        "members": {
          "CustomerGatewayIds": {
            "locationName": "CustomerGatewayId",
            "type": "list",
            "member": {
              "locationName": "CustomerGatewayId"
            }
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CustomerGateways": {
            "locationName": "customerGatewaySet",
            "type": "list",
            "member": {
              "shape": "S3x",
              "locationName": "item"
            }
          }
        }
      }
    },
    "DescribeDhcpOptions": {
      "input": {
        "type": "structure",
        "members": {
          "DhcpOptionsIds": {
            "locationName": "DhcpOptionsId",
            "type": "list",
            "member": {
              "locationName": "DhcpOptionsId"
            }
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DhcpOptions": {
            "locationName": "dhcpOptionsSet",
            "type": "list",
            "member": {
              "shape": "S4e",
              "locationName": "item"
            }
          }
        }
      }
    },
    "DescribeEgressOnlyInternetGateways": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "EgressOnlyInternetGatewayIds": {
            "locationName": "EgressOnlyInternetGatewayId",
            "type": "list",
            "member": {
              "locationName": "item"
            }
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "EgressOnlyInternetGateways": {
            "locationName": "egressOnlyInternetGatewaySet",
            "type": "list",
            "member": {
              "shape": "S4l",
              "locationName": "item"
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeElasticGpus": {
      "input": {
        "type": "structure",
        "members": {
          "ElasticGpuIds": {
            "locationName": "ElasticGpuId",
            "type": "list",
            "member": {
              "locationName": "item"
            }
          },
          "DryRun": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ElasticGpuSet": {
            "locationName": "elasticGpuSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "ElasticGpuId": {
                  "locationName": "elasticGpuId"
                },
                "AvailabilityZone": {
                  "locationName": "availabilityZone"
                },
                "ElasticGpuType": {
                  "locationName": "elasticGpuType"
                },
                "ElasticGpuHealth": {
                  "locationName": "elasticGpuHealth",
                  "type": "structure",
                  "members": {
                    "Status": {
                      "locationName": "status"
                    }
                  }
                },
                "ElasticGpuState": {
                  "locationName": "elasticGpuState"
                },
                "InstanceId": {
                  "locationName": "instanceId"
                }
              }
            }
          },
          "MaxResults": {
            "locationName": "maxResults",
            "type": "integer"
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeExportTasks": {
      "input": {
        "type": "structure",
        "members": {
          "ExportTaskIds": {
            "locationName": "exportTaskId",
            "type": "list",
            "member": {
              "locationName": "ExportTaskId"
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ExportTasks": {
            "locationName": "exportTaskSet",
            "type": "list",
            "member": {
              "shape": "S58",
              "locationName": "item"
            }
          }
        }
      }
    },
    "DescribeFlowLogs": {
      "input": {
        "type": "structure",
        "members": {
          "Filter": {
            "shape": "Sby"
          },
          "FlowLogIds": {
            "shape": "Sa",
            "locationName": "FlowLogId"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FlowLogs": {
            "locationName": "flowLogSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "CreationTime": {
                  "locationName": "creationTime",
                  "type": "timestamp"
                },
                "DeliverLogsErrorMessage": {
                  "locationName": "deliverLogsErrorMessage"
                },
                "DeliverLogsPermissionArn": {
                  "locationName": "deliverLogsPermissionArn"
                },
                "DeliverLogsStatus": {
                  "locationName": "deliverLogsStatus"
                },
                "FlowLogId": {
                  "locationName": "flowLogId"
                },
                "FlowLogStatus": {
                  "locationName": "flowLogStatus"
                },
                "LogGroupName": {
                  "locationName": "logGroupName"
                },
                "ResourceId": {
                  "locationName": "resourceId"
                },
                "TrafficType": {
                  "locationName": "trafficType"
                }
              }
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeFpgaImageAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "FpgaImageId",
          "Attribute"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "FpgaImageId": {},
          "Attribute": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FpgaImageAttribute": {
            "shape": "Sdu",
            "locationName": "fpgaImageAttribute"
          }
        }
      }
    },
    "DescribeFpgaImages": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "FpgaImageIds": {
            "locationName": "FpgaImageId",
            "type": "list",
            "member": {
              "locationName": "item"
            }
          },
          "Owners": {
            "shape": "Se3",
            "locationName": "Owner"
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FpgaImages": {
            "locationName": "fpgaImageSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "FpgaImageId": {
                  "locationName": "fpgaImageId"
                },
                "FpgaImageGlobalId": {
                  "locationName": "fpgaImageGlobalId"
                },
                "Name": {
                  "locationName": "name"
                },
                "Description": {
                  "locationName": "description"
                },
                "ShellVersion": {
                  "locationName": "shellVersion"
                },
                "PciId": {
                  "locationName": "pciId",
                  "type": "structure",
                  "members": {
                    "DeviceId": {},
                    "VendorId": {},
                    "SubsystemId": {},
                    "SubsystemVendorId": {}
                  }
                },
                "State": {
                  "locationName": "state",
                  "type": "structure",
                  "members": {
                    "Code": {
                      "locationName": "code"
                    },
                    "Message": {
                      "locationName": "message"
                    }
                  }
                },
                "CreateTime": {
                  "locationName": "createTime",
                  "type": "timestamp"
                },
                "UpdateTime": {
                  "locationName": "updateTime",
                  "type": "timestamp"
                },
                "OwnerId": {
                  "locationName": "ownerId"
                },
                "OwnerAlias": {
                  "locationName": "ownerAlias"
                },
                "ProductCodes": {
                  "shape": "Sdy",
                  "locationName": "productCodes"
                },
                "Tags": {
                  "shape": "Sr",
                  "locationName": "tags"
                },
                "Public": {
                  "locationName": "public",
                  "type": "boolean"
                }
              }
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeHostReservationOfferings": {
      "input": {
        "type": "structure",
        "members": {
          "Filter": {
            "shape": "Sby"
          },
          "MaxDuration": {
            "type": "integer"
          },
          "MaxResults": {
            "type": "integer"
          },
          "MinDuration": {
            "type": "integer"
          },
          "NextToken": {},
          "OfferingId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {
            "locationName": "nextToken"
          },
          "OfferingSet": {
            "locationName": "offeringSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "CurrencyCode": {
                  "locationName": "currencyCode"
                },
                "Duration": {
                  "locationName": "duration",
                  "type": "integer"
                },
                "HourlyPrice": {
                  "locationName": "hourlyPrice"
                },
                "InstanceFamily": {
                  "locationName": "instanceFamily"
                },
                "OfferingId": {
                  "locationName": "offeringId"
                },
                "PaymentOption": {
                  "locationName": "paymentOption"
                },
                "UpfrontPrice": {
                  "locationName": "upfrontPrice"
                }
              }
            }
          }
        }
      }
    },
    "DescribeHostReservations": {
      "input": {
        "type": "structure",
        "members": {
          "Filter": {
            "shape": "Sby"
          },
          "HostReservationIdSet": {
            "type": "list",
            "member": {
              "locationName": "item"
            }
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "HostReservationSet": {
            "locationName": "hostReservationSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "Count": {
                  "locationName": "count",
                  "type": "integer"
                },
                "CurrencyCode": {
                  "locationName": "currencyCode"
                },
                "Duration": {
                  "locationName": "duration",
                  "type": "integer"
                },
                "End": {
                  "locationName": "end",
                  "type": "timestamp"
                },
                "HostIdSet": {
                  "shape": "Sem",
                  "locationName": "hostIdSet"
                },
                "HostReservationId": {
                  "locationName": "hostReservationId"
                },
                "HourlyPrice": {
                  "locationName": "hourlyPrice"
                },
                "InstanceFamily": {
                  "locationName": "instanceFamily"
                },
                "OfferingId": {
                  "locationName": "offeringId"
                },
                "PaymentOption": {
                  "locationName": "paymentOption"
                },
                "Start": {
                  "locationName": "start",
                  "type": "timestamp"
                },
                "State": {
                  "locationName": "state"
                },
                "UpfrontPrice": {
                  "locationName": "upfrontPrice"
                }
              }
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeHosts": {
      "input": {
        "type": "structure",
        "members": {
          "Filter": {
            "shape": "Sby",
            "locationName": "filter"
          },
          "HostIds": {
            "shape": "Sep",
            "locationName": "hostId"
          },
          "MaxResults": {
            "locationName": "maxResults",
            "type": "integer"
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Hosts": {
            "locationName": "hostSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "AutoPlacement": {
                  "locationName": "autoPlacement"
                },
                "AvailabilityZone": {
                  "locationName": "availabilityZone"
                },
                "AvailableCapacity": {
                  "locationName": "availableCapacity",
                  "type": "structure",
                  "members": {
                    "AvailableInstanceCapacity": {
                      "locationName": "availableInstanceCapacity",
                      "type": "list",
                      "member": {
                        "locationName": "item",
                        "type": "structure",
                        "members": {
                          "AvailableCapacity": {
                            "locationName": "availableCapacity",
                            "type": "integer"
                          },
                          "InstanceType": {
                            "locationName": "instanceType"
                          },
                          "TotalCapacity": {
                            "locationName": "totalCapacity",
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "AvailableVCpus": {
                      "locationName": "availableVCpus",
                      "type": "integer"
                    }
                  }
                },
                "ClientToken": {
                  "locationName": "clientToken"
                },
                "HostId": {
                  "locationName": "hostId"
                },
                "HostProperties": {
                  "locationName": "hostProperties",
                  "type": "structure",
                  "members": {
                    "Cores": {
                      "locationName": "cores",
                      "type": "integer"
                    },
                    "InstanceType": {
                      "locationName": "instanceType"
                    },
                    "Sockets": {
                      "locationName": "sockets",
                      "type": "integer"
                    },
                    "TotalVCpus": {
                      "locationName": "totalVCpus",
                      "type": "integer"
                    }
                  }
                },
                "HostReservationId": {
                  "locationName": "hostReservationId"
                },
                "Instances": {
                  "locationName": "instances",
                  "type": "list",
                  "member": {
                    "locationName": "item",
                    "type": "structure",
                    "members": {
                      "InstanceId": {
                        "locationName": "instanceId"
                      },
                      "InstanceType": {
                        "locationName": "instanceType"
                      }
                    }
                  }
                },
                "State": {
                  "locationName": "state"
                }
              }
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeIamInstanceProfileAssociations": {
      "input": {
        "type": "structure",
        "members": {
          "AssociationIds": {
            "locationName": "AssociationId",
            "type": "list",
            "member": {
              "locationName": "AssociationId"
            }
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IamInstanceProfileAssociations": {
            "locationName": "iamInstanceProfileAssociationSet",
            "type": "list",
            "member": {
              "shape": "S1b",
              "locationName": "item"
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeIdFormat": {
      "input": {
        "type": "structure",
        "members": {
          "Resource": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Statuses": {
            "shape": "Sf6",
            "locationName": "statusSet"
          }
        }
      }
    },
    "DescribeIdentityIdFormat": {
      "input": {
        "type": "structure",
        "required": [
          "PrincipalArn"
        ],
        "members": {
          "PrincipalArn": {
            "locationName": "principalArn"
          },
          "Resource": {
            "locationName": "resource"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Statuses": {
            "shape": "Sf6",
            "locationName": "statusSet"
          }
        }
      }
    },
    "DescribeImageAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "Attribute",
          "ImageId"
        ],
        "members": {
          "Attribute": {},
          "ImageId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BlockDeviceMappings": {
            "shape": "Sfd",
            "locationName": "blockDeviceMapping"
          },
          "ImageId": {
            "locationName": "imageId"
          },
          "LaunchPermissions": {
            "shape": "Sfe",
            "locationName": "launchPermission"
          },
          "ProductCodes": {
            "shape": "Sdy",
            "locationName": "productCodes"
          },
          "Description": {
            "shape": "S4i",
            "locationName": "description"
          },
          "KernelId": {
            "shape": "S4i",
            "locationName": "kernel"
          },
          "RamdiskId": {
            "shape": "S4i",
            "locationName": "ramdisk"
          },
          "SriovNetSupport": {
            "shape": "S4i",
            "locationName": "sriovNetSupport"
          }
        }
      }
    },
    "DescribeImages": {
      "input": {
        "type": "structure",
        "members": {
          "ExecutableUsers": {
            "locationName": "ExecutableBy",
            "type": "list",
            "member": {
              "locationName": "ExecutableBy"
            }
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "ImageIds": {
            "locationName": "ImageId",
            "type": "list",
            "member": {
              "locationName": "ImageId"
            }
          },
          "Owners": {
            "shape": "Se3",
            "locationName": "Owner"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Images": {
            "locationName": "imagesSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "Architecture": {
                  "locationName": "architecture"
                },
                "CreationDate": {
                  "locationName": "creationDate"
                },
                "ImageId": {
                  "locationName": "imageId"
                },
                "ImageLocation": {
                  "locationName": "imageLocation"
                },
                "ImageType": {
                  "locationName": "imageType"
                },
                "Public": {
                  "locationName": "isPublic",
                  "type": "boolean"
                },
                "KernelId": {
                  "locationName": "kernelId"
                },
                "OwnerId": {
                  "locationName": "imageOwnerId"
                },
                "Platform": {
                  "locationName": "platform"
                },
                "ProductCodes": {
                  "shape": "Sdy",
                  "locationName": "productCodes"
                },
                "RamdiskId": {
                  "locationName": "ramdiskId"
                },
                "State": {
                  "locationName": "imageState"
                },
                "BlockDeviceMappings": {
                  "shape": "Sfd",
                  "locationName": "blockDeviceMapping"
                },
                "Description": {
                  "locationName": "description"
                },
                "EnaSupport": {
                  "locationName": "enaSupport",
                  "type": "boolean"
                },
                "Hypervisor": {
                  "locationName": "hypervisor"
                },
                "ImageOwnerAlias": {
                  "locationName": "imageOwnerAlias"
                },
                "Name": {
                  "locationName": "name"
                },
                "RootDeviceName": {
                  "locationName": "rootDeviceName"
                },
                "RootDeviceType": {
                  "locationName": "rootDeviceType"
                },
                "SriovNetSupport": {
                  "locationName": "sriovNetSupport"
                },
                "StateReason": {
                  "shape": "Sfr",
                  "locationName": "stateReason"
                },
                "Tags": {
                  "shape": "Sr",
                  "locationName": "tagSet"
                },
                "VirtualizationType": {
                  "locationName": "virtualizationType"
                }
              }
            }
          }
        }
      }
    },
    "DescribeImportImageTasks": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "Sby"
          },
          "ImportTaskIds": {
            "shape": "Sfu",
            "locationName": "ImportTaskId"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ImportImageTasks": {
            "locationName": "importImageTaskSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "Architecture": {
                  "locationName": "architecture"
                },
                "Description": {
                  "locationName": "description"
                },
                "Hypervisor": {
                  "locationName": "hypervisor"
                },
                "ImageId": {
                  "locationName": "imageId"
                },
                "ImportTaskId": {
                  "locationName": "importTaskId"
                },
                "LicenseType": {
                  "locationName": "licenseType"
                },
                "Platform": {
                  "locationName": "platform"
                },
                "Progress": {
                  "locationName": "progress"
                },
                "SnapshotDetails": {
                  "shape": "Sfy",
                  "locationName": "snapshotDetailSet"
                },
                "Status": {
                  "locationName": "status"
                },
                "StatusMessage": {
                  "locationName": "statusMessage"
                }
              }
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeImportSnapshotTasks": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "Sby"
          },
          "ImportTaskIds": {
            "shape": "Sfu",
            "locationName": "ImportTaskId"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ImportSnapshotTasks": {
            "locationName": "importSnapshotTaskSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "Description": {
                  "locationName": "description"
                },
                "ImportTaskId": {
                  "locationName": "importTaskId"
                },
                "SnapshotTaskDetail": {
                  "shape": "Sg5",
                  "locationName": "snapshotTaskDetail"
                }
              }
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeInstanceAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "Attribute",
          "InstanceId"
        ],
        "members": {
          "Attribute": {
            "locationName": "attribute"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "InstanceId": {
            "locationName": "instanceId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Groups": {
            "shape": "S7m",
            "locationName": "groupSet"
          },
          "BlockDeviceMappings": {
            "shape": "Sg9",
            "locationName": "blockDeviceMapping"
          },
          "DisableApiTermination": {
            "shape": "Sgc",
            "locationName": "disableApiTermination"
          },
          "EnaSupport": {
            "shape": "Sgc",
            "locationName": "enaSupport"
          },
          "EbsOptimized": {
            "shape": "Sgc",
            "locationName": "ebsOptimized"
          },
          "InstanceId": {
            "locationName": "instanceId"
          },
          "InstanceInitiatedShutdownBehavior": {
            "shape": "S4i",
            "locationName": "instanceInitiatedShutdownBehavior"
          },
          "InstanceType": {
            "shape": "S4i",
            "locationName": "instanceType"
          },
          "KernelId": {
            "shape": "S4i",
            "locationName": "kernel"
          },
          "ProductCodes": {
            "shape": "Sdy",
            "locationName": "productCodes"
          },
          "RamdiskId": {
            "shape": "S4i",
            "locationName": "ramdisk"
          },
          "RootDeviceName": {
            "shape": "S4i",
            "locationName": "rootDeviceName"
          },
          "SourceDestCheck": {
            "shape": "Sgc",
            "locationName": "sourceDestCheck"
          },
          "SriovNetSupport": {
            "shape": "S4i",
            "locationName": "sriovNetSupport"
          },
          "UserData": {
            "shape": "S4i",
            "locationName": "userData"
          }
        }
      }
    },
    "DescribeInstanceCreditSpecifications": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "InstanceIds": {
            "shape": "Sci",
            "locationName": "InstanceId"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstanceCreditSpecifications": {
            "locationName": "instanceCreditSpecificationSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "InstanceId": {
                  "locationName": "instanceId"
                },
                "CpuCredits": {
                  "locationName": "cpuCredits"
                }
              }
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeInstanceStatus": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "InstanceIds": {
            "shape": "Sci",
            "locationName": "InstanceId"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "IncludeAllInstances": {
            "locationName": "includeAllInstances",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstanceStatuses": {
            "locationName": "instanceStatusSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "AvailabilityZone": {
                  "locationName": "availabilityZone"
                },
                "Events": {
                  "locationName": "eventsSet",
                  "type": "list",
                  "member": {
                    "locationName": "item",
                    "type": "structure",
                    "members": {
                      "Code": {
                        "locationName": "code"
                      },
                      "Description": {
                        "locationName": "description"
                      },
                      "NotAfter": {
                        "locationName": "notAfter",
                        "type": "timestamp"
                      },
                      "NotBefore": {
                        "locationName": "notBefore",
                        "type": "timestamp"
                      }
                    }
                  }
                },
                "InstanceId": {
                  "locationName": "instanceId"
                },
                "InstanceState": {
                  "shape": "Sgo",
                  "locationName": "instanceState"
                },
                "InstanceStatus": {
                  "shape": "Sgq",
                  "locationName": "instanceStatus"
                },
                "SystemStatus": {
                  "shape": "Sgq",
                  "locationName": "systemStatus"
                }
              }
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeInstances": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "InstanceIds": {
            "shape": "Sci",
            "locationName": "InstanceId"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "MaxResults": {
            "locationName": "maxResults",
            "type": "integer"
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Reservations": {
            "locationName": "reservationSet",
            "type": "list",
            "member": {
              "shape": "Sgz",
              "locationName": "item"
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeInternetGateways": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "InternetGatewayIds": {
            "shape": "Sa",
            "locationName": "internetGatewayId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InternetGateways": {
            "locationName": "internetGatewaySet",
            "type": "list",
            "member": {
              "shape": "S5e",
              "locationName": "item"
            }
          }
        }
      }
    },
    "DescribeKeyPairs": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "KeyNames": {
            "locationName": "KeyName",
            "type": "list",
            "member": {
              "locationName": "KeyName"
            }
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "KeyPairs": {
            "locationName": "keySet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "KeyFingerprint": {
                  "locationName": "keyFingerprint"
                },
                "KeyName": {
                  "locationName": "keyName"
                }
              }
            }
          }
        }
      }
    },
    "DescribeLaunchTemplateVersions": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "LaunchTemplateId": {},
          "LaunchTemplateName": {},
          "Versions": {
            "shape": "Sao",
            "locationName": "LaunchTemplateVersion"
          },
          "MinVersion": {},
          "MaxVersion": {},
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "LaunchTemplateVersions": {
            "locationName": "launchTemplateVersionSet",
            "type": "list",
            "member": {
              "shape": "S6g",
              "locationName": "item"
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeLaunchTemplates": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "LaunchTemplateIds": {
            "shape": "Sa",
            "locationName": "LaunchTemplateId"
          },
          "LaunchTemplateNames": {
            "locationName": "LaunchTemplateName",
            "type": "list",
            "member": {
              "locationName": "item"
            }
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "LaunchTemplates": {
            "locationName": "launchTemplates",
            "type": "list",
            "member": {
              "shape": "S6d",
              "locationName": "item"
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeMovingAddresses": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "filter"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "MaxResults": {
            "locationName": "maxResults",
            "type": "integer"
          },
          "NextToken": {
            "locationName": "nextToken"
          },
          "PublicIps": {
            "shape": "Sa",
            "locationName": "publicIp"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "MovingAddressStatuses": {
            "locationName": "movingAddressStatusSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "MoveStatus": {
                  "locationName": "moveStatus"
                },
                "PublicIp": {
                  "locationName": "publicIp"
                }
              }
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeNatGateways": {
      "input": {
        "type": "structure",
        "members": {
          "Filter": {
            "shape": "Sby"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NatGatewayIds": {
            "shape": "Sa",
            "locationName": "NatGatewayId"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NatGateways": {
            "locationName": "natGatewaySet",
            "type": "list",
            "member": {
              "shape": "S71",
              "locationName": "item"
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeNetworkAcls": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "NetworkAclIds": {
            "shape": "Sa",
            "locationName": "NetworkAclId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NetworkAcls": {
            "locationName": "networkAclSet",
            "type": "list",
            "member": {
              "shape": "S78",
              "locationName": "item"
            }
          }
        }
      }
    },
    "DescribeNetworkInterfaceAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "NetworkInterfaceId"
        ],
        "members": {
          "Attribute": {
            "locationName": "attribute"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "NetworkInterfaceId": {
            "locationName": "networkInterfaceId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Attachment": {
            "shape": "S7l",
            "locationName": "attachment"
          },
          "Description": {
            "shape": "S4i",
            "locationName": "description"
          },
          "Groups": {
            "shape": "S7m",
            "locationName": "groupSet"
          },
          "NetworkInterfaceId": {
            "locationName": "networkInterfaceId"
          },
          "SourceDestCheck": {
            "shape": "Sgc",
            "locationName": "sourceDestCheck"
          }
        }
      }
    },
    "DescribeNetworkInterfacePermissions": {
      "input": {
        "type": "structure",
        "members": {
          "NetworkInterfacePermissionIds": {
            "locationName": "NetworkInterfacePermissionId",
            "type": "list",
            "member": {}
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NetworkInterfacePermissions": {
            "locationName": "networkInterfacePermissions",
            "type": "list",
            "member": {
              "shape": "S7x",
              "locationName": "item"
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeNetworkInterfaces": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "filter"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "NetworkInterfaceIds": {
            "locationName": "NetworkInterfaceId",
            "type": "list",
            "member": {
              "locationName": "item"
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NetworkInterfaces": {
            "locationName": "networkInterfaceSet",
            "type": "list",
            "member": {
              "shape": "S7j",
              "locationName": "item"
            }
          }
        }
      }
    },
    "DescribePlacementGroups": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "GroupNames": {
            "locationName": "groupName",
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "PlacementGroups": {
            "locationName": "placementGroupSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "GroupName": {
                  "locationName": "groupName"
                },
                "State": {
                  "locationName": "state"
                },
                "Strategy": {
                  "locationName": "strategy"
                }
              }
            }
          }
        }
      }
    },
    "DescribePrefixLists": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "PrefixListIds": {
            "shape": "Sa",
            "locationName": "PrefixListId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {
            "locationName": "nextToken"
          },
          "PrefixLists": {
            "locationName": "prefixListSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "Cidrs": {
                  "shape": "Sa",
                  "locationName": "cidrSet"
                },
                "PrefixListId": {
                  "locationName": "prefixListId"
                },
                "PrefixListName": {
                  "locationName": "prefixListName"
                }
              }
            }
          }
        }
      }
    },
    "DescribeRegions": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "RegionNames": {
            "locationName": "RegionName",
            "type": "list",
            "member": {
              "locationName": "RegionName"
            }
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Regions": {
            "locationName": "regionInfo",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "Endpoint": {
                  "locationName": "regionEndpoint"
                },
                "RegionName": {
                  "locationName": "regionName"
                }
              }
            }
          }
        }
      }
    },
    "DescribeReservedInstances": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "OfferingClass": {},
          "ReservedInstancesIds": {
            "shape": "Siw",
            "locationName": "ReservedInstancesId"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "OfferingType": {
            "locationName": "offeringType"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ReservedInstances": {
            "locationName": "reservedInstancesSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "AvailabilityZone": {
                  "locationName": "availabilityZone"
                },
                "Duration": {
                  "locationName": "duration",
                  "type": "long"
                },
                "End": {
                  "locationName": "end",
                  "type": "timestamp"
                },
                "FixedPrice": {
                  "locationName": "fixedPrice",
                  "type": "float"
                },
                "InstanceCount": {
                  "locationName": "instanceCount",
                  "type": "integer"
                },
                "InstanceType": {
                  "locationName": "instanceType"
                },
                "ProductDescription": {
                  "locationName": "productDescription"
                },
                "ReservedInstancesId": {
                  "locationName": "reservedInstancesId"
                },
                "Start": {
                  "locationName": "start",
                  "type": "timestamp"
                },
                "State": {
                  "locationName": "state"
                },
                "UsagePrice": {
                  "locationName": "usagePrice",
                  "type": "float"
                },
                "CurrencyCode": {
                  "locationName": "currencyCode"
                },
                "InstanceTenancy": {
                  "locationName": "instanceTenancy"
                },
                "OfferingClass": {
                  "locationName": "offeringClass"
                },
                "OfferingType": {
                  "locationName": "offeringType"
                },
                "RecurringCharges": {
                  "shape": "Sj4",
                  "locationName": "recurringCharges"
                },
                "Scope": {
                  "locationName": "scope"
                },
                "Tags": {
                  "shape": "Sr",
                  "locationName": "tagSet"
                }
              }
            }
          }
        }
      }
    },
    "DescribeReservedInstancesListings": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "ReservedInstancesId": {
            "locationName": "reservedInstancesId"
          },
          "ReservedInstancesListingId": {
            "locationName": "reservedInstancesListingId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ReservedInstancesListings": {
            "shape": "S2w",
            "locationName": "reservedInstancesListingsSet"
          }
        }
      }
    },
    "DescribeReservedInstancesModifications": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "ReservedInstancesModificationIds": {
            "locationName": "ReservedInstancesModificationId",
            "type": "list",
            "member": {
              "locationName": "ReservedInstancesModificationId"
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {
            "locationName": "nextToken"
          },
          "ReservedInstancesModifications": {
            "locationName": "reservedInstancesModificationsSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "ClientToken": {
                  "locationName": "clientToken"
                },
                "CreateDate": {
                  "locationName": "createDate",
                  "type": "timestamp"
                },
                "EffectiveDate": {
                  "locationName": "effectiveDate",
                  "type": "timestamp"
                },
                "ModificationResults": {
                  "locationName": "modificationResultSet",
                  "type": "list",
                  "member": {
                    "locationName": "item",
                    "type": "structure",
                    "members": {
                      "ReservedInstancesId": {
                        "locationName": "reservedInstancesId"
                      },
                      "TargetConfiguration": {
                        "shape": "Sjh",
                        "locationName": "targetConfiguration"
                      }
                    }
                  }
                },
                "ReservedInstancesIds": {
                  "locationName": "reservedInstancesSet",
                  "type": "list",
                  "member": {
                    "locationName": "item",
                    "type": "structure",
                    "members": {
                      "ReservedInstancesId": {
                        "locationName": "reservedInstancesId"
                      }
                    }
                  }
                },
                "ReservedInstancesModificationId": {
                  "locationName": "reservedInstancesModificationId"
                },
                "Status": {
                  "locationName": "status"
                },
                "StatusMessage": {
                  "locationName": "statusMessage"
                },
                "UpdateDate": {
                  "locationName": "updateDate",
                  "type": "timestamp"
                }
              }
            }
          }
        }
      }
    },
    "DescribeReservedInstancesOfferings": {
      "input": {
        "type": "structure",
        "members": {
          "AvailabilityZone": {},
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "IncludeMarketplace": {
            "type": "boolean"
          },
          "InstanceType": {},
          "MaxDuration": {
            "type": "long"
          },
          "MaxInstanceCount": {
            "type": "integer"
          },
          "MinDuration": {
            "type": "long"
          },
          "OfferingClass": {},
          "ProductDescription": {},
          "ReservedInstancesOfferingIds": {
            "locationName": "ReservedInstancesOfferingId",
            "type": "list",
            "member": {}
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "InstanceTenancy": {
            "locationName": "instanceTenancy"
          },
          "MaxResults": {
            "locationName": "maxResults",
            "type": "integer"
          },
          "NextToken": {
            "locationName": "nextToken"
          },
          "OfferingType": {
            "locationName": "offeringType"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ReservedInstancesOfferings": {
            "locationName": "reservedInstancesOfferingsSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "AvailabilityZone": {
                  "locationName": "availabilityZone"
                },
                "Duration": {
                  "locationName": "duration",
                  "type": "long"
                },
                "FixedPrice": {
                  "locationName": "fixedPrice",
                  "type": "float"
                },
                "InstanceType": {
                  "locationName": "instanceType"
                },
                "ProductDescription": {
                  "locationName": "productDescription"
                },
                "ReservedInstancesOfferingId": {
                  "locationName": "reservedInstancesOfferingId"
                },
                "UsagePrice": {
                  "locationName": "usagePrice",
                  "type": "float"
                },
                "CurrencyCode": {
                  "locationName": "currencyCode"
                },
                "InstanceTenancy": {
                  "locationName": "instanceTenancy"
                },
                "Marketplace": {
                  "locationName": "marketplace",
                  "type": "boolean"
                },
                "OfferingClass": {
                  "locationName": "offeringClass"
                },
                "OfferingType": {
                  "locationName": "offeringType"
                },
                "PricingDetails": {
                  "locationName": "pricingDetailsSet",
                  "type": "list",
                  "member": {
                    "locationName": "item",
                    "type": "structure",
                    "members": {
                      "Count": {
                        "locationName": "count",
                        "type": "integer"
                      },
                      "Price": {
                        "locationName": "price",
                        "type": "double"
                      }
                    }
                  }
                },
                "RecurringCharges": {
                  "shape": "Sj4",
                  "locationName": "recurringCharges"
                },
                "Scope": {
                  "locationName": "scope"
                }
              }
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeRouteTables": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "RouteTableIds": {
            "shape": "Sa",
            "locationName": "RouteTableId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RouteTables": {
            "locationName": "routeTableSet",
            "type": "list",
            "member": {
              "shape": "S8a",
              "locationName": "item"
            }
          }
        }
      }
    },
    "DescribeScheduledInstanceAvailability": {
      "input": {
        "type": "structure",
        "required": [
          "FirstSlotStartTimeRange",
          "Recurrence"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "FirstSlotStartTimeRange": {
            "type": "structure",
            "required": [
              "EarliestTime",
              "LatestTime"
            ],
            "members": {
              "EarliestTime": {
                "type": "timestamp"
              },
              "LatestTime": {
                "type": "timestamp"
              }
            }
          },
          "MaxResults": {
            "type": "integer"
          },
          "MaxSlotDurationInHours": {
            "type": "integer"
          },
          "MinSlotDurationInHours": {
            "type": "integer"
          },
          "NextToken": {},
          "Recurrence": {
            "type": "structure",
            "members": {
              "Frequency": {},
              "Interval": {
                "type": "integer"
              },
              "OccurrenceDays": {
                "locationName": "OccurrenceDay",
                "type": "list",
                "member": {
                  "locationName": "OccurenceDay",
                  "type": "integer"
                }
              },
              "OccurrenceRelativeToEnd": {
                "type": "boolean"
              },
              "OccurrenceUnit": {}
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {
            "locationName": "nextToken"
          },
          "ScheduledInstanceAvailabilitySet": {
            "locationName": "scheduledInstanceAvailabilitySet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "AvailabilityZone": {
                  "locationName": "availabilityZone"
                },
                "AvailableInstanceCount": {
                  "locationName": "availableInstanceCount",
                  "type": "integer"
                },
                "FirstSlotStartTime": {
                  "locationName": "firstSlotStartTime",
                  "type": "timestamp"
                },
                "HourlyPrice": {
                  "locationName": "hourlyPrice"
                },
                "InstanceType": {
                  "locationName": "instanceType"
                },
                "MaxTermDurationInDays": {
                  "locationName": "maxTermDurationInDays",
                  "type": "integer"
                },
                "MinTermDurationInDays": {
                  "locationName": "minTermDurationInDays",
                  "type": "integer"
                },
                "NetworkPlatform": {
                  "locationName": "networkPlatform"
                },
                "Platform": {
                  "locationName": "platform"
                },
                "PurchaseToken": {
                  "locationName": "purchaseToken"
                },
                "Recurrence": {
                  "shape": "Sk1",
                  "locationName": "recurrence"
                },
                "SlotDurationInHours": {
                  "locationName": "slotDurationInHours",
                  "type": "integer"
                },
                "TotalScheduledInstanceHours": {
                  "locationName": "totalScheduledInstanceHours",
                  "type": "integer"
                }
              }
            }
          }
        }
      }
    },
    "DescribeScheduledInstances": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "ScheduledInstanceIds": {
            "locationName": "ScheduledInstanceId",
            "type": "list",
            "member": {
              "locationName": "ScheduledInstanceId"
            }
          },
          "SlotStartTimeRange": {
            "type": "structure",
            "members": {
              "EarliestTime": {
                "type": "timestamp"
              },
              "LatestTime": {
                "type": "timestamp"
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {
            "locationName": "nextToken"
          },
          "ScheduledInstanceSet": {
            "locationName": "scheduledInstanceSet",
            "type": "list",
            "member": {
              "shape": "Sk8",
              "locationName": "item"
            }
          }
        }
      }
    },
    "DescribeSecurityGroupReferences": {
      "input": {
        "type": "structure",
        "required": [
          "GroupId"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "GroupId": {
            "type": "list",
            "member": {
              "locationName": "item"
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SecurityGroupReferenceSet": {
            "locationName": "securityGroupReferenceSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "required": [
                "GroupId",
                "ReferencingVpcId"
              ],
              "members": {
                "GroupId": {
                  "locationName": "groupId"
                },
                "ReferencingVpcId": {
                  "locationName": "referencingVpcId"
                },
                "VpcPeeringConnectionId": {
                  "locationName": "vpcPeeringConnectionId"
                }
              }
            }
          }
        }
      }
    },
    "DescribeSecurityGroups": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "GroupIds": {
            "shape": "S1s",
            "locationName": "GroupId"
          },
          "GroupNames": {
            "shape": "Skf",
            "locationName": "GroupName"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SecurityGroups": {
            "locationName": "securityGroupInfo",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "Description": {
                  "locationName": "groupDescription"
                },
                "GroupName": {
                  "locationName": "groupName"
                },
                "IpPermissions": {
                  "shape": "S25",
                  "locationName": "ipPermissions"
                },
                "OwnerId": {
                  "locationName": "ownerId"
                },
                "GroupId": {
                  "locationName": "groupId"
                },
                "IpPermissionsEgress": {
                  "shape": "S25",
                  "locationName": "ipPermissionsEgress"
                },
                "Tags": {
                  "shape": "Sr",
                  "locationName": "tagSet"
                },
                "VpcId": {
                  "locationName": "vpcId"
                }
              }
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeSnapshotAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "Attribute",
          "SnapshotId"
        ],
        "members": {
          "Attribute": {},
          "SnapshotId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CreateVolumePermissions": {
            "shape": "Skm",
            "locationName": "createVolumePermission"
          },
          "ProductCodes": {
            "shape": "Sdy",
            "locationName": "productCodes"
          },
          "SnapshotId": {
            "locationName": "snapshotId"
          }
        }
      }
    },
    "DescribeSnapshots": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "OwnerIds": {
            "shape": "Se3",
            "locationName": "Owner"
          },
          "RestorableByUserIds": {
            "locationName": "RestorableBy",
            "type": "list",
            "member": {}
          },
          "SnapshotIds": {
            "locationName": "SnapshotId",
            "type": "list",
            "member": {
              "locationName": "SnapshotId"
            }
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Snapshots": {
            "locationName": "snapshotSet",
            "type": "list",
            "member": {
              "shape": "S8m",
              "locationName": "item"
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeSpotDatafeedSubscription": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SpotDatafeedSubscription": {
            "shape": "S8q",
            "locationName": "spotDatafeedSubscription"
          }
        }
      }
    },
    "DescribeSpotFleetInstances": {
      "input": {
        "type": "structure",
        "required": [
          "SpotFleetRequestId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "MaxResults": {
            "locationName": "maxResults",
            "type": "integer"
          },
          "NextToken": {
            "locationName": "nextToken"
          },
          "SpotFleetRequestId": {
            "locationName": "spotFleetRequestId"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "ActiveInstances",
          "SpotFleetRequestId"
        ],
        "members": {
          "ActiveInstances": {
            "locationName": "activeInstanceSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "InstanceId": {
                  "locationName": "instanceId"
                },
                "InstanceType": {
                  "locationName": "instanceType"
                },
                "SpotInstanceRequestId": {
                  "locationName": "spotInstanceRequestId"
                },
                "InstanceHealth": {
                  "locationName": "instanceHealth"
                }
              }
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          },
          "SpotFleetRequestId": {
            "locationName": "spotFleetRequestId"
          }
        }
      }
    },
    "DescribeSpotFleetRequestHistory": {
      "input": {
        "type": "structure",
        "required": [
          "SpotFleetRequestId",
          "StartTime"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "EventType": {
            "locationName": "eventType"
          },
          "MaxResults": {
            "locationName": "maxResults",
            "type": "integer"
          },
          "NextToken": {
            "locationName": "nextToken"
          },
          "SpotFleetRequestId": {
            "locationName": "spotFleetRequestId"
          },
          "StartTime": {
            "locationName": "startTime",
            "type": "timestamp"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "HistoryRecords",
          "LastEvaluatedTime",
          "SpotFleetRequestId",
          "StartTime"
        ],
        "members": {
          "HistoryRecords": {
            "locationName": "historyRecordSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "required": [
                "EventInformation",
                "EventType",
                "Timestamp"
              ],
              "members": {
                "EventInformation": {
                  "locationName": "eventInformation",
                  "type": "structure",
                  "members": {
                    "EventDescription": {
                      "locationName": "eventDescription"
                    },
                    "EventSubType": {
                      "locationName": "eventSubType"
                    },
                    "InstanceId": {
                      "locationName": "instanceId"
                    }
                  }
                },
                "EventType": {
                  "locationName": "eventType"
                },
                "Timestamp": {
                  "locationName": "timestamp",
                  "type": "timestamp"
                }
              }
            }
          },
          "LastEvaluatedTime": {
            "locationName": "lastEvaluatedTime",
            "type": "timestamp"
          },
          "NextToken": {
            "locationName": "nextToken"
          },
          "SpotFleetRequestId": {
            "locationName": "spotFleetRequestId"
          },
          "StartTime": {
            "locationName": "startTime",
            "type": "timestamp"
          }
        }
      }
    },
    "DescribeSpotFleetRequests": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "MaxResults": {
            "locationName": "maxResults",
            "type": "integer"
          },
          "NextToken": {
            "locationName": "nextToken"
          },
          "SpotFleetRequestIds": {
            "shape": "Sa",
            "locationName": "spotFleetRequestId"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "SpotFleetRequestConfigs"
        ],
        "members": {
          "NextToken": {
            "locationName": "nextToken"
          },
          "SpotFleetRequestConfigs": {
            "locationName": "spotFleetRequestConfigSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "required": [
                "CreateTime",
                "SpotFleetRequestConfig",
                "SpotFleetRequestId",
                "SpotFleetRequestState"
              ],
              "members": {
                "ActivityStatus": {
                  "locationName": "activityStatus"
                },
                "CreateTime": {
                  "locationName": "createTime",
                  "type": "timestamp"
                },
                "SpotFleetRequestConfig": {
                  "shape": "Slb",
                  "locationName": "spotFleetRequestConfig"
                },
                "SpotFleetRequestId": {
                  "locationName": "spotFleetRequestId"
                },
                "SpotFleetRequestState": {
                  "locationName": "spotFleetRequestState"
                }
              }
            }
          }
        }
      }
    },
    "DescribeSpotInstanceRequests": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "SpotInstanceRequestIds": {
            "shape": "S3h",
            "locationName": "SpotInstanceRequestId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SpotInstanceRequests": {
            "shape": "Sm1",
            "locationName": "spotInstanceRequestSet"
          }
        }
      }
    },
    "DescribeSpotPriceHistory": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "AvailabilityZone": {
            "locationName": "availabilityZone"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "EndTime": {
            "locationName": "endTime",
            "type": "timestamp"
          },
          "InstanceTypes": {
            "locationName": "InstanceType",
            "type": "list",
            "member": {}
          },
          "MaxResults": {
            "locationName": "maxResults",
            "type": "integer"
          },
          "NextToken": {
            "locationName": "nextToken"
          },
          "ProductDescriptions": {
            "locationName": "ProductDescription",
            "type": "list",
            "member": {}
          },
          "StartTime": {
            "locationName": "startTime",
            "type": "timestamp"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {
            "locationName": "nextToken"
          },
          "SpotPriceHistory": {
            "locationName": "spotPriceHistorySet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "AvailabilityZone": {
                  "locationName": "availabilityZone"
                },
                "InstanceType": {
                  "locationName": "instanceType"
                },
                "ProductDescription": {
                  "locationName": "productDescription"
                },
                "SpotPrice": {
                  "locationName": "spotPrice"
                },
                "Timestamp": {
                  "locationName": "timestamp",
                  "type": "timestamp"
                }
              }
            }
          }
        }
      }
    },
    "DescribeStaleSecurityGroups": {
      "input": {
        "type": "structure",
        "required": [
          "VpcId"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "VpcId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {
            "locationName": "nextToken"
          },
          "StaleSecurityGroupSet": {
            "locationName": "staleSecurityGroupSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "required": [
                "GroupId"
              ],
              "members": {
                "Description": {
                  "locationName": "description"
                },
                "GroupId": {
                  "locationName": "groupId"
                },
                "GroupName": {
                  "locationName": "groupName"
                },
                "StaleIpPermissions": {
                  "shape": "Smh",
                  "locationName": "staleIpPermissions"
                },
                "StaleIpPermissionsEgress": {
                  "shape": "Smh",
                  "locationName": "staleIpPermissionsEgress"
                },
                "VpcId": {
                  "locationName": "vpcId"
                }
              }
            }
          }
        }
      }
    },
    "DescribeSubnets": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "SubnetIds": {
            "locationName": "SubnetId",
            "type": "list",
            "member": {
              "locationName": "SubnetId"
            }
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Subnets": {
            "locationName": "subnetSet",
            "type": "list",
            "member": {
              "shape": "S40",
              "locationName": "item"
            }
          }
        }
      }
    },
    "DescribeTags": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "MaxResults": {
            "locationName": "maxResults",
            "type": "integer"
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {
            "locationName": "nextToken"
          },
          "Tags": {
            "locationName": "tagSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "Key": {
                  "locationName": "key"
                },
                "ResourceId": {
                  "locationName": "resourceId"
                },
                "ResourceType": {
                  "locationName": "resourceType"
                },
                "Value": {
                  "locationName": "value"
                }
              }
            }
          }
        }
      }
    },
    "DescribeVolumeAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeId"
        ],
        "members": {
          "Attribute": {},
          "VolumeId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AutoEnableIO": {
            "shape": "Sgc",
            "locationName": "autoEnableIO"
          },
          "ProductCodes": {
            "shape": "Sdy",
            "locationName": "productCodes"
          },
          "VolumeId": {
            "locationName": "volumeId"
          }
        }
      }
    },
    "DescribeVolumeStatus": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "VolumeIds": {
            "shape": "Smy",
            "locationName": "VolumeId"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {
            "locationName": "nextToken"
          },
          "VolumeStatuses": {
            "locationName": "volumeStatusSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "Actions": {
                  "locationName": "actionsSet",
                  "type": "list",
                  "member": {
                    "locationName": "item",
                    "type": "structure",
                    "members": {
                      "Code": {
                        "locationName": "code"
                      },
                      "Description": {
                        "locationName": "description"
                      },
                      "EventId": {
                        "locationName": "eventId"
                      },
                      "EventType": {
                        "locationName": "eventType"
                      }
                    }
                  }
                },
                "AvailabilityZone": {
                  "locationName": "availabilityZone"
                },
                "Events": {
                  "locationName": "eventsSet",
                  "type": "list",
                  "member": {
                    "locationName": "item",
                    "type": "structure",
                    "members": {
                      "Description": {
                        "locationName": "description"
                      },
                      "EventId": {
                        "locationName": "eventId"
                      },
                      "EventType": {
                        "locationName": "eventType"
                      },
                      "NotAfter": {
                        "locationName": "notAfter",
                        "type": "timestamp"
                      },
                      "NotBefore": {
                        "locationName": "notBefore",
                        "type": "timestamp"
                      }
                    }
                  }
                },
                "VolumeId": {
                  "locationName": "volumeId"
                },
                "VolumeStatus": {
                  "locationName": "volumeStatus",
                  "type": "structure",
                  "members": {
                    "Details": {
                      "locationName": "details",
                      "type": "list",
                      "member": {
                        "locationName": "item",
                        "type": "structure",
                        "members": {
                          "Name": {
                            "locationName": "name"
                          },
                          "Status": {
                            "locationName": "status"
                          }
                        }
                      }
                    },
                    "Status": {
                      "locationName": "status"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "DescribeVolumes": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "VolumeIds": {
            "shape": "Smy",
            "locationName": "VolumeId"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "MaxResults": {
            "locationName": "maxResults",
            "type": "integer"
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Volumes": {
            "locationName": "volumeSet",
            "type": "list",
            "member": {
              "shape": "S90",
              "locationName": "item"
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeVolumesModifications": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "VolumeIds": {
            "shape": "Smy",
            "locationName": "VolumeId"
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VolumesModifications": {
            "locationName": "volumeModificationSet",
            "type": "list",
            "member": {
              "shape": "Snh",
              "locationName": "item"
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeVpcAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "Attribute",
          "VpcId"
        ],
        "members": {
          "Attribute": {},
          "VpcId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VpcId": {
            "locationName": "vpcId"
          },
          "EnableDnsHostnames": {
            "shape": "Sgc",
            "locationName": "enableDnsHostnames"
          },
          "EnableDnsSupport": {
            "shape": "Sgc",
            "locationName": "enableDnsSupport"
          }
        }
      }
    },
    "DescribeVpcClassicLink": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "VpcIds": {
            "shape": "Snn",
            "locationName": "VpcId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Vpcs": {
            "locationName": "vpcSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "ClassicLinkEnabled": {
                  "locationName": "classicLinkEnabled",
                  "type": "boolean"
                },
                "Tags": {
                  "shape": "Sr",
                  "locationName": "tagSet"
                },
                "VpcId": {
                  "locationName": "vpcId"
                }
              }
            }
          }
        }
      }
    },
    "DescribeVpcClassicLinkDnsSupport": {
      "input": {
        "type": "structure",
        "members": {
          "MaxResults": {
            "locationName": "maxResults",
            "type": "integer"
          },
          "NextToken": {
            "locationName": "nextToken"
          },
          "VpcIds": {
            "shape": "Snn"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {
            "locationName": "nextToken"
          },
          "Vpcs": {
            "locationName": "vpcs",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "ClassicLinkDnsSupported": {
                  "locationName": "classicLinkDnsSupported",
                  "type": "boolean"
                },
                "VpcId": {
                  "locationName": "vpcId"
                }
              }
            }
          }
        }
      }
    },
    "DescribeVpcEndpointConnectionNotifications": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ConnectionNotificationId": {},
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ConnectionNotificationSet": {
            "locationName": "connectionNotificationSet",
            "type": "list",
            "member": {
              "shape": "S9g",
              "locationName": "item"
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeVpcEndpointConnections": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VpcEndpointConnections": {
            "locationName": "vpcEndpointConnectionSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "ServiceId": {
                  "locationName": "serviceId"
                },
                "VpcEndpointId": {
                  "locationName": "vpcEndpointId"
                },
                "VpcEndpointOwner": {
                  "locationName": "vpcEndpointOwner"
                },
                "VpcEndpointState": {
                  "locationName": "vpcEndpointState"
                },
                "CreationTimestamp": {
                  "locationName": "creationTimestamp",
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeVpcEndpointServiceConfigurations": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ServiceIds": {
            "shape": "Sa",
            "locationName": "ServiceId"
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ServiceConfigurations": {
            "locationName": "serviceConfigurationSet",
            "type": "list",
            "member": {
              "shape": "S9l",
              "locationName": "item"
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeVpcEndpointServicePermissions": {
      "input": {
        "type": "structure",
        "required": [
          "ServiceId"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ServiceId": {},
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AllowedPrincipals": {
            "locationName": "allowedPrincipals",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "PrincipalType": {
                  "locationName": "principalType"
                },
                "Principal": {
                  "locationName": "principal"
                }
              }
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeVpcEndpointServices": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ServiceNames": {
            "shape": "Sa",
            "locationName": "ServiceName"
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ServiceNames": {
            "shape": "Sa",
            "locationName": "serviceNameSet"
          },
          "ServiceDetails": {
            "locationName": "serviceDetailSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "ServiceName": {
                  "locationName": "serviceName"
                },
                "ServiceType": {
                  "shape": "S9m",
                  "locationName": "serviceType"
                },
                "AvailabilityZones": {
                  "shape": "Sa",
                  "locationName": "availabilityZoneSet"
                },
                "Owner": {
                  "locationName": "owner"
                },
                "BaseEndpointDnsNames": {
                  "shape": "Sa",
                  "locationName": "baseEndpointDnsNameSet"
                },
                "PrivateDnsName": {
                  "locationName": "privateDnsName"
                },
                "VpcEndpointPolicySupported": {
                  "locationName": "vpcEndpointPolicySupported",
                  "type": "boolean"
                },
                "AcceptanceRequired": {
                  "locationName": "acceptanceRequired",
                  "type": "boolean"
                }
              }
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeVpcEndpoints": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "VpcEndpointIds": {
            "shape": "Sa",
            "locationName": "VpcEndpointId"
          },
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VpcEndpoints": {
            "locationName": "vpcEndpointSet",
            "type": "list",
            "member": {
              "shape": "S98",
              "locationName": "item"
            }
          },
          "NextToken": {
            "locationName": "nextToken"
          }
        }
      }
    },
    "DescribeVpcPeeringConnections": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "VpcPeeringConnectionIds": {
            "shape": "Sa",
            "locationName": "VpcPeeringConnectionId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VpcPeeringConnections": {
            "locationName": "vpcPeeringConnectionSet",
            "type": "list",
            "member": {
              "shape": "Sh",
              "locationName": "item"
            }
          }
        }
      }
    },
    "DescribeVpcs": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "VpcIds": {
            "locationName": "VpcId",
            "type": "list",
            "member": {
              "locationName": "VpcId"
            }
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Vpcs": {
            "locationName": "vpcSet",
            "type": "list",
            "member": {
              "shape": "S45",
              "locationName": "item"
            }
          }
        }
      }
    },
    "DescribeVpnConnections": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "VpnConnectionIds": {
            "locationName": "VpnConnectionId",
            "type": "list",
            "member": {
              "locationName": "VpnConnectionId"
            }
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VpnConnections": {
            "locationName": "vpnConnectionSet",
            "type": "list",
            "member": {
              "shape": "S9x",
              "locationName": "item"
            }
          }
        }
      }
    },
    "DescribeVpnGateways": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sby",
            "locationName": "Filter"
          },
          "VpnGatewayIds": {
            "locationName": "VpnGatewayId",
            "type": "list",
            "member": {
              "locationName": "VpnGatewayId"
            }
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VpnGateways": {
            "locationName": "vpnGatewaySet",
            "type": "list",
            "member": {
              "shape": "Sa9",
              "locationName": "item"
            }
          }
        }
      }
    },
    "DetachClassicLinkVpc": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId",
          "VpcId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "InstanceId": {
            "locationName": "instanceId"
          },
          "VpcId": {
            "locationName": "vpcId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "DetachInternetGateway": {
      "input": {
        "type": "structure",
        "required": [
          "InternetGatewayId",
          "VpcId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "InternetGatewayId": {
            "locationName": "internetGatewayId"
          },
          "VpcId": {
            "locationName": "vpcId"
          }
        }
      }
    },
    "DetachNetworkInterface": {
      "input": {
        "type": "structure",
        "required": [
          "AttachmentId"
        ],
        "members": {
          "AttachmentId": {
            "locationName": "attachmentId"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "Force": {
            "locationName": "force",
            "type": "boolean"
          }
        }
      }
    },
    "DetachVolume": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeId"
        ],
        "members": {
          "Device": {},
          "Force": {
            "type": "boolean"
          },
          "InstanceId": {},
          "VolumeId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "shape": "S1y"
      }
    },
    "DetachVpnGateway": {
      "input": {
        "type": "structure",
        "required": [
          "VpcId",
          "VpnGatewayId"
        ],
        "members": {
          "VpcId": {},
          "VpnGatewayId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "DisableVgwRoutePropagation": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayId",
          "RouteTableId"
        ],
        "members": {
          "GatewayId": {},
          "RouteTableId": {}
        }
      }
    },
    "DisableVpcClassicLink": {
      "input": {
        "type": "structure",
        "required": [
          "VpcId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "VpcId": {
            "locationName": "vpcId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "DisableVpcClassicLinkDnsSupport": {
      "input": {
        "type": "structure",
        "members": {
          "VpcId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "DisassociateAddress": {
      "input": {
        "type": "structure",
        "members": {
          "AssociationId": {},
          "PublicIp": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "DisassociateIamInstanceProfile": {
      "input": {
        "type": "structure",
        "required": [
          "AssociationId"
        ],
        "members": {
          "AssociationId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IamInstanceProfileAssociation": {
            "shape": "S1b",
            "locationName": "iamInstanceProfileAssociation"
          }
        }
      }
    },
    "DisassociateRouteTable": {
      "input": {
        "type": "structure",
        "required": [
          "AssociationId"
        ],
        "members": {
          "AssociationId": {
            "locationName": "associationId"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "DisassociateSubnetCidrBlock": {
      "input": {
        "type": "structure",
        "required": [
          "AssociationId"
        ],
        "members": {
          "AssociationId": {
            "locationName": "associationId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Ipv6CidrBlockAssociation": {
            "shape": "S1i",
            "locationName": "ipv6CidrBlockAssociation"
          },
          "SubnetId": {
            "locationName": "subnetId"
          }
        }
      }
    },
    "DisassociateVpcCidrBlock": {
      "input": {
        "type": "structure",
        "required": [
          "AssociationId"
        ],
        "members": {
          "AssociationId": {
            "locationName": "associationId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Ipv6CidrBlockAssociation": {
            "shape": "S1n",
            "locationName": "ipv6CidrBlockAssociation"
          },
          "CidrBlockAssociation": {
            "shape": "S1q",
            "locationName": "cidrBlockAssociation"
          },
          "VpcId": {
            "locationName": "vpcId"
          }
        }
      }
    },
    "EnableVgwRoutePropagation": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayId",
          "RouteTableId"
        ],
        "members": {
          "GatewayId": {},
          "RouteTableId": {}
        }
      }
    },
    "EnableVolumeIO": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "VolumeId": {
            "locationName": "volumeId"
          }
        }
      }
    },
    "EnableVpcClassicLink": {
      "input": {
        "type": "structure",
        "required": [
          "VpcId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "VpcId": {
            "locationName": "vpcId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "EnableVpcClassicLinkDnsSupport": {
      "input": {
        "type": "structure",
        "members": {
          "VpcId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "GetConsoleOutput": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "InstanceId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstanceId": {
            "locationName": "instanceId"
          },
          "Output": {
            "locationName": "output"
          },
          "Timestamp": {
            "locationName": "timestamp",
            "type": "timestamp"
          }
        }
      }
    },
    "GetConsoleScreenshot": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "InstanceId": {},
          "WakeUp": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ImageData": {
            "locationName": "imageData"
          },
          "InstanceId": {
            "locationName": "instanceId"
          }
        }
      }
    },
    "GetHostReservationPurchasePreview": {
      "input": {
        "type": "structure",
        "required": [
          "HostIdSet",
          "OfferingId"
        ],
        "members": {
          "HostIdSet": {
            "shape": "Spq"
          },
          "OfferingId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CurrencyCode": {
            "locationName": "currencyCode"
          },
          "Purchase": {
            "shape": "Sps",
            "locationName": "purchase"
          },
          "TotalHourlyPrice": {
            "locationName": "totalHourlyPrice"
          },
          "TotalUpfrontPrice": {
            "locationName": "totalUpfrontPrice"
          }
        }
      }
    },
    "GetLaunchTemplateData": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "InstanceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "LaunchTemplateData": {
            "shape": "S6h",
            "locationName": "launchTemplateData"
          }
        }
      }
    },
    "GetPasswordData": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "InstanceId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstanceId": {
            "locationName": "instanceId"
          },
          "PasswordData": {
            "locationName": "passwordData"
          },
          "Timestamp": {
            "locationName": "timestamp",
            "type": "timestamp"
          }
        }
      }
    },
    "GetReservedInstancesExchangeQuote": {
      "input": {
        "type": "structure",
        "required": [
          "ReservedInstanceIds"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ReservedInstanceIds": {
            "shape": "S3",
            "locationName": "ReservedInstanceId"
          },
          "TargetConfigurations": {
            "shape": "S5",
            "locationName": "TargetConfiguration"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CurrencyCode": {
            "locationName": "currencyCode"
          },
          "IsValidExchange": {
            "locationName": "isValidExchange",
            "type": "boolean"
          },
          "OutputReservedInstancesWillExpireAt": {
            "locationName": "outputReservedInstancesWillExpireAt",
            "type": "timestamp"
          },
          "PaymentDue": {
            "locationName": "paymentDue"
          },
          "ReservedInstanceValueRollup": {
            "shape": "Sq0",
            "locationName": "reservedInstanceValueRollup"
          },
          "ReservedInstanceValueSet": {
            "locationName": "reservedInstanceValueSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "ReservationValue": {
                  "shape": "Sq0",
                  "locationName": "reservationValue"
                },
                "ReservedInstanceId": {
                  "locationName": "reservedInstanceId"
                }
              }
            }
          },
          "TargetConfigurationValueRollup": {
            "shape": "Sq0",
            "locationName": "targetConfigurationValueRollup"
          },
          "TargetConfigurationValueSet": {
            "locationName": "targetConfigurationValueSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "ReservationValue": {
                  "shape": "Sq0",
                  "locationName": "reservationValue"
                },
                "TargetConfiguration": {
                  "locationName": "targetConfiguration",
                  "type": "structure",
                  "members": {
                    "InstanceCount": {
                      "locationName": "instanceCount",
                      "type": "integer"
                    },
                    "OfferingId": {
                      "locationName": "offeringId"
                    }
                  }
                }
              }
            }
          },
          "ValidationFailureReason": {
            "locationName": "validationFailureReason"
          }
        }
      }
    },
    "ImportImage": {
      "input": {
        "type": "structure",
        "members": {
          "Architecture": {},
          "ClientData": {
            "shape": "Sq7"
          },
          "ClientToken": {},
          "Description": {},
          "DiskContainers": {
            "locationName": "DiskContainer",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "Description": {},
                "DeviceName": {},
                "Format": {},
                "SnapshotId": {},
                "Url": {},
                "UserBucket": {
                  "shape": "Sqa"
                }
              }
            }
          },
          "DryRun": {
            "type": "boolean"
          },
          "Hypervisor": {},
          "LicenseType": {},
          "Platform": {},
          "RoleName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Architecture": {
            "locationName": "architecture"
          },
          "Description": {
            "locationName": "description"
          },
          "Hypervisor": {
            "locationName": "hypervisor"
          },
          "ImageId": {
            "locationName": "imageId"
          },
          "ImportTaskId": {
            "locationName": "importTaskId"
          },
          "LicenseType": {
            "locationName": "licenseType"
          },
          "Platform": {
            "locationName": "platform"
          },
          "Progress": {
            "locationName": "progress"
          },
          "SnapshotDetails": {
            "shape": "Sfy",
            "locationName": "snapshotDetailSet"
          },
          "Status": {
            "locationName": "status"
          },
          "StatusMessage": {
            "locationName": "statusMessage"
          }
        }
      }
    },
    "ImportInstance": {
      "input": {
        "type": "structure",
        "required": [
          "Platform"
        ],
        "members": {
          "Description": {
            "locationName": "description"
          },
          "DiskImages": {
            "locationName": "diskImage",
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Description": {},
                "Image": {
                  "shape": "Sqf"
                },
                "Volume": {
                  "shape": "Sqg"
                }
              }
            }
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "LaunchSpecification": {
            "locationName": "launchSpecification",
            "type": "structure",
            "members": {
              "AdditionalInfo": {
                "locationName": "additionalInfo"
              },
              "Architecture": {
                "locationName": "architecture"
              },
              "GroupIds": {
                "shape": "S5r",
                "locationName": "GroupId"
              },
              "GroupNames": {
                "shape": "S65",
                "locationName": "GroupName"
              },
              "InstanceInitiatedShutdownBehavior": {
                "locationName": "instanceInitiatedShutdownBehavior"
              },
              "InstanceType": {
                "locationName": "instanceType"
              },
              "Monitoring": {
                "locationName": "monitoring",
                "type": "boolean"
              },
              "Placement": {
                "shape": "Sh4",
                "locationName": "placement"
              },
              "PrivateIpAddress": {
                "locationName": "privateIpAddress"
              },
              "SubnetId": {
                "locationName": "subnetId"
              },
              "UserData": {
                "locationName": "userData",
                "type": "structure",
                "members": {
                  "Data": {
                    "locationName": "data"
                  }
                }
              }
            }
          },
          "Platform": {
            "locationName": "platform"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ConversionTask": {
            "shape": "Scq",
            "locationName": "conversionTask"
          }
        }
      }
    },
    "ImportKeyPair": {
      "input": {
        "type": "structure",
        "required": [
          "KeyName",
          "PublicKeyMaterial"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "KeyName": {
            "locationName": "keyName"
          },
          "PublicKeyMaterial": {
            "locationName": "publicKeyMaterial",
            "type": "blob"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "KeyFingerprint": {
            "locationName": "keyFingerprint"
          },
          "KeyName": {
            "locationName": "keyName"
          }
        }
      }
    },
    "ImportSnapshot": {
      "input": {
        "type": "structure",
        "members": {
          "ClientData": {
            "shape": "Sq7"
          },
          "ClientToken": {},
          "Description": {},
          "DiskContainer": {
            "type": "structure",
            "members": {
              "Description": {},
              "Format": {},
              "Url": {},
              "UserBucket": {
                "shape": "Sqa"
              }
            }
          },
          "DryRun": {
            "type": "boolean"
          },
          "RoleName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Description": {
            "locationName": "description"
          },
          "ImportTaskId": {
            "locationName": "importTaskId"
          },
          "SnapshotTaskDetail": {
            "shape": "Sg5",
            "locationName": "snapshotTaskDetail"
          }
        }
      }
    },
    "ImportVolume": {
      "input": {
        "type": "structure",
        "required": [
          "AvailabilityZone",
          "Image",
          "Volume"
        ],
        "members": {
          "AvailabilityZone": {
            "locationName": "availabilityZone"
          },
          "Description": {
            "locationName": "description"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "Image": {
            "shape": "Sqf",
            "locationName": "image"
          },
          "Volume": {
            "shape": "Sqg",
            "locationName": "volume"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ConversionTask": {
            "shape": "Scq",
            "locationName": "conversionTask"
          }
        }
      }
    },
    "ModifyFpgaImageAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "FpgaImageId"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "FpgaImageId": {},
          "Attribute": {},
          "OperationType": {},
          "UserIds": {
            "shape": "Sqt",
            "locationName": "UserId"
          },
          "UserGroups": {
            "shape": "Squ",
            "locationName": "UserGroup"
          },
          "ProductCodes": {
            "shape": "Sqv",
            "locationName": "ProductCode"
          },
          "LoadPermission": {
            "type": "structure",
            "members": {
              "Add": {
                "shape": "Sqx"
              },
              "Remove": {
                "shape": "Sqx"
              }
            }
          },
          "Description": {},
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FpgaImageAttribute": {
            "shape": "Sdu",
            "locationName": "fpgaImageAttribute"
          }
        }
      }
    },
    "ModifyHosts": {
      "input": {
        "type": "structure",
        "required": [
          "AutoPlacement",
          "HostIds"
        ],
        "members": {
          "AutoPlacement": {
            "locationName": "autoPlacement"
          },
          "HostIds": {
            "shape": "Sep",
            "locationName": "hostId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Successful": {
            "shape": "Sz",
            "locationName": "successful"
          },
          "Unsuccessful": {
            "shape": "Sr2",
            "locationName": "unsuccessful"
          }
        }
      }
    },
    "ModifyIdFormat": {
      "input": {
        "type": "structure",
        "required": [
          "Resource",
          "UseLongIds"
        ],
        "members": {
          "Resource": {},
          "UseLongIds": {
            "type": "boolean"
          }
        }
      }
    },
    "ModifyIdentityIdFormat": {
      "input": {
        "type": "structure",
        "required": [
          "PrincipalArn",
          "Resource",
          "UseLongIds"
        ],
        "members": {
          "PrincipalArn": {
            "locationName": "principalArn"
          },
          "Resource": {
            "locationName": "resource"
          },
          "UseLongIds": {
            "locationName": "useLongIds",
            "type": "boolean"
          }
        }
      }
    },
    "ModifyImageAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "ImageId"
        ],
        "members": {
          "Attribute": {},
          "Description": {
            "shape": "S4i"
          },
          "ImageId": {},
          "LaunchPermission": {
            "type": "structure",
            "members": {
              "Add": {
                "shape": "Sfe"
              },
              "Remove": {
                "shape": "Sfe"
              }
            }
          },
          "OperationType": {},
          "ProductCodes": {
            "shape": "Sqv",
            "locationName": "ProductCode"
          },
          "UserGroups": {
            "shape": "Squ",
            "locationName": "UserGroup"
          },
          "UserIds": {
            "shape": "Sqt",
            "locationName": "UserId"
          },
          "Value": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "ModifyInstanceAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "SourceDestCheck": {
            "shape": "Sgc"
          },
          "Attribute": {
            "locationName": "attribute"
          },
          "BlockDeviceMappings": {
            "locationName": "blockDeviceMapping",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "DeviceName": {
                  "locationName": "deviceName"
                },
                "Ebs": {
                  "locationName": "ebs",
                  "type": "structure",
                  "members": {
                    "DeleteOnTermination": {
                      "locationName": "deleteOnTermination",
                      "type": "boolean"
                    },
                    "VolumeId": {
                      "locationName": "volumeId"
                    }
                  }
                },
                "NoDevice": {
                  "locationName": "noDevice"
                },
                "VirtualName": {
                  "locationName": "virtualName"
                }
              }
            }
          },
          "DisableApiTermination": {
            "shape": "Sgc",
            "locationName": "disableApiTermination"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "EbsOptimized": {
            "shape": "Sgc",
            "locationName": "ebsOptimized"
          },
          "EnaSupport": {
            "shape": "Sgc",
            "locationName": "enaSupport"
          },
          "Groups": {
            "shape": "S1s",
            "locationName": "GroupId"
          },
          "InstanceId": {
            "locationName": "instanceId"
          },
          "InstanceInitiatedShutdownBehavior": {
            "shape": "S4i",
            "locationName": "instanceInitiatedShutdownBehavior"
          },
          "InstanceType": {
            "shape": "S4i",
            "locationName": "instanceType"
          },
          "Kernel": {
            "shape": "S4i",
            "locationName": "kernel"
          },
          "Ramdisk": {
            "shape": "S4i",
            "locationName": "ramdisk"
          },
          "SriovNetSupport": {
            "shape": "S4i",
            "locationName": "sriovNetSupport"
          },
          "UserData": {
            "locationName": "userData",
            "type": "structure",
            "members": {
              "Value": {
                "locationName": "value",
                "type": "blob"
              }
            }
          },
          "Value": {
            "locationName": "value"
          }
        }
      }
    },
    "ModifyInstanceCreditSpecification": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceCreditSpecifications"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ClientToken": {},
          "InstanceCreditSpecifications": {
            "locationName": "InstanceCreditSpecification",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "InstanceId": {},
                "CpuCredits": {}
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SuccessfulInstanceCreditSpecifications": {
            "locationName": "successfulInstanceCreditSpecificationSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "InstanceId": {
                  "locationName": "instanceId"
                }
              }
            }
          },
          "UnsuccessfulInstanceCreditSpecifications": {
            "locationName": "unsuccessfulInstanceCreditSpecificationSet",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "InstanceId": {
                  "locationName": "instanceId"
                },
                "Error": {
                  "locationName": "error",
                  "type": "structure",
                  "members": {
                    "Code": {
                      "locationName": "code"
                    },
                    "Message": {
                      "locationName": "message"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "ModifyInstancePlacement": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "Affinity": {
            "locationName": "affinity"
          },
          "HostId": {
            "locationName": "hostId"
          },
          "InstanceId": {
            "locationName": "instanceId"
          },
          "Tenancy": {
            "locationName": "tenancy"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "ModifyLaunchTemplate": {
      "input": {
        "type": "structure",
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ClientToken": {},
          "LaunchTemplateId": {},
          "LaunchTemplateName": {},
          "DefaultVersion": {
            "locationName": "SetDefaultVersion"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "LaunchTemplate": {
            "shape": "S6d",
            "locationName": "launchTemplate"
          }
        }
      }
    },
    "ModifyNetworkInterfaceAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "NetworkInterfaceId"
        ],
        "members": {
          "Attachment": {
            "locationName": "attachment",
            "type": "structure",
            "members": {
              "AttachmentId": {
                "locationName": "attachmentId"
              },
              "DeleteOnTermination": {
                "locationName": "deleteOnTermination",
                "type": "boolean"
              }
            }
          },
          "Description": {
            "shape": "S4i",
            "locationName": "description"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "Groups": {
            "shape": "S5r",
            "locationName": "SecurityGroupId"
          },
          "NetworkInterfaceId": {
            "locationName": "networkInterfaceId"
          },
          "SourceDestCheck": {
            "shape": "Sgc",
            "locationName": "sourceDestCheck"
          }
        }
      }
    },
    "ModifyReservedInstances": {
      "input": {
        "type": "structure",
        "required": [
          "ReservedInstancesIds",
          "TargetConfigurations"
        ],
        "members": {
          "ReservedInstancesIds": {
            "shape": "Siw",
            "locationName": "ReservedInstancesId"
          },
          "ClientToken": {
            "locationName": "clientToken"
          },
          "TargetConfigurations": {
            "locationName": "ReservedInstancesConfigurationSetItemType",
            "type": "list",
            "member": {
              "shape": "Sjh",
              "locationName": "item"
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ReservedInstancesModificationId": {
            "locationName": "reservedInstancesModificationId"
          }
        }
      }
    },
    "ModifySnapshotAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "SnapshotId"
        ],
        "members": {
          "Attribute": {},
          "CreateVolumePermission": {
            "type": "structure",
            "members": {
              "Add": {
                "shape": "Skm"
              },
              "Remove": {
                "shape": "Skm"
              }
            }
          },
          "GroupNames": {
            "shape": "Skf",
            "locationName": "UserGroup"
          },
          "OperationType": {},
          "SnapshotId": {},
          "UserIds": {
            "shape": "Sqt",
            "locationName": "UserId"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "ModifySpotFleetRequest": {
      "input": {
        "type": "structure",
        "required": [
          "SpotFleetRequestId"
        ],
        "members": {
          "ExcessCapacityTerminationPolicy": {
            "locationName": "excessCapacityTerminationPolicy"
          },
          "SpotFleetRequestId": {
            "locationName": "spotFleetRequestId"
          },
          "TargetCapacity": {
            "locationName": "targetCapacity",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "ModifySubnetAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "SubnetId"
        ],
        "members": {
          "AssignIpv6AddressOnCreation": {
            "shape": "Sgc"
          },
          "MapPublicIpOnLaunch": {
            "shape": "Sgc"
          },
          "SubnetId": {
            "locationName": "subnetId"
          }
        }
      }
    },
    "ModifyVolume": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeId"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "VolumeId": {},
          "Size": {
            "type": "integer"
          },
          "VolumeType": {},
          "Iops": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VolumeModification": {
            "shape": "Snh",
            "locationName": "volumeModification"
          }
        }
      }
    },
    "ModifyVolumeAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeId"
        ],
        "members": {
          "AutoEnableIO": {
            "shape": "Sgc"
          },
          "VolumeId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "ModifyVpcAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "VpcId"
        ],
        "members": {
          "EnableDnsHostnames": {
            "shape": "Sgc"
          },
          "EnableDnsSupport": {
            "shape": "Sgc"
          },
          "VpcId": {
            "locationName": "vpcId"
          }
        }
      }
    },
    "ModifyVpcEndpoint": {
      "input": {
        "type": "structure",
        "required": [
          "VpcEndpointId"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "VpcEndpointId": {},
          "ResetPolicy": {
            "type": "boolean"
          },
          "PolicyDocument": {},
          "AddRouteTableIds": {
            "shape": "Sa",
            "locationName": "AddRouteTableId"
          },
          "RemoveRouteTableIds": {
            "shape": "Sa",
            "locationName": "RemoveRouteTableId"
          },
          "AddSubnetIds": {
            "shape": "Sa",
            "locationName": "AddSubnetId"
          },
          "RemoveSubnetIds": {
            "shape": "Sa",
            "locationName": "RemoveSubnetId"
          },
          "AddSecurityGroupIds": {
            "shape": "Sa",
            "locationName": "AddSecurityGroupId"
          },
          "RemoveSecurityGroupIds": {
            "shape": "Sa",
            "locationName": "RemoveSecurityGroupId"
          },
          "PrivateDnsEnabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "ModifyVpcEndpointConnectionNotification": {
      "input": {
        "type": "structure",
        "required": [
          "ConnectionNotificationId"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ConnectionNotificationId": {},
          "ConnectionNotificationArn": {},
          "ConnectionEvents": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ReturnValue": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "ModifyVpcEndpointServiceConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "ServiceId"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ServiceId": {},
          "AcceptanceRequired": {
            "type": "boolean"
          },
          "AddNetworkLoadBalancerArns": {
            "shape": "Sa",
            "locationName": "addNetworkLoadBalancerArn"
          },
          "RemoveNetworkLoadBalancerArns": {
            "shape": "Sa",
            "locationName": "removeNetworkLoadBalancerArn"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "ModifyVpcEndpointServicePermissions": {
      "input": {
        "type": "structure",
        "required": [
          "ServiceId"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ServiceId": {},
          "AddAllowedPrincipals": {
            "shape": "Sa"
          },
          "RemoveAllowedPrincipals": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ReturnValue": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "ModifyVpcPeeringConnectionOptions": {
      "input": {
        "type": "structure",
        "required": [
          "VpcPeeringConnectionId"
        ],
        "members": {
          "AccepterPeeringConnectionOptions": {
            "shape": "Ssf"
          },
          "DryRun": {
            "type": "boolean"
          },
          "RequesterPeeringConnectionOptions": {
            "shape": "Ssf"
          },
          "VpcPeeringConnectionId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AccepterPeeringConnectionOptions": {
            "shape": "Ssh",
            "locationName": "accepterPeeringConnectionOptions"
          },
          "RequesterPeeringConnectionOptions": {
            "shape": "Ssh",
            "locationName": "requesterPeeringConnectionOptions"
          }
        }
      }
    },
    "ModifyVpcTenancy": {
      "input": {
        "type": "structure",
        "required": [
          "VpcId",
          "InstanceTenancy"
        ],
        "members": {
          "VpcId": {},
          "InstanceTenancy": {},
          "DryRun": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ReturnValue": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "MonitorInstances": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceIds"
        ],
        "members": {
          "InstanceIds": {
            "shape": "Sci",
            "locationName": "InstanceId"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstanceMonitorings": {
            "shape": "Ssn",
            "locationName": "instancesSet"
          }
        }
      }
    },
    "MoveAddressToVpc": {
      "input": {
        "type": "structure",
        "required": [
          "PublicIp"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "PublicIp": {
            "locationName": "publicIp"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AllocationId": {
            "locationName": "allocationId"
          },
          "Status": {
            "locationName": "status"
          }
        }
      }
    },
    "PurchaseHostReservation": {
      "input": {
        "type": "structure",
        "required": [
          "HostIdSet",
          "OfferingId"
        ],
        "members": {
          "ClientToken": {},
          "CurrencyCode": {},
          "HostIdSet": {
            "shape": "Spq"
          },
          "LimitPrice": {},
          "OfferingId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ClientToken": {
            "locationName": "clientToken"
          },
          "CurrencyCode": {
            "locationName": "currencyCode"
          },
          "Purchase": {
            "shape": "Sps",
            "locationName": "purchase"
          },
          "TotalHourlyPrice": {
            "locationName": "totalHourlyPrice"
          },
          "TotalUpfrontPrice": {
            "locationName": "totalUpfrontPrice"
          }
        }
      }
    },
    "PurchaseReservedInstancesOffering": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceCount",
          "ReservedInstancesOfferingId"
        ],
        "members": {
          "InstanceCount": {
            "type": "integer"
          },
          "ReservedInstancesOfferingId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "LimitPrice": {
            "locationName": "limitPrice",
            "type": "structure",
            "members": {
              "Amount": {
                "locationName": "amount",
                "type": "double"
              },
              "CurrencyCode": {
                "locationName": "currencyCode"
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ReservedInstancesId": {
            "locationName": "reservedInstancesId"
          }
        }
      }
    },
    "PurchaseScheduledInstances": {
      "input": {
        "type": "structure",
        "required": [
          "PurchaseRequests"
        ],
        "members": {
          "ClientToken": {
            "idempotencyToken": true
          },
          "DryRun": {
            "type": "boolean"
          },
          "PurchaseRequests": {
            "locationName": "PurchaseRequest",
            "type": "list",
            "member": {
              "locationName": "PurchaseRequest",
              "type": "structure",
              "required": [
                "InstanceCount",
                "PurchaseToken"
              ],
              "members": {
                "InstanceCount": {
                  "type": "integer"
                },
                "PurchaseToken": {}
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ScheduledInstanceSet": {
            "locationName": "scheduledInstanceSet",
            "type": "list",
            "member": {
              "shape": "Sk8",
              "locationName": "item"
            }
          }
        }
      }
    },
    "RebootInstances": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceIds"
        ],
        "members": {
          "InstanceIds": {
            "shape": "Sci",
            "locationName": "InstanceId"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "RegisterImage": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "ImageLocation": {},
          "Architecture": {
            "locationName": "architecture"
          },
          "BlockDeviceMappings": {
            "shape": "S4x",
            "locationName": "BlockDeviceMapping"
          },
          "Description": {
            "locationName": "description"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "EnaSupport": {
            "locationName": "enaSupport",
            "type": "boolean"
          },
          "KernelId": {
            "locationName": "kernelId"
          },
          "Name": {
            "locationName": "name"
          },
          "BillingProducts": {
            "locationName": "BillingProduct",
            "type": "list",
            "member": {
              "locationName": "item"
            }
          },
          "RamdiskId": {
            "locationName": "ramdiskId"
          },
          "RootDeviceName": {
            "locationName": "rootDeviceName"
          },
          "SriovNetSupport": {
            "locationName": "sriovNetSupport"
          },
          "VirtualizationType": {
            "locationName": "virtualizationType"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ImageId": {
            "locationName": "imageId"
          }
        }
      }
    },
    "RejectVpcEndpointConnections": {
      "input": {
        "type": "structure",
        "required": [
          "ServiceId",
          "VpcEndpointIds"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "ServiceId": {},
          "VpcEndpointIds": {
            "shape": "Sa",
            "locationName": "VpcEndpointId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Unsuccessful": {
            "shape": "Sc",
            "locationName": "unsuccessful"
          }
        }
      }
    },
    "RejectVpcPeeringConnection": {
      "input": {
        "type": "structure",
        "required": [
          "VpcPeeringConnectionId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "VpcPeeringConnectionId": {
            "locationName": "vpcPeeringConnectionId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "ReleaseAddress": {
      "input": {
        "type": "structure",
        "members": {
          "AllocationId": {},
          "PublicIp": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "ReleaseHosts": {
      "input": {
        "type": "structure",
        "required": [
          "HostIds"
        ],
        "members": {
          "HostIds": {
            "shape": "Sep",
            "locationName": "hostId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Successful": {
            "shape": "Sz",
            "locationName": "successful"
          },
          "Unsuccessful": {
            "shape": "Sr2",
            "locationName": "unsuccessful"
          }
        }
      }
    },
    "ReplaceIamInstanceProfileAssociation": {
      "input": {
        "type": "structure",
        "required": [
          "IamInstanceProfile",
          "AssociationId"
        ],
        "members": {
          "IamInstanceProfile": {
            "shape": "S19"
          },
          "AssociationId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IamInstanceProfileAssociation": {
            "shape": "S1b",
            "locationName": "iamInstanceProfileAssociation"
          }
        }
      }
    },
    "ReplaceNetworkAclAssociation": {
      "input": {
        "type": "structure",
        "required": [
          "AssociationId",
          "NetworkAclId"
        ],
        "members": {
          "AssociationId": {
            "locationName": "associationId"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "NetworkAclId": {
            "locationName": "networkAclId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NewAssociationId": {
            "locationName": "newAssociationId"
          }
        }
      }
    },
    "ReplaceNetworkAclEntry": {
      "input": {
        "type": "structure",
        "required": [
          "Egress",
          "NetworkAclId",
          "Protocol",
          "RuleAction",
          "RuleNumber"
        ],
        "members": {
          "CidrBlock": {
            "locationName": "cidrBlock"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "Egress": {
            "locationName": "egress",
            "type": "boolean"
          },
          "IcmpTypeCode": {
            "shape": "S7d",
            "locationName": "Icmp"
          },
          "Ipv6CidrBlock": {
            "locationName": "ipv6CidrBlock"
          },
          "NetworkAclId": {
            "locationName": "networkAclId"
          },
          "PortRange": {
            "shape": "S7e",
            "locationName": "portRange"
          },
          "Protocol": {
            "locationName": "protocol"
          },
          "RuleAction": {
            "locationName": "ruleAction"
          },
          "RuleNumber": {
            "locationName": "ruleNumber",
            "type": "integer"
          }
        }
      }
    },
    "ReplaceRoute": {
      "input": {
        "type": "structure",
        "required": [
          "RouteTableId"
        ],
        "members": {
          "DestinationCidrBlock": {
            "locationName": "destinationCidrBlock"
          },
          "DestinationIpv6CidrBlock": {
            "locationName": "destinationIpv6CidrBlock"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "EgressOnlyInternetGatewayId": {
            "locationName": "egressOnlyInternetGatewayId"
          },
          "GatewayId": {
            "locationName": "gatewayId"
          },
          "InstanceId": {
            "locationName": "instanceId"
          },
          "NatGatewayId": {
            "locationName": "natGatewayId"
          },
          "NetworkInterfaceId": {
            "locationName": "networkInterfaceId"
          },
          "RouteTableId": {
            "locationName": "routeTableId"
          },
          "VpcPeeringConnectionId": {
            "locationName": "vpcPeeringConnectionId"
          }
        }
      }
    },
    "ReplaceRouteTableAssociation": {
      "input": {
        "type": "structure",
        "required": [
          "AssociationId",
          "RouteTableId"
        ],
        "members": {
          "AssociationId": {
            "locationName": "associationId"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "RouteTableId": {
            "locationName": "routeTableId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NewAssociationId": {
            "locationName": "newAssociationId"
          }
        }
      }
    },
    "ReportInstanceStatus": {
      "input": {
        "type": "structure",
        "required": [
          "Instances",
          "ReasonCodes",
          "Status"
        ],
        "members": {
          "Description": {
            "locationName": "description"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "EndTime": {
            "locationName": "endTime",
            "type": "timestamp"
          },
          "Instances": {
            "shape": "Sci",
            "locationName": "instanceId"
          },
          "ReasonCodes": {
            "locationName": "reasonCode",
            "type": "list",
            "member": {
              "locationName": "item"
            }
          },
          "StartTime": {
            "locationName": "startTime",
            "type": "timestamp"
          },
          "Status": {
            "locationName": "status"
          }
        }
      }
    },
    "RequestSpotFleet": {
      "input": {
        "type": "structure",
        "required": [
          "SpotFleetRequestConfig"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "SpotFleetRequestConfig": {
            "shape": "Slb",
            "locationName": "spotFleetRequestConfig"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "SpotFleetRequestId"
        ],
        "members": {
          "SpotFleetRequestId": {
            "locationName": "spotFleetRequestId"
          }
        }
      }
    },
    "RequestSpotInstances": {
      "input": {
        "type": "structure",
        "members": {
          "AvailabilityZoneGroup": {
            "locationName": "availabilityZoneGroup"
          },
          "BlockDurationMinutes": {
            "locationName": "blockDurationMinutes",
            "type": "integer"
          },
          "ClientToken": {
            "locationName": "clientToken"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "InstanceCount": {
            "locationName": "instanceCount",
            "type": "integer"
          },
          "LaunchGroup": {
            "locationName": "launchGroup"
          },
          "LaunchSpecification": {
            "type": "structure",
            "members": {
              "SecurityGroupIds": {
                "shape": "Sa",
                "locationName": "SecurityGroupId"
              },
              "SecurityGroups": {
                "shape": "Sa",
                "locationName": "SecurityGroup"
              },
              "AddressingType": {
                "locationName": "addressingType"
              },
              "BlockDeviceMappings": {
                "shape": "Sfd",
                "locationName": "blockDeviceMapping"
              },
              "EbsOptimized": {
                "locationName": "ebsOptimized",
                "type": "boolean"
              },
              "IamInstanceProfile": {
                "shape": "S19",
                "locationName": "iamInstanceProfile"
              },
              "ImageId": {
                "locationName": "imageId"
              },
              "InstanceType": {
                "locationName": "instanceType"
              },
              "KernelId": {
                "locationName": "kernelId"
              },
              "KeyName": {
                "locationName": "keyName"
              },
              "Monitoring": {
                "shape": "Sm4",
                "locationName": "monitoring"
              },
              "NetworkInterfaces": {
                "shape": "Slh",
                "locationName": "NetworkInterface"
              },
              "Placement": {
                "shape": "Slj",
                "locationName": "placement"
              },
              "RamdiskId": {
                "locationName": "ramdiskId"
              },
              "SubnetId": {
                "locationName": "subnetId"
              },
              "UserData": {
                "locationName": "userData"
              }
            }
          },
          "SpotPrice": {
            "locationName": "spotPrice"
          },
          "Type": {
            "locationName": "type"
          },
          "ValidFrom": {
            "locationName": "validFrom",
            "type": "timestamp"
          },
          "ValidUntil": {
            "locationName": "validUntil",
            "type": "timestamp"
          },
          "InstanceInterruptionBehavior": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SpotInstanceRequests": {
            "shape": "Sm1",
            "locationName": "spotInstanceRequestSet"
          }
        }
      }
    },
    "ResetFpgaImageAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "FpgaImageId"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "FpgaImageId": {},
          "Attribute": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "ResetImageAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "Attribute",
          "ImageId"
        ],
        "members": {
          "Attribute": {},
          "ImageId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "ResetInstanceAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "Attribute",
          "InstanceId"
        ],
        "members": {
          "Attribute": {
            "locationName": "attribute"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "InstanceId": {
            "locationName": "instanceId"
          }
        }
      }
    },
    "ResetNetworkInterfaceAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "NetworkInterfaceId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "NetworkInterfaceId": {
            "locationName": "networkInterfaceId"
          },
          "SourceDestCheck": {
            "locationName": "sourceDestCheck"
          }
        }
      }
    },
    "ResetSnapshotAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "Attribute",
          "SnapshotId"
        ],
        "members": {
          "Attribute": {},
          "SnapshotId": {},
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "RestoreAddressToClassic": {
      "input": {
        "type": "structure",
        "required": [
          "PublicIp"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "PublicIp": {
            "locationName": "publicIp"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "PublicIp": {
            "locationName": "publicIp"
          },
          "Status": {
            "locationName": "status"
          }
        }
      }
    },
    "RevokeSecurityGroupEgress": {
      "input": {
        "type": "structure",
        "required": [
          "GroupId"
        ],
        "members": {
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "GroupId": {
            "locationName": "groupId"
          },
          "IpPermissions": {
            "shape": "S25",
            "locationName": "ipPermissions"
          },
          "CidrIp": {
            "locationName": "cidrIp"
          },
          "FromPort": {
            "locationName": "fromPort",
            "type": "integer"
          },
          "IpProtocol": {
            "locationName": "ipProtocol"
          },
          "ToPort": {
            "locationName": "toPort",
            "type": "integer"
          },
          "SourceSecurityGroupName": {
            "locationName": "sourceSecurityGroupName"
          },
          "SourceSecurityGroupOwnerId": {
            "locationName": "sourceSecurityGroupOwnerId"
          }
        }
      }
    },
    "RevokeSecurityGroupIngress": {
      "input": {
        "type": "structure",
        "members": {
          "CidrIp": {},
          "FromPort": {
            "type": "integer"
          },
          "GroupId": {},
          "GroupName": {},
          "IpPermissions": {
            "shape": "S25"
          },
          "IpProtocol": {},
          "SourceSecurityGroupName": {},
          "SourceSecurityGroupOwnerId": {},
          "ToPort": {
            "type": "integer"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      }
    },
    "RunInstances": {
      "input": {
        "type": "structure",
        "required": [
          "MaxCount",
          "MinCount"
        ],
        "members": {
          "BlockDeviceMappings": {
            "shape": "S4x",
            "locationName": "BlockDeviceMapping"
          },
          "ImageId": {},
          "InstanceType": {},
          "Ipv6AddressCount": {
            "type": "integer"
          },
          "Ipv6Addresses": {
            "shape": "S6o",
            "locationName": "Ipv6Address"
          },
          "KernelId": {},
          "KeyName": {},
          "MaxCount": {
            "type": "integer"
          },
          "MinCount": {
            "type": "integer"
          },
          "Monitoring": {
            "shape": "Sm4"
          },
          "Placement": {
            "shape": "Sh4"
          },
          "RamdiskId": {},
          "SecurityGroupIds": {
            "shape": "S5r",
            "locationName": "SecurityGroupId"
          },
          "SecurityGroups": {
            "shape": "S65",
            "locationName": "SecurityGroup"
          },
          "SubnetId": {},
          "UserData": {},
          "AdditionalInfo": {
            "locationName": "additionalInfo"
          },
          "ClientToken": {
            "locationName": "clientToken"
          },
          "DisableApiTermination": {
            "locationName": "disableApiTermination",
            "type": "boolean"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "EbsOptimized": {
            "locationName": "ebsOptimized",
            "type": "boolean"
          },
          "IamInstanceProfile": {
            "shape": "S19",
            "locationName": "iamInstanceProfile"
          },
          "InstanceInitiatedShutdownBehavior": {
            "locationName": "instanceInitiatedShutdownBehavior"
          },
          "NetworkInterfaces": {
            "shape": "Slh",
            "locationName": "networkInterface"
          },
          "PrivateIpAddress": {
            "locationName": "privateIpAddress"
          },
          "ElasticGpuSpecification": {
            "type": "list",
            "member": {
              "shape": "S64",
              "locationName": "item"
            }
          },
          "TagSpecifications": {
            "shape": "S8y",
            "locationName": "TagSpecification"
          },
          "LaunchTemplate": {
            "type": "structure",
            "members": {
              "LaunchTemplateId": {},
              "LaunchTemplateName": {},
              "Version": {}
            }
          },
          "InstanceMarketOptions": {
            "type": "structure",
            "members": {
              "MarketType": {},
              "SpotOptions": {
                "type": "structure",
                "members": {
                  "MaxPrice": {},
                  "SpotInstanceType": {},
                  "BlockDurationMinutes": {
                    "type": "integer"
                  },
                  "ValidUntil": {
                    "type": "timestamp"
                  },
                  "InstanceInterruptionBehavior": {}
                }
              }
            }
          },
          "CreditSpecification": {
            "shape": "S6b"
          }
        }
      },
      "output": {
        "shape": "Sgz"
      }
    },
    "RunScheduledInstances": {
      "input": {
        "type": "structure",
        "required": [
          "LaunchSpecification",
          "ScheduledInstanceId"
        ],
        "members": {
          "ClientToken": {
            "idempotencyToken": true
          },
          "DryRun": {
            "type": "boolean"
          },
          "InstanceCount": {
            "type": "integer"
          },
          "LaunchSpecification": {
            "type": "structure",
            "required": [
              "ImageId"
            ],
            "members": {
              "BlockDeviceMappings": {
                "locationName": "BlockDeviceMapping",
                "type": "list",
                "member": {
                  "locationName": "BlockDeviceMapping",
                  "type": "structure",
                  "members": {
                    "DeviceName": {},
                    "Ebs": {
                      "type": "structure",
                      "members": {
                        "DeleteOnTermination": {
                          "type": "boolean"
                        },
                        "Encrypted": {
                          "type": "boolean"
                        },
                        "Iops": {
                          "type": "integer"
                        },
                        "SnapshotId": {},
                        "VolumeSize": {
                          "type": "integer"
                        },
                        "VolumeType": {}
                      }
                    },
                    "NoDevice": {},
                    "VirtualName": {}
                  }
                }
              },
              "EbsOptimized": {
                "type": "boolean"
              },
              "IamInstanceProfile": {
                "type": "structure",
                "members": {
                  "Arn": {},
                  "Name": {}
                }
              },
              "ImageId": {},
              "InstanceType": {},
              "KernelId": {},
              "KeyName": {},
              "Monitoring": {
                "type": "structure",
                "members": {
                  "Enabled": {
                    "type": "boolean"
                  }
                }
              },
              "NetworkInterfaces": {
                "locationName": "NetworkInterface",
                "type": "list",
                "member": {
                  "locationName": "NetworkInterface",
                  "type": "structure",
                  "members": {
                    "AssociatePublicIpAddress": {
                      "type": "boolean"
                    },
                    "DeleteOnTermination": {
                      "type": "boolean"
                    },
                    "Description": {},
                    "DeviceIndex": {
                      "type": "integer"
                    },
                    "Groups": {
                      "shape": "Suk",
                      "locationName": "Group"
                    },
                    "Ipv6AddressCount": {
                      "type": "integer"
                    },
                    "Ipv6Addresses": {
                      "locationName": "Ipv6Address",
                      "type": "list",
                      "member": {
                        "locationName": "Ipv6Address",
                        "type": "structure",
                        "members": {
                          "Ipv6Address": {}
                        }
                      }
                    },
                    "NetworkInterfaceId": {},
                    "PrivateIpAddress": {},
                    "PrivateIpAddressConfigs": {
                      "locationName": "PrivateIpAddressConfig",
                      "type": "list",
                      "member": {
                        "locationName": "PrivateIpAddressConfigSet",
                        "type": "structure",
                        "members": {
                          "Primary": {
                            "type": "boolean"
                          },
                          "PrivateIpAddress": {}
                        }
                      }
                    },
                    "SecondaryPrivateIpAddressCount": {
                      "type": "integer"
                    },
                    "SubnetId": {}
                  }
                }
              },
              "Placement": {
                "type": "structure",
                "members": {
                  "AvailabilityZone": {},
                  "GroupName": {}
                }
              },
              "RamdiskId": {},
              "SecurityGroupIds": {
                "shape": "Suk",
                "locationName": "SecurityGroupId"
              },
              "SubnetId": {},
              "UserData": {}
            }
          },
          "ScheduledInstanceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstanceIdSet": {
            "locationName": "instanceIdSet",
            "type": "list",
            "member": {
              "locationName": "item"
            }
          }
        }
      }
    },
    "StartInstances": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceIds"
        ],
        "members": {
          "InstanceIds": {
            "shape": "Sci",
            "locationName": "InstanceId"
          },
          "AdditionalInfo": {
            "locationName": "additionalInfo"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StartingInstances": {
            "shape": "Suv",
            "locationName": "instancesSet"
          }
        }
      }
    },
    "StopInstances": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceIds"
        ],
        "members": {
          "InstanceIds": {
            "shape": "Sci",
            "locationName": "InstanceId"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          },
          "Force": {
            "locationName": "force",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StoppingInstances": {
            "shape": "Suv",
            "locationName": "instancesSet"
          }
        }
      }
    },
    "TerminateInstances": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceIds"
        ],
        "members": {
          "InstanceIds": {
            "shape": "Sci",
            "locationName": "InstanceId"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TerminatingInstances": {
            "shape": "Suv",
            "locationName": "instancesSet"
          }
        }
      }
    },
    "UnassignIpv6Addresses": {
      "input": {
        "type": "structure",
        "required": [
          "Ipv6Addresses",
          "NetworkInterfaceId"
        ],
        "members": {
          "Ipv6Addresses": {
            "shape": "S11",
            "locationName": "ipv6Addresses"
          },
          "NetworkInterfaceId": {
            "locationName": "networkInterfaceId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NetworkInterfaceId": {
            "locationName": "networkInterfaceId"
          },
          "UnassignedIpv6Addresses": {
            "shape": "S11",
            "locationName": "unassignedIpv6Addresses"
          }
        }
      }
    },
    "UnassignPrivateIpAddresses": {
      "input": {
        "type": "structure",
        "required": [
          "NetworkInterfaceId",
          "PrivateIpAddresses"
        ],
        "members": {
          "NetworkInterfaceId": {
            "locationName": "networkInterfaceId"
          },
          "PrivateIpAddresses": {
            "shape": "S14",
            "locationName": "privateIpAddress"
          }
        }
      }
    },
    "UnmonitorInstances": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceIds"
        ],
        "members": {
          "InstanceIds": {
            "shape": "Sci",
            "locationName": "InstanceId"
          },
          "DryRun": {
            "locationName": "dryRun",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstanceMonitorings": {
            "shape": "Ssn",
            "locationName": "instancesSet"
          }
        }
      }
    },
    "UpdateSecurityGroupRuleDescriptionsEgress": {
      "input": {
        "type": "structure",
        "required": [
          "IpPermissions"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "GroupId": {},
          "GroupName": {},
          "IpPermissions": {
            "shape": "S25"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    },
    "UpdateSecurityGroupRuleDescriptionsIngress": {
      "input": {
        "type": "structure",
        "required": [
          "IpPermissions"
        ],
        "members": {
          "DryRun": {
            "type": "boolean"
          },
          "GroupId": {},
          "GroupName": {},
          "IpPermissions": {
            "shape": "S25"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Return": {
            "locationName": "return",
            "type": "boolean"
          }
        }
      }
    }
  },
  "shapes": {
    "S3": {
      "type": "list",
      "member": {
        "locationName": "ReservedInstanceId"
      }
    },
    "S5": {
      "type": "list",
      "member": {
        "locationName": "TargetConfigurationRequest",
        "type": "structure",
        "required": [
          "OfferingId"
        ],
        "members": {
          "InstanceCount": {
            "type": "integer"
          },
          "OfferingId": {}
        }
      }
    },
    "Sa": {
      "type": "list",
      "member": {
        "locationName": "item"
      }
    },
    "Sc": {
      "type": "list",
      "member": {
        "shape": "Sd",
        "locationName": "item"
      }
    },
    "Sd": {
      "type": "structure",
      "required": [
        "Error"
      ],
      "members": {
        "Error": {
          "locationName": "error",
          "type": "structure",
          "required": [
            "Code",
            "Message"
          ],
          "members": {
            "Code": {
              "locationName": "code"
            },
            "Message": {
              "locationName": "message"
            }
          }
        },
        "ResourceId": {
          "locationName": "resourceId"
        }
      }
    },
    "Sh": {
      "type": "structure",
      "members": {
        "AccepterVpcInfo": {
          "shape": "Si",
          "locationName": "accepterVpcInfo"
        },
        "ExpirationTime": {
          "locationName": "expirationTime",
          "type": "timestamp"
        },
        "RequesterVpcInfo": {
          "shape": "Si",
          "locationName": "requesterVpcInfo"
        },
        "Status": {
          "locationName": "status",
          "type": "structure",
          "members": {
            "Code": {
              "locationName": "code"
            },
            "Message": {
              "locationName": "message"
            }
          }
        },
        "Tags": {
          "shape": "Sr",
          "locationName": "tagSet"
        },
        "VpcPeeringConnectionId": {
          "locationName": "vpcPeeringConnectionId"
        }
      }
    },
    "Si": {
      "type": "structure",
      "members": {
        "CidrBlock": {
          "locationName": "cidrBlock"
        },
        "Ipv6CidrBlockSet": {
          "locationName": "ipv6CidrBlockSet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "Ipv6CidrBlock": {
                "locationName": "ipv6CidrBlock"
              }
            }
          }
        },
        "CidrBlockSet": {
          "locationName": "cidrBlockSet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "CidrBlock": {
                "locationName": "cidrBlock"
              }
            }
          }
        },
        "OwnerId": {
          "locationName": "ownerId"
        },
        "PeeringOptions": {
          "locationName": "peeringOptions",
          "type": "structure",
          "members": {
            "AllowDnsResolutionFromRemoteVpc": {
              "locationName": "allowDnsResolutionFromRemoteVpc",
              "type": "boolean"
            },
            "AllowEgressFromLocalClassicLinkToRemoteVpc": {
              "locationName": "allowEgressFromLocalClassicLinkToRemoteVpc",
              "type": "boolean"
            },
            "AllowEgressFromLocalVpcToRemoteClassicLink": {
              "locationName": "allowEgressFromLocalVpcToRemoteClassicLink",
              "type": "boolean"
            }
          }
        },
        "VpcId": {
          "locationName": "vpcId"
        },
        "Region": {
          "locationName": "region"
        }
      }
    },
    "Sr": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "Key": {
            "locationName": "key"
          },
          "Value": {
            "locationName": "value"
          }
        }
      }
    },
    "Sz": {
      "type": "list",
      "member": {
        "locationName": "item"
      }
    },
    "S11": {
      "type": "list",
      "member": {
        "locationName": "item"
      }
    },
    "S14": {
      "type": "list",
      "member": {
        "locationName": "PrivateIpAddress"
      }
    },
    "S19": {
      "type": "structure",
      "members": {
        "Arn": {
          "locationName": "arn"
        },
        "Name": {
          "locationName": "name"
        }
      }
    },
    "S1b": {
      "type": "structure",
      "members": {
        "AssociationId": {
          "locationName": "associationId"
        },
        "InstanceId": {
          "locationName": "instanceId"
        },
        "IamInstanceProfile": {
          "shape": "S1c",
          "locationName": "iamInstanceProfile"
        },
        "State": {
          "locationName": "state"
        },
        "Timestamp": {
          "locationName": "timestamp",
          "type": "timestamp"
        }
      }
    },
    "S1c": {
      "type": "structure",
      "members": {
        "Arn": {
          "locationName": "arn"
        },
        "Id": {
          "locationName": "id"
        }
      }
    },
    "S1i": {
      "type": "structure",
      "members": {
        "AssociationId": {
          "locationName": "associationId"
        },
        "Ipv6CidrBlock": {
          "locationName": "ipv6CidrBlock"
        },
        "Ipv6CidrBlockState": {
          "locationName": "ipv6CidrBlockState",
          "type": "structure",
          "members": {
            "State": {
              "locationName": "state"
            },
            "StatusMessage": {
              "locationName": "statusMessage"
            }
          }
        }
      }
    },
    "S1n": {
      "type": "structure",
      "members": {
        "AssociationId": {
          "locationName": "associationId"
        },
        "Ipv6CidrBlock": {
          "locationName": "ipv6CidrBlock"
        },
        "Ipv6CidrBlockState": {
          "shape": "S1o",
          "locationName": "ipv6CidrBlockState"
        }
      }
    },
    "S1o": {
      "type": "structure",
      "members": {
        "State": {
          "locationName": "state"
        },
        "StatusMessage": {
          "locationName": "statusMessage"
        }
      }
    },
    "S1q": {
      "type": "structure",
      "members": {
        "AssociationId": {
          "locationName": "associationId"
        },
        "CidrBlock": {
          "locationName": "cidrBlock"
        },
        "CidrBlockState": {
          "shape": "S1o",
          "locationName": "cidrBlockState"
        }
      }
    },
    "S1s": {
      "type": "list",
      "member": {
        "locationName": "groupId"
      }
    },
    "S1y": {
      "type": "structure",
      "members": {
        "AttachTime": {
          "locationName": "attachTime",
          "type": "timestamp"
        },
        "Device": {
          "locationName": "device"
        },
        "InstanceId": {
          "locationName": "instanceId"
        },
        "State": {
          "locationName": "status"
        },
        "VolumeId": {
          "locationName": "volumeId"
        },
        "DeleteOnTermination": {
          "locationName": "deleteOnTermination",
          "type": "boolean"
        }
      }
    },
    "S22": {
      "type": "structure",
      "members": {
        "State": {
          "locationName": "state"
        },
        "VpcId": {
          "locationName": "vpcId"
        }
      }
    },
    "S25": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "FromPort": {
            "locationName": "fromPort",
            "type": "integer"
          },
          "IpProtocol": {
            "locationName": "ipProtocol"
          },
          "IpRanges": {
            "locationName": "ipRanges",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "CidrIp": {
                  "locationName": "cidrIp"
                },
                "Description": {
                  "locationName": "description"
                }
              }
            }
          },
          "Ipv6Ranges": {
            "locationName": "ipv6Ranges",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "CidrIpv6": {
                  "locationName": "cidrIpv6"
                },
                "Description": {
                  "locationName": "description"
                }
              }
            }
          },
          "PrefixListIds": {
            "locationName": "prefixListIds",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "Description": {
                  "locationName": "description"
                },
                "PrefixListId": {
                  "locationName": "prefixListId"
                }
              }
            }
          },
          "ToPort": {
            "locationName": "toPort",
            "type": "integer"
          },
          "UserIdGroupPairs": {
            "locationName": "groups",
            "type": "list",
            "member": {
              "shape": "S2e",
              "locationName": "item"
            }
          }
        }
      }
    },
    "S2e": {
      "type": "structure",
      "members": {
        "Description": {
          "locationName": "description"
        },
        "GroupId": {
          "locationName": "groupId"
        },
        "GroupName": {
          "locationName": "groupName"
        },
        "PeeringStatus": {
          "locationName": "peeringStatus"
        },
        "UserId": {
          "locationName": "userId"
        },
        "VpcId": {
          "locationName": "vpcId"
        },
        "VpcPeeringConnectionId": {
          "locationName": "vpcPeeringConnectionId"
        }
      }
    },
    "S2h": {
      "type": "structure",
      "members": {
        "S3": {
          "type": "structure",
          "members": {
            "AWSAccessKeyId": {},
            "Bucket": {
              "locationName": "bucket"
            },
            "Prefix": {
              "locationName": "prefix"
            },
            "UploadPolicy": {
              "locationName": "uploadPolicy",
              "type": "blob"
            },
            "UploadPolicySignature": {
              "locationName": "uploadPolicySignature"
            }
          }
        }
      }
    },
    "S2l": {
      "type": "structure",
      "members": {
        "BundleId": {
          "locationName": "bundleId"
        },
        "BundleTaskError": {
          "locationName": "error",
          "type": "structure",
          "members": {
            "Code": {
              "locationName": "code"
            },
            "Message": {
              "locationName": "message"
            }
          }
        },
        "InstanceId": {
          "locationName": "instanceId"
        },
        "Progress": {
          "locationName": "progress"
        },
        "StartTime": {
          "locationName": "startTime",
          "type": "timestamp"
        },
        "State": {
          "locationName": "state"
        },
        "Storage": {
          "shape": "S2h",
          "locationName": "storage"
        },
        "UpdateTime": {
          "locationName": "updateTime",
          "type": "timestamp"
        }
      }
    },
    "S2w": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "ClientToken": {
            "locationName": "clientToken"
          },
          "CreateDate": {
            "locationName": "createDate",
            "type": "timestamp"
          },
          "InstanceCounts": {
            "locationName": "instanceCounts",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "InstanceCount": {
                  "locationName": "instanceCount",
                  "type": "integer"
                },
                "State": {
                  "locationName": "state"
                }
              }
            }
          },
          "PriceSchedules": {
            "locationName": "priceSchedules",
            "type": "list",
            "member": {
              "locationName": "item",
              "type": "structure",
              "members": {
                "Active": {
                  "locationName": "active",
                  "type": "boolean"
                },
                "CurrencyCode": {
                  "locationName": "currencyCode"
                },
                "Price": {
                  "locationName": "price",
                  "type": "double"
                },
                "Term": {
                  "locationName": "term",
                  "type": "long"
                }
              }
            }
          },
          "ReservedInstancesId": {
            "locationName": "reservedInstancesId"
          },
          "ReservedInstancesListingId": {
            "locationName": "reservedInstancesListingId"
          },
          "Status": {
            "locationName": "status"
          },
          "StatusMessage": {
            "locationName": "statusMessage"
          },
          "Tags": {
            "shape": "Sr",
            "locationName": "tagSet"
          },
          "UpdateDate": {
            "locationName": "updateDate",
            "type": "timestamp"
          }
        }
      }
    },
    "S3h": {
      "type": "list",
      "member": {
        "locationName": "SpotInstanceRequestId"
      }
    },
    "S3x": {
      "type": "structure",
      "members": {
        "BgpAsn": {
          "locationName": "bgpAsn"
        },
        "CustomerGatewayId": {
          "locationName": "customerGatewayId"
        },
        "IpAddress": {
          "locationName": "ipAddress"
        },
        "State": {
          "locationName": "state"
        },
        "Type": {
          "locationName": "type"
        },
        "Tags": {
          "shape": "Sr",
          "locationName": "tagSet"
        }
      }
    },
    "S40": {
      "type": "structure",
      "members": {
        "AvailabilityZone": {
          "locationName": "availabilityZone"
        },
        "AvailableIpAddressCount": {
          "locationName": "availableIpAddressCount",
          "type": "integer"
        },
        "CidrBlock": {
          "locationName": "cidrBlock"
        },
        "DefaultForAz": {
          "locationName": "defaultForAz",
          "type": "boolean"
        },
        "MapPublicIpOnLaunch": {
          "locationName": "mapPublicIpOnLaunch",
          "type": "boolean"
        },
        "State": {
          "locationName": "state"
        },
        "SubnetId": {
          "locationName": "subnetId"
        },
        "VpcId": {
          "locationName": "vpcId"
        },
        "AssignIpv6AddressOnCreation": {
          "locationName": "assignIpv6AddressOnCreation",
          "type": "boolean"
        },
        "Ipv6CidrBlockAssociationSet": {
          "locationName": "ipv6CidrBlockAssociationSet",
          "type": "list",
          "member": {
            "shape": "S1i",
            "locationName": "item"
          }
        },
        "Tags": {
          "shape": "Sr",
          "locationName": "tagSet"
        }
      }
    },
    "S45": {
      "type": "structure",
      "members": {
        "CidrBlock": {
          "locationName": "cidrBlock"
        },
        "DhcpOptionsId": {
          "locationName": "dhcpOptionsId"
        },
        "State": {
          "locationName": "state"
        },
        "VpcId": {
          "locationName": "vpcId"
        },
        "InstanceTenancy": {
          "locationName": "instanceTenancy"
        },
        "Ipv6CidrBlockAssociationSet": {
          "locationName": "ipv6CidrBlockAssociationSet",
          "type": "list",
          "member": {
            "shape": "S1n",
            "locationName": "item"
          }
        },
        "CidrBlockAssociationSet": {
          "locationName": "cidrBlockAssociationSet",
          "type": "list",
          "member": {
            "shape": "S1q",
            "locationName": "item"
          }
        },
        "IsDefault": {
          "locationName": "isDefault",
          "type": "boolean"
        },
        "Tags": {
          "shape": "Sr",
          "locationName": "tagSet"
        }
      }
    },
    "S4e": {
      "type": "structure",
      "members": {
        "DhcpConfigurations": {
          "locationName": "dhcpConfigurationSet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "Key": {
                "locationName": "key"
              },
              "Values": {
                "locationName": "valueSet",
                "type": "list",
                "member": {
                  "shape": "S4i",
                  "locationName": "item"
                }
              }
            }
          }
        },
        "DhcpOptionsId": {
          "locationName": "dhcpOptionsId"
        },
        "Tags": {
          "shape": "Sr",
          "locationName": "tagSet"
        }
      }
    },
    "S4i": {
      "type": "structure",
      "members": {
        "Value": {
          "locationName": "value"
        }
      }
    },
    "S4l": {
      "type": "structure",
      "members": {
        "Attachments": {
          "shape": "S4m",
          "locationName": "attachmentSet"
        },
        "EgressOnlyInternetGatewayId": {
          "locationName": "egressOnlyInternetGatewayId"
        }
      }
    },
    "S4m": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "State": {
            "locationName": "state"
          },
          "VpcId": {
            "locationName": "vpcId"
          }
        }
      }
    },
    "S4u": {
      "type": "structure",
      "members": {
        "Bucket": {},
        "Key": {}
      }
    },
    "S4x": {
      "type": "list",
      "member": {
        "shape": "S4y",
        "locationName": "BlockDeviceMapping"
      }
    },
    "S4y": {
      "type": "structure",
      "members": {
        "DeviceName": {
          "locationName": "deviceName"
        },
        "VirtualName": {
          "locationName": "virtualName"
        },
        "Ebs": {
          "locationName": "ebs",
          "type": "structure",
          "members": {
            "Encrypted": {
              "locationName": "encrypted",
              "type": "boolean"
            },
            "DeleteOnTermination": {
              "locationName": "deleteOnTermination",
              "type": "boolean"
            },
            "Iops": {
              "locationName": "iops",
              "type": "integer"
            },
            "KmsKeyId": {},
            "SnapshotId": {
              "locationName": "snapshotId"
            },
            "VolumeSize": {
              "locationName": "volumeSize",
              "type": "integer"
            },
            "VolumeType": {
              "locationName": "volumeType"
            }
          }
        },
        "NoDevice": {
          "locationName": "noDevice"
        }
      }
    },
    "S58": {
      "type": "structure",
      "members": {
        "Description": {
          "locationName": "description"
        },
        "ExportTaskId": {
          "locationName": "exportTaskId"
        },
        "ExportToS3Task": {
          "locationName": "exportToS3",
          "type": "structure",
          "members": {
            "ContainerFormat": {
              "locationName": "containerFormat"
            },
            "DiskImageFormat": {
              "locationName": "diskImageFormat"
            },
            "S3Bucket": {
              "locationName": "s3Bucket"
            },
            "S3Key": {
              "locationName": "s3Key"
            }
          }
        },
        "InstanceExportDetails": {
          "locationName": "instanceExport",
          "type": "structure",
          "members": {
            "InstanceId": {
              "locationName": "instanceId"
            },
            "TargetEnvironment": {
              "locationName": "targetEnvironment"
            }
          }
        },
        "State": {
          "locationName": "state"
        },
        "StatusMessage": {
          "locationName": "statusMessage"
        }
      }
    },
    "S5e": {
      "type": "structure",
      "members": {
        "Attachments": {
          "shape": "S4m",
          "locationName": "attachmentSet"
        },
        "InternetGatewayId": {
          "locationName": "internetGatewayId"
        },
        "Tags": {
          "shape": "Sr",
          "locationName": "tagSet"
        }
      }
    },
    "S5k": {
      "type": "structure",
      "members": {
        "KernelId": {},
        "EbsOptimized": {
          "type": "boolean"
        },
        "IamInstanceProfile": {
          "type": "structure",
          "members": {
            "Arn": {},
            "Name": {}
          }
        },
        "BlockDeviceMappings": {
          "locationName": "BlockDeviceMapping",
          "type": "list",
          "member": {
            "locationName": "BlockDeviceMapping",
            "type": "structure",
            "members": {
              "DeviceName": {},
              "VirtualName": {},
              "Ebs": {
                "type": "structure",
                "members": {
                  "Encrypted": {
                    "type": "boolean"
                  },
                  "DeleteOnTermination": {
                    "type": "boolean"
                  },
                  "Iops": {
                    "type": "integer"
                  },
                  "KmsKeyId": {},
                  "SnapshotId": {},
                  "VolumeSize": {
                    "type": "integer"
                  },
                  "VolumeType": {}
                }
              },
              "NoDevice": {}
            }
          }
        },
        "NetworkInterfaces": {
          "locationName": "NetworkInterface",
          "type": "list",
          "member": {
            "locationName": "InstanceNetworkInterfaceSpecification",
            "type": "structure",
            "members": {
              "AssociatePublicIpAddress": {
                "type": "boolean"
              },
              "DeleteOnTermination": {
                "type": "boolean"
              },
              "Description": {},
              "DeviceIndex": {
                "type": "integer"
              },
              "Groups": {
                "shape": "S5r",
                "locationName": "SecurityGroupId"
              },
              "Ipv6AddressCount": {
                "type": "integer"
              },
              "Ipv6Addresses": {
                "type": "list",
                "member": {
                  "locationName": "InstanceIpv6Address",
                  "type": "structure",
                  "members": {
                    "Ipv6Address": {}
                  }
                }
              },
              "NetworkInterfaceId": {},
              "PrivateIpAddress": {},
              "PrivateIpAddresses": {
                "shape": "S5u"
              },
              "SecondaryPrivateIpAddressCount": {
                "type": "integer"
              },
              "SubnetId": {}
            }
          }
        },
        "ImageId": {},
        "InstanceType": {},
        "KeyName": {},
        "Monitoring": {
          "type": "structure",
          "members": {
            "Enabled": {
              "type": "boolean"
            }
          }
        },
        "Placement": {
          "type": "structure",
          "members": {
            "AvailabilityZone": {},
            "Affinity": {},
            "GroupName": {},
            "HostId": {},
            "Tenancy": {},
            "SpreadDomain": {}
          }
        },
        "RamDiskId": {},
        "DisableApiTermination": {
          "type": "boolean"
        },
        "InstanceInitiatedShutdownBehavior": {},
        "UserData": {},
        "TagSpecifications": {
          "locationName": "TagSpecification",
          "type": "list",
          "member": {
            "locationName": "LaunchTemplateTagSpecificationRequest",
            "type": "structure",
            "members": {
              "ResourceType": {},
              "Tags": {
                "shape": "Sr",
                "locationName": "Tag"
              }
            }
          }
        },
        "ElasticGpuSpecifications": {
          "locationName": "ElasticGpuSpecification",
          "type": "list",
          "member": {
            "shape": "S64",
            "locationName": "ElasticGpuSpecification"
          }
        },
        "SecurityGroupIds": {
          "shape": "S5r",
          "locationName": "SecurityGroupId"
        },
        "SecurityGroups": {
          "shape": "S65",
          "locationName": "SecurityGroup"
        },
        "InstanceMarketOptions": {
          "type": "structure",
          "members": {
            "MarketType": {},
            "SpotOptions": {
              "type": "structure",
              "members": {
                "MaxPrice": {},
                "SpotInstanceType": {},
                "BlockDurationMinutes": {
                  "type": "integer"
                },
                "ValidUntil": {
                  "type": "timestamp"
                },
                "InstanceInterruptionBehavior": {}
              }
            }
          }
        },
        "CreditSpecification": {
          "shape": "S6b"
        }
      }
    },
    "S5r": {
      "type": "list",
      "member": {
        "locationName": "SecurityGroupId"
      }
    },
    "S5u": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "required": [
          "PrivateIpAddress"
        ],
        "members": {
          "Primary": {
            "locationName": "primary",
            "type": "boolean"
          },
          "PrivateIpAddress": {
            "locationName": "privateIpAddress"
          }
        }
      }
    },
    "S64": {
      "type": "structure",
      "required": [
        "Type"
      ],
      "members": {
        "Type": {}
      }
    },
    "S65": {
      "type": "list",
      "member": {
        "locationName": "SecurityGroup"
      }
    },
    "S6b": {
      "type": "structure",
      "required": [
        "CpuCredits"
      ],
      "members": {
        "CpuCredits": {}
      }
    },
    "S6d": {
      "type": "structure",
      "members": {
        "LaunchTemplateId": {
          "locationName": "launchTemplateId"
        },
        "LaunchTemplateName": {
          "locationName": "launchTemplateName"
        },
        "CreateTime": {
          "locationName": "createTime",
          "type": "timestamp"
        },
        "CreatedBy": {
          "locationName": "createdBy"
        },
        "DefaultVersionNumber": {
          "locationName": "defaultVersionNumber",
          "type": "long"
        },
        "LatestVersionNumber": {
          "locationName": "latestVersionNumber",
          "type": "long"
        },
        "Tags": {
          "shape": "Sr",
          "locationName": "tagSet"
        }
      }
    },
    "S6g": {
      "type": "structure",
      "members": {
        "LaunchTemplateId": {
          "locationName": "launchTemplateId"
        },
        "LaunchTemplateName": {
          "locationName": "launchTemplateName"
        },
        "VersionNumber": {
          "locationName": "versionNumber",
          "type": "long"
        },
        "VersionDescription": {
          "locationName": "versionDescription"
        },
        "CreateTime": {
          "locationName": "createTime",
          "type": "timestamp"
        },
        "CreatedBy": {
          "locationName": "createdBy"
        },
        "DefaultVersion": {
          "locationName": "defaultVersion",
          "type": "boolean"
        },
        "LaunchTemplateData": {
          "shape": "S6h",
          "locationName": "launchTemplateData"
        }
      }
    },
    "S6h": {
      "type": "structure",
      "members": {
        "KernelId": {
          "locationName": "kernelId"
        },
        "EbsOptimized": {
          "locationName": "ebsOptimized",
          "type": "boolean"
        },
        "IamInstanceProfile": {
          "locationName": "iamInstanceProfile",
          "type": "structure",
          "members": {
            "Arn": {
              "locationName": "arn"
            },
            "Name": {
              "locationName": "name"
            }
          }
        },
        "BlockDeviceMappings": {
          "locationName": "blockDeviceMappingSet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "DeviceName": {
                "locationName": "deviceName"
              },
              "VirtualName": {
                "locationName": "virtualName"
              },
              "Ebs": {
                "locationName": "ebs",
                "type": "structure",
                "members": {
                  "Encrypted": {
                    "locationName": "encrypted",
                    "type": "boolean"
                  },
                  "DeleteOnTermination": {
                    "locationName": "deleteOnTermination",
                    "type": "boolean"
                  },
                  "Iops": {
                    "locationName": "iops",
                    "type": "integer"
                  },
                  "KmsKeyId": {
                    "locationName": "kmsKeyId"
                  },
                  "SnapshotId": {
                    "locationName": "snapshotId"
                  },
                  "VolumeSize": {
                    "locationName": "volumeSize",
                    "type": "integer"
                  },
                  "VolumeType": {
                    "locationName": "volumeType"
                  }
                }
              },
              "NoDevice": {
                "locationName": "noDevice"
              }
            }
          }
        },
        "NetworkInterfaces": {
          "locationName": "networkInterfaceSet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "AssociatePublicIpAddress": {
                "locationName": "associatePublicIpAddress",
                "type": "boolean"
              },
              "DeleteOnTermination": {
                "locationName": "deleteOnTermination",
                "type": "boolean"
              },
              "Description": {
                "locationName": "description"
              },
              "DeviceIndex": {
                "locationName": "deviceIndex",
                "type": "integer"
              },
              "Groups": {
                "shape": "S1s",
                "locationName": "groupSet"
              },
              "Ipv6AddressCount": {
                "locationName": "ipv6AddressCount",
                "type": "integer"
              },
              "Ipv6Addresses": {
                "shape": "S6o",
                "locationName": "ipv6AddressesSet"
              },
              "NetworkInterfaceId": {
                "locationName": "networkInterfaceId"
              },
              "PrivateIpAddress": {
                "locationName": "privateIpAddress"
              },
              "PrivateIpAddresses": {
                "shape": "S5u",
                "locationName": "privateIpAddressesSet"
              },
              "SecondaryPrivateIpAddressCount": {
                "locationName": "secondaryPrivateIpAddressCount",
                "type": "integer"
              },
              "SubnetId": {
                "locationName": "subnetId"
              }
            }
          }
        },
        "ImageId": {
          "locationName": "imageId"
        },
        "InstanceType": {
          "locationName": "instanceType"
        },
        "KeyName": {
          "locationName": "keyName"
        },
        "Monitoring": {
          "locationName": "monitoring",
          "type": "structure",
          "members": {
            "Enabled": {
              "locationName": "enabled",
              "type": "boolean"
            }
          }
        },
        "Placement": {
          "locationName": "placement",
          "type": "structure",
          "members": {
            "AvailabilityZone": {
              "locationName": "availabilityZone"
            },
            "Affinity": {
              "locationName": "affinity"
            },
            "GroupName": {
              "locationName": "groupName"
            },
            "HostId": {
              "locationName": "hostId"
            },
            "Tenancy": {
              "locationName": "tenancy"
            },
            "SpreadDomain": {
              "locationName": "spreadDomain"
            }
          }
        },
        "RamDiskId": {
          "locationName": "ramDiskId"
        },
        "DisableApiTermination": {
          "locationName": "disableApiTermination",
          "type": "boolean"
        },
        "InstanceInitiatedShutdownBehavior": {
          "locationName": "instanceInitiatedShutdownBehavior"
        },
        "UserData": {
          "locationName": "userData"
        },
        "TagSpecifications": {
          "locationName": "tagSpecificationSet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "ResourceType": {
                "locationName": "resourceType"
              },
              "Tags": {
                "shape": "Sr",
                "locationName": "tagSet"
              }
            }
          }
        },
        "ElasticGpuSpecifications": {
          "locationName": "elasticGpuSpecificationSet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "Type": {
                "locationName": "type"
              }
            }
          }
        },
        "SecurityGroupIds": {
          "shape": "Sa",
          "locationName": "securityGroupIdSet"
        },
        "SecurityGroups": {
          "shape": "Sa",
          "locationName": "securityGroupSet"
        },
        "InstanceMarketOptions": {
          "locationName": "instanceMarketOptions",
          "type": "structure",
          "members": {
            "MarketType": {
              "locationName": "marketType"
            },
            "SpotOptions": {
              "locationName": "spotOptions",
              "type": "structure",
              "members": {
                "MaxPrice": {
                  "locationName": "maxPrice"
                },
                "SpotInstanceType": {
                  "locationName": "spotInstanceType"
                },
                "BlockDurationMinutes": {
                  "locationName": "blockDurationMinutes",
                  "type": "integer"
                },
                "ValidUntil": {
                  "locationName": "validUntil",
                  "type": "timestamp"
                },
                "InstanceInterruptionBehavior": {
                  "locationName": "instanceInterruptionBehavior"
                }
              }
            }
          }
        },
        "CreditSpecification": {
          "locationName": "creditSpecification",
          "type": "structure",
          "members": {
            "CpuCredits": {
              "locationName": "cpuCredits"
            }
          }
        }
      }
    },
    "S6o": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "Ipv6Address": {
            "locationName": "ipv6Address"
          }
        }
      }
    },
    "S71": {
      "type": "structure",
      "members": {
        "CreateTime": {
          "locationName": "createTime",
          "type": "timestamp"
        },
        "DeleteTime": {
          "locationName": "deleteTime",
          "type": "timestamp"
        },
        "FailureCode": {
          "locationName": "failureCode"
        },
        "FailureMessage": {
          "locationName": "failureMessage"
        },
        "NatGatewayAddresses": {
          "locationName": "natGatewayAddressSet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "AllocationId": {
                "locationName": "allocationId"
              },
              "NetworkInterfaceId": {
                "locationName": "networkInterfaceId"
              },
              "PrivateIp": {
                "locationName": "privateIp"
              },
              "PublicIp": {
                "locationName": "publicIp"
              }
            }
          }
        },
        "NatGatewayId": {
          "locationName": "natGatewayId"
        },
        "ProvisionedBandwidth": {
          "locationName": "provisionedBandwidth",
          "type": "structure",
          "members": {
            "ProvisionTime": {
              "locationName": "provisionTime",
              "type": "timestamp"
            },
            "Provisioned": {
              "locationName": "provisioned"
            },
            "RequestTime": {
              "locationName": "requestTime",
              "type": "timestamp"
            },
            "Requested": {
              "locationName": "requested"
            },
            "Status": {
              "locationName": "status"
            }
          }
        },
        "State": {
          "locationName": "state"
        },
        "SubnetId": {
          "locationName": "subnetId"
        },
        "VpcId": {
          "locationName": "vpcId"
        },
        "Tags": {
          "shape": "Sr",
          "locationName": "tagSet"
        }
      }
    },
    "S78": {
      "type": "structure",
      "members": {
        "Associations": {
          "locationName": "associationSet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "NetworkAclAssociationId": {
                "locationName": "networkAclAssociationId"
              },
              "NetworkAclId": {
                "locationName": "networkAclId"
              },
              "SubnetId": {
                "locationName": "subnetId"
              }
            }
          }
        },
        "Entries": {
          "locationName": "entrySet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "CidrBlock": {
                "locationName": "cidrBlock"
              },
              "Egress": {
                "locationName": "egress",
                "type": "boolean"
              },
              "IcmpTypeCode": {
                "shape": "S7d",
                "locationName": "icmpTypeCode"
              },
              "Ipv6CidrBlock": {
                "locationName": "ipv6CidrBlock"
              },
              "PortRange": {
                "shape": "S7e",
                "locationName": "portRange"
              },
              "Protocol": {
                "locationName": "protocol"
              },
              "RuleAction": {
                "locationName": "ruleAction"
              },
              "RuleNumber": {
                "locationName": "ruleNumber",
                "type": "integer"
              }
            }
          }
        },
        "IsDefault": {
          "locationName": "default",
          "type": "boolean"
        },
        "NetworkAclId": {
          "locationName": "networkAclId"
        },
        "Tags": {
          "shape": "Sr",
          "locationName": "tagSet"
        },
        "VpcId": {
          "locationName": "vpcId"
        }
      }
    },
    "S7d": {
      "type": "structure",
      "members": {
        "Code": {
          "locationName": "code",
          "type": "integer"
        },
        "Type": {
          "locationName": "type",
          "type": "integer"
        }
      }
    },
    "S7e": {
      "type": "structure",
      "members": {
        "From": {
          "locationName": "from",
          "type": "integer"
        },
        "To": {
          "locationName": "to",
          "type": "integer"
        }
      }
    },
    "S7j": {
      "type": "structure",
      "members": {
        "Association": {
          "shape": "S7k",
          "locationName": "association"
        },
        "Attachment": {
          "shape": "S7l",
          "locationName": "attachment"
        },
        "AvailabilityZone": {
          "locationName": "availabilityZone"
        },
        "Description": {
          "locationName": "description"
        },
        "Groups": {
          "shape": "S7m",
          "locationName": "groupSet"
        },
        "InterfaceType": {
          "locationName": "interfaceType"
        },
        "Ipv6Addresses": {
          "locationName": "ipv6AddressesSet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "Ipv6Address": {
                "locationName": "ipv6Address"
              }
            }
          }
        },
        "MacAddress": {
          "locationName": "macAddress"
        },
        "NetworkInterfaceId": {
          "locationName": "networkInterfaceId"
        },
        "OwnerId": {
          "locationName": "ownerId"
        },
        "PrivateDnsName": {
          "locationName": "privateDnsName"
        },
        "PrivateIpAddress": {
          "locationName": "privateIpAddress"
        },
        "PrivateIpAddresses": {
          "locationName": "privateIpAddressesSet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "Association": {
                "shape": "S7k",
                "locationName": "association"
              },
              "Primary": {
                "locationName": "primary",
                "type": "boolean"
              },
              "PrivateDnsName": {
                "locationName": "privateDnsName"
              },
              "PrivateIpAddress": {
                "locationName": "privateIpAddress"
              }
            }
          }
        },
        "RequesterId": {
          "locationName": "requesterId"
        },
        "RequesterManaged": {
          "locationName": "requesterManaged",
          "type": "boolean"
        },
        "SourceDestCheck": {
          "locationName": "sourceDestCheck",
          "type": "boolean"
        },
        "Status": {
          "locationName": "status"
        },
        "SubnetId": {
          "locationName": "subnetId"
        },
        "TagSet": {
          "shape": "Sr",
          "locationName": "tagSet"
        },
        "VpcId": {
          "locationName": "vpcId"
        }
      }
    },
    "S7k": {
      "type": "structure",
      "members": {
        "AllocationId": {
          "locationName": "allocationId"
        },
        "AssociationId": {
          "locationName": "associationId"
        },
        "IpOwnerId": {
          "locationName": "ipOwnerId"
        },
        "PublicDnsName": {
          "locationName": "publicDnsName"
        },
        "PublicIp": {
          "locationName": "publicIp"
        }
      }
    },
    "S7l": {
      "type": "structure",
      "members": {
        "AttachTime": {
          "locationName": "attachTime",
          "type": "timestamp"
        },
        "AttachmentId": {
          "locationName": "attachmentId"
        },
        "DeleteOnTermination": {
          "locationName": "deleteOnTermination",
          "type": "boolean"
        },
        "DeviceIndex": {
          "locationName": "deviceIndex",
          "type": "integer"
        },
        "InstanceId": {
          "locationName": "instanceId"
        },
        "InstanceOwnerId": {
          "locationName": "instanceOwnerId"
        },
        "Status": {
          "locationName": "status"
        }
      }
    },
    "S7m": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "GroupName": {
            "locationName": "groupName"
          },
          "GroupId": {
            "locationName": "groupId"
          }
        }
      }
    },
    "S7x": {
      "type": "structure",
      "members": {
        "NetworkInterfacePermissionId": {
          "locationName": "networkInterfacePermissionId"
        },
        "NetworkInterfaceId": {
          "locationName": "networkInterfaceId"
        },
        "AwsAccountId": {
          "locationName": "awsAccountId"
        },
        "AwsService": {
          "locationName": "awsService"
        },
        "Permission": {
          "locationName": "permission"
        },
        "PermissionState": {
          "locationName": "permissionState",
          "type": "structure",
          "members": {
            "State": {
              "locationName": "state"
            },
            "StatusMessage": {
              "locationName": "statusMessage"
            }
          }
        }
      }
    },
    "S8a": {
      "type": "structure",
      "members": {
        "Associations": {
          "locationName": "associationSet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "Main": {
                "locationName": "main",
                "type": "boolean"
              },
              "RouteTableAssociationId": {
                "locationName": "routeTableAssociationId"
              },
              "RouteTableId": {
                "locationName": "routeTableId"
              },
              "SubnetId": {
                "locationName": "subnetId"
              }
            }
          }
        },
        "PropagatingVgws": {
          "locationName": "propagatingVgwSet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "GatewayId": {
                "locationName": "gatewayId"
              }
            }
          }
        },
        "RouteTableId": {
          "locationName": "routeTableId"
        },
        "Routes": {
          "locationName": "routeSet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "DestinationCidrBlock": {
                "locationName": "destinationCidrBlock"
              },
              "DestinationIpv6CidrBlock": {
                "locationName": "destinationIpv6CidrBlock"
              },
              "DestinationPrefixListId": {
                "locationName": "destinationPrefixListId"
              },
              "EgressOnlyInternetGatewayId": {
                "locationName": "egressOnlyInternetGatewayId"
              },
              "GatewayId": {
                "locationName": "gatewayId"
              },
              "InstanceId": {
                "locationName": "instanceId"
              },
              "InstanceOwnerId": {
                "locationName": "instanceOwnerId"
              },
              "NatGatewayId": {
                "locationName": "natGatewayId"
              },
              "NetworkInterfaceId": {
                "locationName": "networkInterfaceId"
              },
              "Origin": {
                "locationName": "origin"
              },
              "State": {
                "locationName": "state"
              },
              "VpcPeeringConnectionId": {
                "locationName": "vpcPeeringConnectionId"
              }
            }
          }
        },
        "Tags": {
          "shape": "Sr",
          "locationName": "tagSet"
        },
        "VpcId": {
          "locationName": "vpcId"
        }
      }
    },
    "S8m": {
      "type": "structure",
      "members": {
        "DataEncryptionKeyId": {
          "locationName": "dataEncryptionKeyId"
        },
        "Description": {
          "locationName": "description"
        },
        "Encrypted": {
          "locationName": "encrypted",
          "type": "boolean"
        },
        "KmsKeyId": {
          "locationName": "kmsKeyId"
        },
        "OwnerId": {
          "locationName": "ownerId"
        },
        "Progress": {
          "locationName": "progress"
        },
        "SnapshotId": {
          "locationName": "snapshotId"
        },
        "StartTime": {
          "locationName": "startTime",
          "type": "timestamp"
        },
        "State": {
          "locationName": "status"
        },
        "StateMessage": {
          "locationName": "statusMessage"
        },
        "VolumeId": {
          "locationName": "volumeId"
        },
        "VolumeSize": {
          "locationName": "volumeSize",
          "type": "integer"
        },
        "OwnerAlias": {
          "locationName": "ownerAlias"
        },
        "Tags": {
          "shape": "Sr",
          "locationName": "tagSet"
        }
      }
    },
    "S8q": {
      "type": "structure",
      "members": {
        "Bucket": {
          "locationName": "bucket"
        },
        "Fault": {
          "shape": "S8r",
          "locationName": "fault"
        },
        "OwnerId": {
          "locationName": "ownerId"
        },
        "Prefix": {
          "locationName": "prefix"
        },
        "State": {
          "locationName": "state"
        }
      }
    },
    "S8r": {
      "type": "structure",
      "members": {
        "Code": {
          "locationName": "code"
        },
        "Message": {
          "locationName": "message"
        }
      }
    },
    "S8w": {
      "type": "list",
      "member": {}
    },
    "S8y": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "ResourceType": {
            "locationName": "resourceType"
          },
          "Tags": {
            "shape": "Sr",
            "locationName": "Tag"
          }
        }
      }
    },
    "S90": {
      "type": "structure",
      "members": {
        "Attachments": {
          "locationName": "attachmentSet",
          "type": "list",
          "member": {
            "shape": "S1y",
            "locationName": "item"
          }
        },
        "AvailabilityZone": {
          "locationName": "availabilityZone"
        },
        "CreateTime": {
          "locationName": "createTime",
          "type": "timestamp"
        },
        "Encrypted": {
          "locationName": "encrypted",
          "type": "boolean"
        },
        "KmsKeyId": {
          "locationName": "kmsKeyId"
        },
        "Size": {
          "locationName": "size",
          "type": "integer"
        },
        "SnapshotId": {
          "locationName": "snapshotId"
        },
        "State": {
          "locationName": "status"
        },
        "VolumeId": {
          "locationName": "volumeId"
        },
        "Iops": {
          "locationName": "iops",
          "type": "integer"
        },
        "Tags": {
          "shape": "Sr",
          "locationName": "tagSet"
        },
        "VolumeType": {
          "locationName": "volumeType"
        }
      }
    },
    "S98": {
      "type": "structure",
      "members": {
        "VpcEndpointId": {
          "locationName": "vpcEndpointId"
        },
        "VpcEndpointType": {
          "locationName": "vpcEndpointType"
        },
        "VpcId": {
          "locationName": "vpcId"
        },
        "ServiceName": {
          "locationName": "serviceName"
        },
        "State": {
          "locationName": "state"
        },
        "PolicyDocument": {
          "locationName": "policyDocument"
        },
        "RouteTableIds": {
          "shape": "Sa",
          "locationName": "routeTableIdSet"
        },
        "SubnetIds": {
          "shape": "Sa",
          "locationName": "subnetIdSet"
        },
        "Groups": {
          "locationName": "groupSet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "GroupId": {
                "locationName": "groupId"
              },
              "GroupName": {
                "locationName": "groupName"
              }
            }
          }
        },
        "PrivateDnsEnabled": {
          "locationName": "privateDnsEnabled",
          "type": "boolean"
        },
        "NetworkInterfaceIds": {
          "shape": "Sa",
          "locationName": "networkInterfaceIdSet"
        },
        "DnsEntries": {
          "locationName": "dnsEntrySet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "DnsName": {
                "locationName": "dnsName"
              },
              "HostedZoneId": {
                "locationName": "hostedZoneId"
              }
            }
          }
        },
        "CreationTimestamp": {
          "locationName": "creationTimestamp",
          "type": "timestamp"
        }
      }
    },
    "S9g": {
      "type": "structure",
      "members": {
        "ConnectionNotificationId": {
          "locationName": "connectionNotificationId"
        },
        "ServiceId": {
          "locationName": "serviceId"
        },
        "VpcEndpointId": {
          "locationName": "vpcEndpointId"
        },
        "ConnectionNotificationType": {
          "locationName": "connectionNotificationType"
        },
        "ConnectionNotificationArn": {
          "locationName": "connectionNotificationArn"
        },
        "ConnectionEvents": {
          "shape": "Sa",
          "locationName": "connectionEvents"
        },
        "ConnectionNotificationState": {
          "locationName": "connectionNotificationState"
        }
      }
    },
    "S9l": {
      "type": "structure",
      "members": {
        "ServiceType": {
          "shape": "S9m",
          "locationName": "serviceType"
        },
        "ServiceId": {
          "locationName": "serviceId"
        },
        "ServiceName": {
          "locationName": "serviceName"
        },
        "ServiceState": {
          "locationName": "serviceState"
        },
        "AvailabilityZones": {
          "shape": "Sa",
          "locationName": "availabilityZoneSet"
        },
        "AcceptanceRequired": {
          "locationName": "acceptanceRequired",
          "type": "boolean"
        },
        "NetworkLoadBalancerArns": {
          "shape": "Sa",
          "locationName": "networkLoadBalancerArnSet"
        },
        "BaseEndpointDnsNames": {
          "shape": "Sa",
          "locationName": "baseEndpointDnsNameSet"
        },
        "PrivateDnsName": {
          "locationName": "privateDnsName"
        }
      }
    },
    "S9m": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "ServiceType": {
            "locationName": "serviceType"
          }
        }
      }
    },
    "S9x": {
      "type": "structure",
      "members": {
        "CustomerGatewayConfiguration": {
          "locationName": "customerGatewayConfiguration"
        },
        "CustomerGatewayId": {
          "locationName": "customerGatewayId"
        },
        "Category": {
          "locationName": "category"
        },
        "State": {
          "locationName": "state"
        },
        "Type": {
          "locationName": "type"
        },
        "VpnConnectionId": {
          "locationName": "vpnConnectionId"
        },
        "VpnGatewayId": {
          "locationName": "vpnGatewayId"
        },
        "Options": {
          "locationName": "options",
          "type": "structure",
          "members": {
            "StaticRoutesOnly": {
              "locationName": "staticRoutesOnly",
              "type": "boolean"
            }
          }
        },
        "Routes": {
          "locationName": "routes",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "DestinationCidrBlock": {
                "locationName": "destinationCidrBlock"
              },
              "Source": {
                "locationName": "source"
              },
              "State": {
                "locationName": "state"
              }
            }
          }
        },
        "Tags": {
          "shape": "Sr",
          "locationName": "tagSet"
        },
        "VgwTelemetry": {
          "locationName": "vgwTelemetry",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "AcceptedRouteCount": {
                "locationName": "acceptedRouteCount",
                "type": "integer"
              },
              "LastStatusChange": {
                "locationName": "lastStatusChange",
                "type": "timestamp"
              },
              "OutsideIpAddress": {
                "locationName": "outsideIpAddress"
              },
              "Status": {
                "locationName": "status"
              },
              "StatusMessage": {
                "locationName": "statusMessage"
              }
            }
          }
        }
      }
    },
    "Sa9": {
      "type": "structure",
      "members": {
        "AvailabilityZone": {
          "locationName": "availabilityZone"
        },
        "State": {
          "locationName": "state"
        },
        "Type": {
          "locationName": "type"
        },
        "VpcAttachments": {
          "locationName": "attachments",
          "type": "list",
          "member": {
            "shape": "S22",
            "locationName": "item"
          }
        },
        "VpnGatewayId": {
          "locationName": "vpnGatewayId"
        },
        "AmazonSideAsn": {
          "locationName": "amazonSideAsn",
          "type": "long"
        },
        "Tags": {
          "shape": "Sr",
          "locationName": "tagSet"
        }
      }
    },
    "Sao": {
      "type": "list",
      "member": {
        "locationName": "item"
      }
    },
    "Sby": {
      "type": "list",
      "member": {
        "locationName": "Filter",
        "type": "structure",
        "members": {
          "Name": {},
          "Values": {
            "shape": "Sa",
            "locationName": "Value"
          }
        }
      }
    },
    "Sci": {
      "type": "list",
      "member": {
        "locationName": "InstanceId"
      }
    },
    "Scq": {
      "type": "structure",
      "required": [
        "ConversionTaskId",
        "State"
      ],
      "members": {
        "ConversionTaskId": {
          "locationName": "conversionTaskId"
        },
        "ExpirationTime": {
          "locationName": "expirationTime"
        },
        "ImportInstance": {
          "locationName": "importInstance",
          "type": "structure",
          "required": [
            "Volumes"
          ],
          "members": {
            "Description": {
              "locationName": "description"
            },
            "InstanceId": {
              "locationName": "instanceId"
            },
            "Platform": {
              "locationName": "platform"
            },
            "Volumes": {
              "locationName": "volumes",
              "type": "list",
              "member": {
                "locationName": "item",
                "type": "structure",
                "required": [
                  "AvailabilityZone",
                  "BytesConverted",
                  "Image",
                  "Status",
                  "Volume"
                ],
                "members": {
                  "AvailabilityZone": {
                    "locationName": "availabilityZone"
                  },
                  "BytesConverted": {
                    "locationName": "bytesConverted",
                    "type": "long"
                  },
                  "Description": {
                    "locationName": "description"
                  },
                  "Image": {
                    "shape": "Scv",
                    "locationName": "image"
                  },
                  "Status": {
                    "locationName": "status"
                  },
                  "StatusMessage": {
                    "locationName": "statusMessage"
                  },
                  "Volume": {
                    "shape": "Scw",
                    "locationName": "volume"
                  }
                }
              }
            }
          }
        },
        "ImportVolume": {
          "locationName": "importVolume",
          "type": "structure",
          "required": [
            "AvailabilityZone",
            "BytesConverted",
            "Image",
            "Volume"
          ],
          "members": {
            "AvailabilityZone": {
              "locationName": "availabilityZone"
            },
            "BytesConverted": {
              "locationName": "bytesConverted",
              "type": "long"
            },
            "Description": {
              "locationName": "description"
            },
            "Image": {
              "shape": "Scv",
              "locationName": "image"
            },
            "Volume": {
              "shape": "Scw",
              "locationName": "volume"
            }
          }
        },
        "State": {
          "locationName": "state"
        },
        "StatusMessage": {
          "locationName": "statusMessage"
        },
        "Tags": {
          "shape": "Sr",
          "locationName": "tagSet"
        }
      }
    },
    "Scv": {
      "type": "structure",
      "required": [
        "Format",
        "ImportManifestUrl",
        "Size"
      ],
      "members": {
        "Checksum": {
          "locationName": "checksum"
        },
        "Format": {
          "locationName": "format"
        },
        "ImportManifestUrl": {
          "locationName": "importManifestUrl"
        },
        "Size": {
          "locationName": "size",
          "type": "long"
        }
      }
    },
    "Scw": {
      "type": "structure",
      "required": [
        "Id"
      ],
      "members": {
        "Id": {
          "locationName": "id"
        },
        "Size": {
          "locationName": "size",
          "type": "long"
        }
      }
    },
    "Sdu": {
      "type": "structure",
      "members": {
        "FpgaImageId": {
          "locationName": "fpgaImageId"
        },
        "Name": {
          "locationName": "name"
        },
        "Description": {
          "locationName": "description"
        },
        "LoadPermissions": {
          "locationName": "loadPermissions",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "UserId": {
                "locationName": "userId"
              },
              "Group": {
                "locationName": "group"
              }
            }
          }
        },
        "ProductCodes": {
          "shape": "Sdy",
          "locationName": "productCodes"
        }
      }
    },
    "Sdy": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "ProductCodeId": {
            "locationName": "productCode"
          },
          "ProductCodeType": {
            "locationName": "type"
          }
        }
      }
    },
    "Se3": {
      "type": "list",
      "member": {
        "locationName": "Owner"
      }
    },
    "Sem": {
      "type": "list",
      "member": {
        "locationName": "item"
      }
    },
    "Sep": {
      "type": "list",
      "member": {
        "locationName": "item"
      }
    },
    "Sf6": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "Deadline": {
            "locationName": "deadline",
            "type": "timestamp"
          },
          "Resource": {
            "locationName": "resource"
          },
          "UseLongIds": {
            "locationName": "useLongIds",
            "type": "boolean"
          }
        }
      }
    },
    "Sfd": {
      "type": "list",
      "member": {
        "shape": "S4y",
        "locationName": "item"
      }
    },
    "Sfe": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "Group": {
            "locationName": "group"
          },
          "UserId": {
            "locationName": "userId"
          }
        }
      }
    },
    "Sfr": {
      "type": "structure",
      "members": {
        "Code": {
          "locationName": "code"
        },
        "Message": {
          "locationName": "message"
        }
      }
    },
    "Sfu": {
      "type": "list",
      "member": {
        "locationName": "ImportTaskId"
      }
    },
    "Sfy": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "Description": {
            "locationName": "description"
          },
          "DeviceName": {
            "locationName": "deviceName"
          },
          "DiskImageSize": {
            "locationName": "diskImageSize",
            "type": "double"
          },
          "Format": {
            "locationName": "format"
          },
          "Progress": {
            "locationName": "progress"
          },
          "SnapshotId": {
            "locationName": "snapshotId"
          },
          "Status": {
            "locationName": "status"
          },
          "StatusMessage": {
            "locationName": "statusMessage"
          },
          "Url": {
            "locationName": "url"
          },
          "UserBucket": {
            "shape": "Sg0",
            "locationName": "userBucket"
          }
        }
      }
    },
    "Sg0": {
      "type": "structure",
      "members": {
        "S3Bucket": {
          "locationName": "s3Bucket"
        },
        "S3Key": {
          "locationName": "s3Key"
        }
      }
    },
    "Sg5": {
      "type": "structure",
      "members": {
        "Description": {
          "locationName": "description"
        },
        "DiskImageSize": {
          "locationName": "diskImageSize",
          "type": "double"
        },
        "Format": {
          "locationName": "format"
        },
        "Progress": {
          "locationName": "progress"
        },
        "SnapshotId": {
          "locationName": "snapshotId"
        },
        "Status": {
          "locationName": "status"
        },
        "StatusMessage": {
          "locationName": "statusMessage"
        },
        "Url": {
          "locationName": "url"
        },
        "UserBucket": {
          "shape": "Sg0",
          "locationName": "userBucket"
        }
      }
    },
    "Sg9": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "DeviceName": {
            "locationName": "deviceName"
          },
          "Ebs": {
            "locationName": "ebs",
            "type": "structure",
            "members": {
              "AttachTime": {
                "locationName": "attachTime",
                "type": "timestamp"
              },
              "DeleteOnTermination": {
                "locationName": "deleteOnTermination",
                "type": "boolean"
              },
              "Status": {
                "locationName": "status"
              },
              "VolumeId": {
                "locationName": "volumeId"
              }
            }
          }
        }
      }
    },
    "Sgc": {
      "type": "structure",
      "members": {
        "Value": {
          "locationName": "value",
          "type": "boolean"
        }
      }
    },
    "Sgo": {
      "type": "structure",
      "members": {
        "Code": {
          "locationName": "code",
          "type": "integer"
        },
        "Name": {
          "locationName": "name"
        }
      }
    },
    "Sgq": {
      "type": "structure",
      "members": {
        "Details": {
          "locationName": "details",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "ImpairedSince": {
                "locationName": "impairedSince",
                "type": "timestamp"
              },
              "Name": {
                "locationName": "name"
              },
              "Status": {
                "locationName": "status"
              }
            }
          }
        },
        "Status": {
          "locationName": "status"
        }
      }
    },
    "Sgz": {
      "type": "structure",
      "members": {
        "Groups": {
          "shape": "S7m",
          "locationName": "groupSet"
        },
        "Instances": {
          "locationName": "instancesSet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "AmiLaunchIndex": {
                "locationName": "amiLaunchIndex",
                "type": "integer"
              },
              "ImageId": {
                "locationName": "imageId"
              },
              "InstanceId": {
                "locationName": "instanceId"
              },
              "InstanceType": {
                "locationName": "instanceType"
              },
              "KernelId": {
                "locationName": "kernelId"
              },
              "KeyName": {
                "locationName": "keyName"
              },
              "LaunchTime": {
                "locationName": "launchTime",
                "type": "timestamp"
              },
              "Monitoring": {
                "shape": "Sh2",
                "locationName": "monitoring"
              },
              "Placement": {
                "shape": "Sh4",
                "locationName": "placement"
              },
              "Platform": {
                "locationName": "platform"
              },
              "PrivateDnsName": {
                "locationName": "privateDnsName"
              },
              "PrivateIpAddress": {
                "locationName": "privateIpAddress"
              },
              "ProductCodes": {
                "shape": "Sdy",
                "locationName": "productCodes"
              },
              "PublicDnsName": {
                "locationName": "dnsName"
              },
              "PublicIpAddress": {
                "locationName": "ipAddress"
              },
              "RamdiskId": {
                "locationName": "ramdiskId"
              },
              "State": {
                "shape": "Sgo",
                "locationName": "instanceState"
              },
              "StateTransitionReason": {
                "locationName": "reason"
              },
              "SubnetId": {
                "locationName": "subnetId"
              },
              "VpcId": {
                "locationName": "vpcId"
              },
              "Architecture": {
                "locationName": "architecture"
              },
              "BlockDeviceMappings": {
                "shape": "Sg9",
                "locationName": "blockDeviceMapping"
              },
              "ClientToken": {
                "locationName": "clientToken"
              },
              "EbsOptimized": {
                "locationName": "ebsOptimized",
                "type": "boolean"
              },
              "EnaSupport": {
                "locationName": "enaSupport",
                "type": "boolean"
              },
              "Hypervisor": {
                "locationName": "hypervisor"
              },
              "IamInstanceProfile": {
                "shape": "S1c",
                "locationName": "iamInstanceProfile"
              },
              "InstanceLifecycle": {
                "locationName": "instanceLifecycle"
              },
              "ElasticGpuAssociations": {
                "locationName": "elasticGpuAssociationSet",
                "type": "list",
                "member": {
                  "locationName": "item",
                  "type": "structure",
                  "members": {
                    "ElasticGpuId": {
                      "locationName": "elasticGpuId"
                    },
                    "ElasticGpuAssociationId": {
                      "locationName": "elasticGpuAssociationId"
                    },
                    "ElasticGpuAssociationState": {
                      "locationName": "elasticGpuAssociationState"
                    },
                    "ElasticGpuAssociationTime": {
                      "locationName": "elasticGpuAssociationTime"
                    }
                  }
                }
              },
              "NetworkInterfaces": {
                "locationName": "networkInterfaceSet",
                "type": "list",
                "member": {
                  "locationName": "item",
                  "type": "structure",
                  "members": {
                    "Association": {
                      "shape": "Sha",
                      "locationName": "association"
                    },
                    "Attachment": {
                      "locationName": "attachment",
                      "type": "structure",
                      "members": {
                        "AttachTime": {
                          "locationName": "attachTime",
                          "type": "timestamp"
                        },
                        "AttachmentId": {
                          "locationName": "attachmentId"
                        },
                        "DeleteOnTermination": {
                          "locationName": "deleteOnTermination",
                          "type": "boolean"
                        },
                        "DeviceIndex": {
                          "locationName": "deviceIndex",
                          "type": "integer"
                        },
                        "Status": {
                          "locationName": "status"
                        }
                      }
                    },
                    "Description": {
                      "locationName": "description"
                    },
                    "Groups": {
                      "shape": "S7m",
                      "locationName": "groupSet"
                    },
                    "Ipv6Addresses": {
                      "shape": "S6o",
                      "locationName": "ipv6AddressesSet"
                    },
                    "MacAddress": {
                      "locationName": "macAddress"
                    },
                    "NetworkInterfaceId": {
                      "locationName": "networkInterfaceId"
                    },
                    "OwnerId": {
                      "locationName": "ownerId"
                    },
                    "PrivateDnsName": {
                      "locationName": "privateDnsName"
                    },
                    "PrivateIpAddress": {
                      "locationName": "privateIpAddress"
                    },
                    "PrivateIpAddresses": {
                      "locationName": "privateIpAddressesSet",
                      "type": "list",
                      "member": {
                        "locationName": "item",
                        "type": "structure",
                        "members": {
                          "Association": {
                            "shape": "Sha",
                            "locationName": "association"
                          },
                          "Primary": {
                            "locationName": "primary",
                            "type": "boolean"
                          },
                          "PrivateDnsName": {
                            "locationName": "privateDnsName"
                          },
                          "PrivateIpAddress": {
                            "locationName": "privateIpAddress"
                          }
                        }
                      }
                    },
                    "SourceDestCheck": {
                      "locationName": "sourceDestCheck",
                      "type": "boolean"
                    },
                    "Status": {
                      "locationName": "status"
                    },
                    "SubnetId": {
                      "locationName": "subnetId"
                    },
                    "VpcId": {
                      "locationName": "vpcId"
                    }
                  }
                }
              },
              "RootDeviceName": {
                "locationName": "rootDeviceName"
              },
              "RootDeviceType": {
                "locationName": "rootDeviceType"
              },
              "SecurityGroups": {
                "shape": "S7m",
                "locationName": "groupSet"
              },
              "SourceDestCheck": {
                "locationName": "sourceDestCheck",
                "type": "boolean"
              },
              "SpotInstanceRequestId": {
                "locationName": "spotInstanceRequestId"
              },
              "SriovNetSupport": {
                "locationName": "sriovNetSupport"
              },
              "StateReason": {
                "shape": "Sfr",
                "locationName": "stateReason"
              },
              "Tags": {
                "shape": "Sr",
                "locationName": "tagSet"
              },
              "VirtualizationType": {
                "locationName": "virtualizationType"
              }
            }
          }
        },
        "OwnerId": {
          "locationName": "ownerId"
        },
        "RequesterId": {
          "locationName": "requesterId"
        },
        "ReservationId": {
          "locationName": "reservationId"
        }
      }
    },
    "Sh2": {
      "type": "structure",
      "members": {
        "State": {
          "locationName": "state"
        }
      }
    },
    "Sh4": {
      "type": "structure",
      "members": {
        "AvailabilityZone": {
          "locationName": "availabilityZone"
        },
        "Affinity": {
          "locationName": "affinity"
        },
        "GroupName": {
          "locationName": "groupName"
        },
        "HostId": {
          "locationName": "hostId"
        },
        "Tenancy": {
          "locationName": "tenancy"
        },
        "SpreadDomain": {
          "locationName": "spreadDomain"
        }
      }
    },
    "Sha": {
      "type": "structure",
      "members": {
        "IpOwnerId": {
          "locationName": "ipOwnerId"
        },
        "PublicDnsName": {
          "locationName": "publicDnsName"
        },
        "PublicIp": {
          "locationName": "publicIp"
        }
      }
    },
    "Siw": {
      "type": "list",
      "member": {
        "locationName": "ReservedInstancesId"
      }
    },
    "Sj4": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "Amount": {
            "locationName": "amount",
            "type": "double"
          },
          "Frequency": {
            "locationName": "frequency"
          }
        }
      }
    },
    "Sjh": {
      "type": "structure",
      "members": {
        "AvailabilityZone": {
          "locationName": "availabilityZone"
        },
        "InstanceCount": {
          "locationName": "instanceCount",
          "type": "integer"
        },
        "InstanceType": {
          "locationName": "instanceType"
        },
        "Platform": {
          "locationName": "platform"
        },
        "Scope": {
          "locationName": "scope"
        }
      }
    },
    "Sk1": {
      "type": "structure",
      "members": {
        "Frequency": {
          "locationName": "frequency"
        },
        "Interval": {
          "locationName": "interval",
          "type": "integer"
        },
        "OccurrenceDaySet": {
          "locationName": "occurrenceDaySet",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "integer"
          }
        },
        "OccurrenceRelativeToEnd": {
          "locationName": "occurrenceRelativeToEnd",
          "type": "boolean"
        },
        "OccurrenceUnit": {
          "locationName": "occurrenceUnit"
        }
      }
    },
    "Sk8": {
      "type": "structure",
      "members": {
        "AvailabilityZone": {
          "locationName": "availabilityZone"
        },
        "CreateDate": {
          "locationName": "createDate",
          "type": "timestamp"
        },
        "HourlyPrice": {
          "locationName": "hourlyPrice"
        },
        "InstanceCount": {
          "locationName": "instanceCount",
          "type": "integer"
        },
        "InstanceType": {
          "locationName": "instanceType"
        },
        "NetworkPlatform": {
          "locationName": "networkPlatform"
        },
        "NextSlotStartTime": {
          "locationName": "nextSlotStartTime",
          "type": "timestamp"
        },
        "Platform": {
          "locationName": "platform"
        },
        "PreviousSlotEndTime": {
          "locationName": "previousSlotEndTime",
          "type": "timestamp"
        },
        "Recurrence": {
          "shape": "Sk1",
          "locationName": "recurrence"
        },
        "ScheduledInstanceId": {
          "locationName": "scheduledInstanceId"
        },
        "SlotDurationInHours": {
          "locationName": "slotDurationInHours",
          "type": "integer"
        },
        "TermEndDate": {
          "locationName": "termEndDate",
          "type": "timestamp"
        },
        "TermStartDate": {
          "locationName": "termStartDate",
          "type": "timestamp"
        },
        "TotalScheduledInstanceHours": {
          "locationName": "totalScheduledInstanceHours",
          "type": "integer"
        }
      }
    },
    "Skf": {
      "type": "list",
      "member": {
        "locationName": "GroupName"
      }
    },
    "Skm": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "Group": {
            "locationName": "group"
          },
          "UserId": {
            "locationName": "userId"
          }
        }
      }
    },
    "Slb": {
      "type": "structure",
      "required": [
        "IamFleetRole",
        "TargetCapacity"
      ],
      "members": {
        "AllocationStrategy": {
          "locationName": "allocationStrategy"
        },
        "ClientToken": {
          "locationName": "clientToken"
        },
        "ExcessCapacityTerminationPolicy": {
          "locationName": "excessCapacityTerminationPolicy"
        },
        "FulfilledCapacity": {
          "locationName": "fulfilledCapacity",
          "type": "double"
        },
        "IamFleetRole": {
          "locationName": "iamFleetRole"
        },
        "LaunchSpecifications": {
          "locationName": "launchSpecifications",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "SecurityGroups": {
                "shape": "S7m",
                "locationName": "groupSet"
              },
              "AddressingType": {
                "locationName": "addressingType"
              },
              "BlockDeviceMappings": {
                "shape": "Sfd",
                "locationName": "blockDeviceMapping"
              },
              "EbsOptimized": {
                "locationName": "ebsOptimized",
                "type": "boolean"
              },
              "IamInstanceProfile": {
                "shape": "S19",
                "locationName": "iamInstanceProfile"
              },
              "ImageId": {
                "locationName": "imageId"
              },
              "InstanceType": {
                "locationName": "instanceType"
              },
              "KernelId": {
                "locationName": "kernelId"
              },
              "KeyName": {
                "locationName": "keyName"
              },
              "Monitoring": {
                "locationName": "monitoring",
                "type": "structure",
                "members": {
                  "Enabled": {
                    "locationName": "enabled",
                    "type": "boolean"
                  }
                }
              },
              "NetworkInterfaces": {
                "shape": "Slh",
                "locationName": "networkInterfaceSet"
              },
              "Placement": {
                "shape": "Slj",
                "locationName": "placement"
              },
              "RamdiskId": {
                "locationName": "ramdiskId"
              },
              "SpotPrice": {
                "locationName": "spotPrice"
              },
              "SubnetId": {
                "locationName": "subnetId"
              },
              "UserData": {
                "locationName": "userData"
              },
              "WeightedCapacity": {
                "locationName": "weightedCapacity",
                "type": "double"
              },
              "TagSpecifications": {
                "locationName": "tagSpecificationSet",
                "type": "list",
                "member": {
                  "locationName": "item",
                  "type": "structure",
                  "members": {
                    "ResourceType": {
                      "locationName": "resourceType"
                    },
                    "Tags": {
                      "shape": "Sr",
                      "locationName": "tag"
                    }
                  }
                }
              }
            }
          }
        },
        "LaunchTemplateConfigs": {
          "locationName": "launchTemplateConfigs",
          "type": "list",
          "member": {
            "locationName": "item",
            "type": "structure",
            "members": {
              "LaunchTemplateSpecification": {
                "locationName": "launchTemplateSpecification",
                "type": "structure",
                "members": {
                  "LaunchTemplateId": {
                    "locationName": "launchTemplateId"
                  },
                  "LaunchTemplateName": {
                    "locationName": "launchTemplateName"
                  },
                  "Version": {
                    "locationName": "version"
                  }
                }
              },
              "Overrides": {
                "locationName": "overrides",
                "type": "list",
                "member": {
                  "locationName": "item",
                  "type": "structure",
                  "members": {
                    "InstanceType": {
                      "locationName": "instanceType"
                    },
                    "SpotPrice": {
                      "locationName": "spotPrice"
                    },
                    "SubnetId": {
                      "locationName": "subnetId"
                    },
                    "AvailabilityZone": {
                      "locationName": "availabilityZone"
                    },
                    "WeightedCapacity": {
                      "locationName": "weightedCapacity",
                      "type": "double"
                    }
                  }
                }
              }
            }
          }
        },
        "SpotPrice": {
          "locationName": "spotPrice"
        },
        "TargetCapacity": {
          "locationName": "targetCapacity",
          "type": "integer"
        },
        "TerminateInstancesWithExpiration": {
          "locationName": "terminateInstancesWithExpiration",
          "type": "boolean"
        },
        "Type": {
          "locationName": "type"
        },
        "ValidFrom": {
          "locationName": "validFrom",
          "type": "timestamp"
        },
        "ValidUntil": {
          "locationName": "validUntil",
          "type": "timestamp"
        },
        "ReplaceUnhealthyInstances": {
          "locationName": "replaceUnhealthyInstances",
          "type": "boolean"
        },
        "InstanceInterruptionBehavior": {
          "locationName": "instanceInterruptionBehavior"
        },
        "LoadBalancersConfig": {
          "locationName": "loadBalancersConfig",
          "type": "structure",
          "members": {
            "ClassicLoadBalancersConfig": {
              "locationName": "classicLoadBalancersConfig",
              "type": "structure",
              "required": [
                "ClassicLoadBalancers"
              ],
              "members": {
                "ClassicLoadBalancers": {
                  "locationName": "classicLoadBalancers",
                  "type": "list",
                  "member": {
                    "locationName": "item",
                    "type": "structure",
                    "required": [
                      "Name"
                    ],
                    "members": {
                      "Name": {
                        "locationName": "name"
                      }
                    }
                  }
                }
              }
            },
            "TargetGroupsConfig": {
              "locationName": "targetGroupsConfig",
              "type": "structure",
              "required": [
                "TargetGroups"
              ],
              "members": {
                "TargetGroups": {
                  "locationName": "targetGroups",
                  "type": "list",
                  "member": {
                    "locationName": "item",
                    "type": "structure",
                    "required": [
                      "Arn"
                    ],
                    "members": {
                      "Arn": {
                        "locationName": "arn"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "Slh": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "AssociatePublicIpAddress": {
            "locationName": "associatePublicIpAddress",
            "type": "boolean"
          },
          "DeleteOnTermination": {
            "locationName": "deleteOnTermination",
            "type": "boolean"
          },
          "Description": {
            "locationName": "description"
          },
          "DeviceIndex": {
            "locationName": "deviceIndex",
            "type": "integer"
          },
          "Groups": {
            "shape": "S5r",
            "locationName": "SecurityGroupId"
          },
          "Ipv6AddressCount": {
            "locationName": "ipv6AddressCount",
            "type": "integer"
          },
          "Ipv6Addresses": {
            "shape": "S6o",
            "locationName": "ipv6AddressesSet",
            "queryName": "Ipv6Addresses"
          },
          "NetworkInterfaceId": {
            "locationName": "networkInterfaceId"
          },
          "PrivateIpAddress": {
            "locationName": "privateIpAddress"
          },
          "PrivateIpAddresses": {
            "shape": "S5u",
            "locationName": "privateIpAddressesSet",
            "queryName": "PrivateIpAddresses"
          },
          "SecondaryPrivateIpAddressCount": {
            "locationName": "secondaryPrivateIpAddressCount",
            "type": "integer"
          },
          "SubnetId": {
            "locationName": "subnetId"
          }
        }
      }
    },
    "Slj": {
      "type": "structure",
      "members": {
        "AvailabilityZone": {
          "locationName": "availabilityZone"
        },
        "GroupName": {
          "locationName": "groupName"
        },
        "Tenancy": {
          "locationName": "tenancy"
        }
      }
    },
    "Sm1": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "ActualBlockHourlyPrice": {
            "locationName": "actualBlockHourlyPrice"
          },
          "AvailabilityZoneGroup": {
            "locationName": "availabilityZoneGroup"
          },
          "BlockDurationMinutes": {
            "locationName": "blockDurationMinutes",
            "type": "integer"
          },
          "CreateTime": {
            "locationName": "createTime",
            "type": "timestamp"
          },
          "Fault": {
            "shape": "S8r",
            "locationName": "fault"
          },
          "InstanceId": {
            "locationName": "instanceId"
          },
          "LaunchGroup": {
            "locationName": "launchGroup"
          },
          "LaunchSpecification": {
            "locationName": "launchSpecification",
            "type": "structure",
            "members": {
              "UserData": {
                "locationName": "userData"
              },
              "SecurityGroups": {
                "shape": "S7m",
                "locationName": "groupSet"
              },
              "AddressingType": {
                "locationName": "addressingType"
              },
              "BlockDeviceMappings": {
                "shape": "Sfd",
                "locationName": "blockDeviceMapping"
              },
              "EbsOptimized": {
                "locationName": "ebsOptimized",
                "type": "boolean"
              },
              "IamInstanceProfile": {
                "shape": "S19",
                "locationName": "iamInstanceProfile"
              },
              "ImageId": {
                "locationName": "imageId"
              },
              "InstanceType": {
                "locationName": "instanceType"
              },
              "KernelId": {
                "locationName": "kernelId"
              },
              "KeyName": {
                "locationName": "keyName"
              },
              "NetworkInterfaces": {
                "shape": "Slh",
                "locationName": "networkInterfaceSet"
              },
              "Placement": {
                "shape": "Slj",
                "locationName": "placement"
              },
              "RamdiskId": {
                "locationName": "ramdiskId"
              },
              "SubnetId": {
                "locationName": "subnetId"
              },
              "Monitoring": {
                "shape": "Sm4",
                "locationName": "monitoring"
              }
            }
          },
          "LaunchedAvailabilityZone": {
            "locationName": "launchedAvailabilityZone"
          },
          "ProductDescription": {
            "locationName": "productDescription"
          },
          "SpotInstanceRequestId": {
            "locationName": "spotInstanceRequestId"
          },
          "SpotPrice": {
            "locationName": "spotPrice"
          },
          "State": {
            "locationName": "state"
          },
          "Status": {
            "locationName": "status",
            "type": "structure",
            "members": {
              "Code": {
                "locationName": "code"
              },
              "Message": {
                "locationName": "message"
              },
              "UpdateTime": {
                "locationName": "updateTime",
                "type": "timestamp"
              }
            }
          },
          "Tags": {
            "shape": "Sr",
            "locationName": "tagSet"
          },
          "Type": {
            "locationName": "type"
          },
          "ValidFrom": {
            "locationName": "validFrom",
            "type": "timestamp"
          },
          "ValidUntil": {
            "locationName": "validUntil",
            "type": "timestamp"
          },
          "InstanceInterruptionBehavior": {
            "locationName": "instanceInterruptionBehavior"
          }
        }
      }
    },
    "Sm4": {
      "type": "structure",
      "required": [
        "Enabled"
      ],
      "members": {
        "Enabled": {
          "locationName": "enabled",
          "type": "boolean"
        }
      }
    },
    "Smh": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "FromPort": {
            "locationName": "fromPort",
            "type": "integer"
          },
          "IpProtocol": {
            "locationName": "ipProtocol"
          },
          "IpRanges": {
            "locationName": "ipRanges",
            "type": "list",
            "member": {
              "locationName": "item"
            }
          },
          "PrefixListIds": {
            "locationName": "prefixListIds",
            "type": "list",
            "member": {
              "locationName": "item"
            }
          },
          "ToPort": {
            "locationName": "toPort",
            "type": "integer"
          },
          "UserIdGroupPairs": {
            "locationName": "groups",
            "type": "list",
            "member": {
              "shape": "S2e",
              "locationName": "item"
            }
          }
        }
      }
    },
    "Smy": {
      "type": "list",
      "member": {
        "locationName": "VolumeId"
      }
    },
    "Snh": {
      "type": "structure",
      "members": {
        "VolumeId": {
          "locationName": "volumeId"
        },
        "ModificationState": {
          "locationName": "modificationState"
        },
        "StatusMessage": {
          "locationName": "statusMessage"
        },
        "TargetSize": {
          "locationName": "targetSize",
          "type": "integer"
        },
        "TargetIops": {
          "locationName": "targetIops",
          "type": "integer"
        },
        "TargetVolumeType": {
          "locationName": "targetVolumeType"
        },
        "OriginalSize": {
          "locationName": "originalSize",
          "type": "integer"
        },
        "OriginalIops": {
          "locationName": "originalIops",
          "type": "integer"
        },
        "OriginalVolumeType": {
          "locationName": "originalVolumeType"
        },
        "Progress": {
          "locationName": "progress",
          "type": "long"
        },
        "StartTime": {
          "locationName": "startTime",
          "type": "timestamp"
        },
        "EndTime": {
          "locationName": "endTime",
          "type": "timestamp"
        }
      }
    },
    "Snn": {
      "type": "list",
      "member": {
        "locationName": "VpcId"
      }
    },
    "Spq": {
      "type": "list",
      "member": {
        "locationName": "item"
      }
    },
    "Sps": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "CurrencyCode": {
            "locationName": "currencyCode"
          },
          "Duration": {
            "locationName": "duration",
            "type": "integer"
          },
          "HostIdSet": {
            "shape": "Sem",
            "locationName": "hostIdSet"
          },
          "HostReservationId": {
            "locationName": "hostReservationId"
          },
          "HourlyPrice": {
            "locationName": "hourlyPrice"
          },
          "InstanceFamily": {
            "locationName": "instanceFamily"
          },
          "PaymentOption": {
            "locationName": "paymentOption"
          },
          "UpfrontPrice": {
            "locationName": "upfrontPrice"
          }
        }
      }
    },
    "Sq0": {
      "type": "structure",
      "members": {
        "HourlyPrice": {
          "locationName": "hourlyPrice"
        },
        "RemainingTotalValue": {
          "locationName": "remainingTotalValue"
        },
        "RemainingUpfrontValue": {
          "locationName": "remainingUpfrontValue"
        }
      }
    },
    "Sq7": {
      "type": "structure",
      "members": {
        "Comment": {},
        "UploadEnd": {
          "type": "timestamp"
        },
        "UploadSize": {
          "type": "double"
        },
        "UploadStart": {
          "type": "timestamp"
        }
      }
    },
    "Sqa": {
      "type": "structure",
      "members": {
        "S3Bucket": {},
        "S3Key": {}
      }
    },
    "Sqf": {
      "type": "structure",
      "required": [
        "Bytes",
        "Format",
        "ImportManifestUrl"
      ],
      "members": {
        "Bytes": {
          "locationName": "bytes",
          "type": "long"
        },
        "Format": {
          "locationName": "format"
        },
        "ImportManifestUrl": {
          "locationName": "importManifestUrl"
        }
      }
    },
    "Sqg": {
      "type": "structure",
      "required": [
        "Size"
      ],
      "members": {
        "Size": {
          "locationName": "size",
          "type": "long"
        }
      }
    },
    "Sqt": {
      "type": "list",
      "member": {
        "locationName": "UserId"
      }
    },
    "Squ": {
      "type": "list",
      "member": {
        "locationName": "UserGroup"
      }
    },
    "Sqv": {
      "type": "list",
      "member": {
        "locationName": "ProductCode"
      }
    },
    "Sqx": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "Group": {},
          "UserId": {}
        }
      }
    },
    "Sr2": {
      "type": "list",
      "member": {
        "shape": "Sd",
        "locationName": "item"
      }
    },
    "Ssf": {
      "type": "structure",
      "members": {
        "AllowDnsResolutionFromRemoteVpc": {
          "type": "boolean"
        },
        "AllowEgressFromLocalClassicLinkToRemoteVpc": {
          "type": "boolean"
        },
        "AllowEgressFromLocalVpcToRemoteClassicLink": {
          "type": "boolean"
        }
      }
    },
    "Ssh": {
      "type": "structure",
      "members": {
        "AllowDnsResolutionFromRemoteVpc": {
          "locationName": "allowDnsResolutionFromRemoteVpc",
          "type": "boolean"
        },
        "AllowEgressFromLocalClassicLinkToRemoteVpc": {
          "locationName": "allowEgressFromLocalClassicLinkToRemoteVpc",
          "type": "boolean"
        },
        "AllowEgressFromLocalVpcToRemoteClassicLink": {
          "locationName": "allowEgressFromLocalVpcToRemoteClassicLink",
          "type": "boolean"
        }
      }
    },
    "Ssn": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "InstanceId": {
            "locationName": "instanceId"
          },
          "Monitoring": {
            "shape": "Sh2",
            "locationName": "monitoring"
          }
        }
      }
    },
    "Suk": {
      "type": "list",
      "member": {
        "locationName": "SecurityGroupId"
      }
    },
    "Suv": {
      "type": "list",
      "member": {
        "locationName": "item",
        "type": "structure",
        "members": {
          "CurrentState": {
            "shape": "Sgo",
            "locationName": "currentState"
          },
          "InstanceId": {
            "locationName": "instanceId"
          },
          "PreviousState": {
            "shape": "Sgo",
            "locationName": "previousState"
          }
        }
      }
    }
  }
}
},{}],49:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeAccountAttributes": {
      "result_key": "AccountAttributes"
    },
    "DescribeAddresses": {
      "result_key": "Addresses"
    },
    "DescribeAvailabilityZones": {
      "result_key": "AvailabilityZones"
    },
    "DescribeBundleTasks": {
      "result_key": "BundleTasks"
    },
    "DescribeConversionTasks": {
      "result_key": "ConversionTasks"
    },
    "DescribeCustomerGateways": {
      "result_key": "CustomerGateways"
    },
    "DescribeDhcpOptions": {
      "result_key": "DhcpOptions"
    },
    "DescribeExportTasks": {
      "result_key": "ExportTasks"
    },
    "DescribeImages": {
      "result_key": "Images"
    },
    "DescribeInstanceStatus": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "InstanceStatuses"
    },
    "DescribeInstances": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "Reservations"
    },
    "DescribeInternetGateways": {
      "result_key": "InternetGateways"
    },
    "DescribeKeyPairs": {
      "result_key": "KeyPairs"
    },
    "DescribeNatGateways": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "NatGateways"
    },
    "DescribeNetworkAcls": {
      "result_key": "NetworkAcls"
    },
    "DescribeNetworkInterfaces": {
      "result_key": "NetworkInterfaces"
    },
    "DescribePlacementGroups": {
      "result_key": "PlacementGroups"
    },
    "DescribeRegions": {
      "result_key": "Regions"
    },
    "DescribeReservedInstances": {
      "result_key": "ReservedInstances"
    },
    "DescribeReservedInstancesListings": {
      "result_key": "ReservedInstancesListings"
    },
    "DescribeReservedInstancesModifications": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "result_key": "ReservedInstancesModifications"
    },
    "DescribeReservedInstancesOfferings": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "ReservedInstancesOfferings"
    },
    "DescribeRouteTables": {
      "result_key": "RouteTables"
    },
    "DescribeSecurityGroups": {
      "result_key": "SecurityGroups"
    },
    "DescribeSnapshots": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "Snapshots"
    },
    "DescribeSpotFleetRequests": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "SpotFleetRequestConfigs"
    },
    "DescribeSpotInstanceRequests": {
      "result_key": "SpotInstanceRequests"
    },
    "DescribeSpotPriceHistory": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "SpotPriceHistory"
    },
    "DescribeSubnets": {
      "result_key": "Subnets"
    },
    "DescribeTags": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "Tags"
    },
    "DescribeVolumeStatus": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "VolumeStatuses"
    },
    "DescribeVolumes": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "Volumes"
    },
    "DescribeVpcPeeringConnections": {
      "result_key": "VpcPeeringConnections"
    },
    "DescribeVpcs": {
      "result_key": "Vpcs"
    },
    "DescribeVpnConnections": {
      "result_key": "VpnConnections"
    },
    "DescribeVpnGateways": {
      "result_key": "VpnGateways"
    }
  }
}
},{}],50:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "InstanceExists": {
      "delay": 5,
      "maxAttempts": 40,
      "operation": "DescribeInstances",
      "acceptors": [
        {
          "matcher": "path",
          "expected": true,
          "argument": "length(Reservations[]) > `0`",
          "state": "success"
        },
        {
          "matcher": "error",
          "expected": "InvalidInstanceID.NotFound",
          "state": "retry"
        }
      ]
    },
    "BundleTaskComplete": {
      "delay": 15,
      "operation": "DescribeBundleTasks",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "complete",
          "matcher": "pathAll",
          "state": "success",
          "argument": "BundleTasks[].State"
        },
        {
          "expected": "failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "BundleTasks[].State"
        }
      ]
    },
    "ConversionTaskCancelled": {
      "delay": 15,
      "operation": "DescribeConversionTasks",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "cancelled",
          "matcher": "pathAll",
          "state": "success",
          "argument": "ConversionTasks[].State"
        }
      ]
    },
    "ConversionTaskCompleted": {
      "delay": 15,
      "operation": "DescribeConversionTasks",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "completed",
          "matcher": "pathAll",
          "state": "success",
          "argument": "ConversionTasks[].State"
        },
        {
          "expected": "cancelled",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "ConversionTasks[].State"
        },
        {
          "expected": "cancelling",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "ConversionTasks[].State"
        }
      ]
    },
    "ConversionTaskDeleted": {
      "delay": 15,
      "operation": "DescribeConversionTasks",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "deleted",
          "matcher": "pathAll",
          "state": "success",
          "argument": "ConversionTasks[].State"
        }
      ]
    },
    "CustomerGatewayAvailable": {
      "delay": 15,
      "operation": "DescribeCustomerGateways",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "CustomerGateways[].State"
        },
        {
          "expected": "deleted",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "CustomerGateways[].State"
        },
        {
          "expected": "deleting",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "CustomerGateways[].State"
        }
      ]
    },
    "ExportTaskCancelled": {
      "delay": 15,
      "operation": "DescribeExportTasks",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "cancelled",
          "matcher": "pathAll",
          "state": "success",
          "argument": "ExportTasks[].State"
        }
      ]
    },
    "ExportTaskCompleted": {
      "delay": 15,
      "operation": "DescribeExportTasks",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "completed",
          "matcher": "pathAll",
          "state": "success",
          "argument": "ExportTasks[].State"
        }
      ]
    },
    "ImageExists": {
      "operation": "DescribeImages",
      "maxAttempts": 40,
      "delay": 15,
      "acceptors": [
        {
          "matcher": "path",
          "expected": true,
          "argument": "length(Images[]) > `0`",
          "state": "success"
        },
        {
          "matcher": "error",
          "expected": "InvalidAMIID.NotFound",
          "state": "retry"
        }
      ]
    },
    "ImageAvailable": {
      "operation": "DescribeImages",
      "maxAttempts": 40,
      "delay": 15,
      "acceptors": [
        {
          "state": "success",
          "matcher": "pathAll",
          "argument": "Images[].State",
          "expected": "available"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "Images[].State",
          "expected": "failed"
        }
      ]
    },
    "InstanceRunning": {
      "delay": 15,
      "operation": "DescribeInstances",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "running",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Reservations[].Instances[].State.Name"
        },
        {
          "expected": "shutting-down",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Reservations[].Instances[].State.Name"
        },
        {
          "expected": "terminated",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Reservations[].Instances[].State.Name"
        },
        {
          "expected": "stopping",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Reservations[].Instances[].State.Name"
        },
        {
          "matcher": "error",
          "expected": "InvalidInstanceID.NotFound",
          "state": "retry"
        }
      ]
    },
    "InstanceStatusOk": {
      "operation": "DescribeInstanceStatus",
      "maxAttempts": 40,
      "delay": 15,
      "acceptors": [
        {
          "state": "success",
          "matcher": "pathAll",
          "argument": "InstanceStatuses[].InstanceStatus.Status",
          "expected": "ok"
        },
        {
          "matcher": "error",
          "expected": "InvalidInstanceID.NotFound",
          "state": "retry"
        }
      ]
    },
    "InstanceStopped": {
      "delay": 15,
      "operation": "DescribeInstances",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "stopped",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Reservations[].Instances[].State.Name"
        },
        {
          "expected": "pending",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Reservations[].Instances[].State.Name"
        },
        {
          "expected": "terminated",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Reservations[].Instances[].State.Name"
        }
      ]
    },
    "InstanceTerminated": {
      "delay": 15,
      "operation": "DescribeInstances",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "terminated",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Reservations[].Instances[].State.Name"
        },
        {
          "expected": "pending",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Reservations[].Instances[].State.Name"
        },
        {
          "expected": "stopping",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Reservations[].Instances[].State.Name"
        }
      ]
    },
    "KeyPairExists": {
      "operation": "DescribeKeyPairs",
      "delay": 5,
      "maxAttempts": 6,
      "acceptors": [
        {
          "expected": true,
          "matcher": "path",
          "state": "success",
          "argument": "length(KeyPairs[].KeyName) > `0`"
        },
        {
          "expected": "InvalidKeyPair.NotFound",
          "matcher": "error",
          "state": "retry"
        }
      ]
    },
    "NatGatewayAvailable": {
      "operation": "DescribeNatGateways",
      "delay": 15,
      "maxAttempts": 40,
      "acceptors": [
        {
          "state": "success",
          "matcher": "pathAll",
          "argument": "NatGateways[].State",
          "expected": "available"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "NatGateways[].State",
          "expected": "failed"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "NatGateways[].State",
          "expected": "deleting"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "NatGateways[].State",
          "expected": "deleted"
        },
        {
          "state": "retry",
          "matcher": "error",
          "expected": "NatGatewayNotFound"
        }
      ]
    },
    "NetworkInterfaceAvailable": {
      "operation": "DescribeNetworkInterfaces",
      "delay": 20,
      "maxAttempts": 10,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "NetworkInterfaces[].Status"
        },
        {
          "expected": "InvalidNetworkInterfaceID.NotFound",
          "matcher": "error",
          "state": "failure"
        }
      ]
    },
    "PasswordDataAvailable": {
      "operation": "GetPasswordData",
      "maxAttempts": 40,
      "delay": 15,
      "acceptors": [
        {
          "state": "success",
          "matcher": "path",
          "argument": "length(PasswordData) > `0`",
          "expected": true
        }
      ]
    },
    "SnapshotCompleted": {
      "delay": 15,
      "operation": "DescribeSnapshots",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "completed",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Snapshots[].State"
        }
      ]
    },
    "SpotInstanceRequestFulfilled": {
      "operation": "DescribeSpotInstanceRequests",
      "maxAttempts": 40,
      "delay": 15,
      "acceptors": [
        {
          "state": "success",
          "matcher": "pathAll",
          "argument": "SpotInstanceRequests[].Status.Code",
          "expected": "fulfilled"
        },
        {
          "state": "success",
          "matcher": "pathAll",
          "argument": "SpotInstanceRequests[].Status.Code",
          "expected": "request-canceled-and-instance-running"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "SpotInstanceRequests[].Status.Code",
          "expected": "schedule-expired"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "SpotInstanceRequests[].Status.Code",
          "expected": "canceled-before-fulfillment"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "SpotInstanceRequests[].Status.Code",
          "expected": "bad-parameters"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "SpotInstanceRequests[].Status.Code",
          "expected": "system-error"
        },
        {
          "state": "retry",
          "matcher": "error",
          "expected": "InvalidSpotInstanceRequestID.NotFound"
        }
      ]
    },
    "SubnetAvailable": {
      "delay": 15,
      "operation": "DescribeSubnets",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Subnets[].State"
        }
      ]
    },
    "SystemStatusOk": {
      "operation": "DescribeInstanceStatus",
      "maxAttempts": 40,
      "delay": 15,
      "acceptors": [
        {
          "state": "success",
          "matcher": "pathAll",
          "argument": "InstanceStatuses[].SystemStatus.Status",
          "expected": "ok"
        }
      ]
    },
    "VolumeAvailable": {
      "delay": 15,
      "operation": "DescribeVolumes",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Volumes[].State"
        },
        {
          "expected": "deleted",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Volumes[].State"
        }
      ]
    },
    "VolumeDeleted": {
      "delay": 15,
      "operation": "DescribeVolumes",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "deleted",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Volumes[].State"
        },
        {
          "matcher": "error",
          "expected": "InvalidVolume.NotFound",
          "state": "success"
        }
      ]
    },
    "VolumeInUse": {
      "delay": 15,
      "operation": "DescribeVolumes",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "in-use",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Volumes[].State"
        },
        {
          "expected": "deleted",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Volumes[].State"
        }
      ]
    },
    "VpcAvailable": {
      "delay": 15,
      "operation": "DescribeVpcs",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Vpcs[].State"
        }
      ]
    },
    "VpcExists": {
      "operation": "DescribeVpcs",
      "delay": 1,
      "maxAttempts": 5,
      "acceptors": [
        {
          "matcher": "status",
          "expected": 200,
          "state": "success"
        },
        {
          "matcher": "error",
          "expected": "InvalidVpcID.NotFound",
          "state": "retry"
        }
      ]
    },
    "VpnConnectionAvailable": {
      "delay": 15,
      "operation": "DescribeVpnConnections",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "VpnConnections[].State"
        },
        {
          "expected": "deleting",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "VpnConnections[].State"
        },
        {
          "expected": "deleted",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "VpnConnections[].State"
        }
      ]
    },
    "VpnConnectionDeleted": {
      "delay": 15,
      "operation": "DescribeVpnConnections",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "deleted",
          "matcher": "pathAll",
          "state": "success",
          "argument": "VpnConnections[].State"
        },
        {
          "expected": "pending",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "VpnConnections[].State"
        }
      ]
    },
    "VpcPeeringConnectionExists": {
      "delay": 15,
      "operation": "DescribeVpcPeeringConnections",
      "maxAttempts": 40,
      "acceptors": [
        {
          "matcher": "status",
          "expected": 200,
          "state": "success"
        },
        {
          "matcher": "error",
          "expected": "InvalidVpcPeeringConnectionID.NotFound",
          "state": "retry"
        }
      ]
    },
    "VpcPeeringConnectionDeleted": {
      "delay": 15,
      "operation": "DescribeVpcPeeringConnections",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "deleted",
          "matcher": "pathAll",
          "state": "success",
          "argument": "VpcPeeringConnections[].Status.Code"
        },
        {
          "matcher": "error",
          "expected": "InvalidVpcPeeringConnectionID.NotFound",
          "state": "success"
        }
      ]
    }
  }
}

},{}],51:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-09-21",
    "endpointPrefix": "ecr",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "Amazon ECR",
    "serviceFullName": "Amazon EC2 Container Registry",
    "signatureVersion": "v4",
    "targetPrefix": "AmazonEC2ContainerRegistry_V20150921",
    "uid": "ecr-2015-09-21"
  },
  "operations": {
    "BatchCheckLayerAvailability": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "layerDigests"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {},
          "layerDigests": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "layers": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "layerDigest": {},
                "layerAvailability": {},
                "layerSize": {
                  "type": "long"
                },
                "mediaType": {}
              }
            }
          },
          "failures": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "layerDigest": {},
                "failureCode": {},
                "failureReason": {}
              }
            }
          }
        }
      }
    },
    "BatchDeleteImage": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "imageIds"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {},
          "imageIds": {
            "shape": "Si"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "imageIds": {
            "shape": "Si"
          },
          "failures": {
            "shape": "Sn"
          }
        }
      }
    },
    "BatchGetImage": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "imageIds"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {},
          "imageIds": {
            "shape": "Si"
          },
          "acceptedMediaTypes": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "images": {
            "type": "list",
            "member": {
              "shape": "Sv"
            }
          },
          "failures": {
            "shape": "Sn"
          }
        }
      }
    },
    "CompleteLayerUpload": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "uploadId",
          "layerDigests"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {},
          "uploadId": {},
          "layerDigests": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "registryId": {},
          "repositoryName": {},
          "uploadId": {},
          "layerDigest": {}
        }
      }
    },
    "CreateRepository": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "repositoryName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "repository": {
            "shape": "S13"
          }
        }
      }
    },
    "DeleteLifecyclePolicy": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "registryId": {},
          "repositoryName": {},
          "lifecyclePolicyText": {},
          "lastEvaluatedAt": {
            "type": "timestamp"
          }
        }
      }
    },
    "DeleteRepository": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {},
          "force": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "repository": {
            "shape": "S13"
          }
        }
      }
    },
    "DeleteRepositoryPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "registryId": {},
          "repositoryName": {},
          "policyText": {}
        }
      }
    },
    "DescribeImages": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {},
          "imageIds": {
            "shape": "Si"
          },
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          },
          "filter": {
            "type": "structure",
            "members": {
              "tagStatus": {}
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "imageDetails": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "registryId": {},
                "repositoryName": {},
                "imageDigest": {},
                "imageTags": {
                  "shape": "S1p"
                },
                "imageSizeInBytes": {
                  "type": "long"
                },
                "imagePushedAt": {
                  "type": "timestamp"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "DescribeRepositories": {
      "input": {
        "type": "structure",
        "members": {
          "registryId": {},
          "repositoryNames": {
            "type": "list",
            "member": {}
          },
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "repositories": {
            "type": "list",
            "member": {
              "shape": "S13"
            }
          },
          "nextToken": {}
        }
      }
    },
    "GetAuthorizationToken": {
      "input": {
        "type": "structure",
        "members": {
          "registryIds": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "authorizationData": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "authorizationToken": {},
                "expiresAt": {
                  "type": "timestamp"
                },
                "proxyEndpoint": {}
              }
            }
          }
        }
      }
    },
    "GetDownloadUrlForLayer": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "layerDigest"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {},
          "layerDigest": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "downloadUrl": {},
          "layerDigest": {}
        }
      }
    },
    "GetLifecyclePolicy": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "registryId": {},
          "repositoryName": {},
          "lifecyclePolicyText": {},
          "lastEvaluatedAt": {
            "type": "timestamp"
          }
        }
      }
    },
    "GetLifecyclePolicyPreview": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {},
          "imageIds": {
            "shape": "Si"
          },
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          },
          "filter": {
            "type": "structure",
            "members": {
              "tagStatus": {}
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "registryId": {},
          "repositoryName": {},
          "lifecyclePolicyText": {},
          "status": {},
          "nextToken": {},
          "previewResults": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "imageTags": {
                  "shape": "S1p"
                },
                "imageDigest": {},
                "imagePushedAt": {
                  "type": "timestamp"
                },
                "action": {
                  "type": "structure",
                  "members": {
                    "type": {}
                  }
                },
                "appliedRulePriority": {
                  "type": "integer"
                }
              }
            }
          },
          "summary": {
            "type": "structure",
            "members": {
              "expiringImageTotalCount": {
                "type": "integer"
              }
            }
          }
        }
      }
    },
    "GetRepositoryPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "registryId": {},
          "repositoryName": {},
          "policyText": {}
        }
      }
    },
    "InitiateLayerUpload": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "uploadId": {},
          "partSize": {
            "type": "long"
          }
        }
      }
    },
    "ListImages": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {},
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          },
          "filter": {
            "type": "structure",
            "members": {
              "tagStatus": {}
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "imageIds": {
            "shape": "Si"
          },
          "nextToken": {}
        }
      }
    },
    "PutImage": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "imageManifest"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {},
          "imageManifest": {},
          "imageTag": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "image": {
            "shape": "Sv"
          }
        }
      }
    },
    "PutLifecyclePolicy": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "lifecyclePolicyText"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {},
          "lifecyclePolicyText": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "registryId": {},
          "repositoryName": {},
          "lifecyclePolicyText": {}
        }
      }
    },
    "SetRepositoryPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "policyText"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {},
          "policyText": {},
          "force": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "registryId": {},
          "repositoryName": {},
          "policyText": {}
        }
      }
    },
    "StartLifecyclePolicyPreview": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {},
          "lifecyclePolicyText": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "registryId": {},
          "repositoryName": {},
          "lifecyclePolicyText": {},
          "status": {}
        }
      }
    },
    "UploadLayerPart": {
      "input": {
        "type": "structure",
        "required": [
          "repositoryName",
          "uploadId",
          "partFirstByte",
          "partLastByte",
          "layerPartBlob"
        ],
        "members": {
          "registryId": {},
          "repositoryName": {},
          "uploadId": {},
          "partFirstByte": {
            "type": "long"
          },
          "partLastByte": {
            "type": "long"
          },
          "layerPartBlob": {
            "type": "blob"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "registryId": {},
          "repositoryName": {},
          "uploadId": {},
          "lastByteReceived": {
            "type": "long"
          }
        }
      }
    }
  },
  "shapes": {
    "Si": {
      "type": "list",
      "member": {
        "shape": "Sj"
      }
    },
    "Sj": {
      "type": "structure",
      "members": {
        "imageDigest": {},
        "imageTag": {}
      }
    },
    "Sn": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "imageId": {
            "shape": "Sj"
          },
          "failureCode": {},
          "failureReason": {}
        }
      }
    },
    "Sv": {
      "type": "structure",
      "members": {
        "registryId": {},
        "repositoryName": {},
        "imageId": {
          "shape": "Sj"
        },
        "imageManifest": {}
      }
    },
    "S13": {
      "type": "structure",
      "members": {
        "repositoryArn": {},
        "registryId": {},
        "repositoryName": {},
        "repositoryUri": {},
        "createdAt": {
          "type": "timestamp"
        }
      }
    },
    "S1p": {
      "type": "list",
      "member": {}
    }
  }
}
},{}],52:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeImages": {
      "input_token": "nextToken",
      "limit_key": "maxResults",
      "output_token": "nextToken",
      "result_key": "imageDetails"
    },
    "DescribeRepositories": {
      "input_token": "nextToken",
      "limit_key": "maxResults",
      "output_token": "nextToken",
      "result_key": "repositories"
    },
    "ListImages": {
      "input_token": "nextToken",
      "limit_key": "maxResults",
      "output_token": "nextToken",
      "result_key": "imageIds"
    }
  }
}
},{}],53:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2014-11-13",
    "endpointPrefix": "ecs",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "Amazon ECS",
    "serviceFullName": "Amazon EC2 Container Service",
    "serviceId": "ECS",
    "signatureVersion": "v4",
    "targetPrefix": "AmazonEC2ContainerServiceV20141113",
    "uid": "ecs-2014-11-13"
  },
  "operations": {
    "CreateCluster": {
      "input": {
        "type": "structure",
        "members": {
          "clusterName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "cluster": {
            "shape": "S4"
          }
        }
      }
    },
    "CreateService": {
      "input": {
        "type": "structure",
        "required": [
          "serviceName",
          "taskDefinition",
          "desiredCount"
        ],
        "members": {
          "cluster": {},
          "serviceName": {},
          "taskDefinition": {},
          "loadBalancers": {
            "shape": "S9"
          },
          "desiredCount": {
            "type": "integer"
          },
          "clientToken": {},
          "launchType": {},
          "platformVersion": {},
          "role": {},
          "deploymentConfiguration": {
            "shape": "Sd"
          },
          "placementConstraints": {
            "shape": "Se"
          },
          "placementStrategy": {
            "shape": "Sh"
          },
          "networkConfiguration": {
            "shape": "Sk"
          },
          "healthCheckGracePeriodSeconds": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "service": {
            "shape": "Sp"
          }
        }
      }
    },
    "DeleteAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "attributes"
        ],
        "members": {
          "cluster": {},
          "attributes": {
            "shape": "Sw"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "attributes": {
            "shape": "Sw"
          }
        }
      }
    },
    "DeleteCluster": {
      "input": {
        "type": "structure",
        "required": [
          "cluster"
        ],
        "members": {
          "cluster": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "cluster": {
            "shape": "S4"
          }
        }
      }
    },
    "DeleteService": {
      "input": {
        "type": "structure",
        "required": [
          "service"
        ],
        "members": {
          "cluster": {},
          "service": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "service": {
            "shape": "Sp"
          }
        }
      }
    },
    "DeregisterContainerInstance": {
      "input": {
        "type": "structure",
        "required": [
          "containerInstance"
        ],
        "members": {
          "cluster": {},
          "containerInstance": {},
          "force": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "containerInstance": {
            "shape": "S17"
          }
        }
      }
    },
    "DeregisterTaskDefinition": {
      "input": {
        "type": "structure",
        "required": [
          "taskDefinition"
        ],
        "members": {
          "taskDefinition": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "taskDefinition": {
            "shape": "S1k"
          }
        }
      }
    },
    "DescribeClusters": {
      "input": {
        "type": "structure",
        "members": {
          "clusters": {
            "shape": "Sm"
          },
          "include": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "clusters": {
            "type": "list",
            "member": {
              "shape": "S4"
            }
          },
          "failures": {
            "shape": "S2q"
          }
        }
      }
    },
    "DescribeContainerInstances": {
      "input": {
        "type": "structure",
        "required": [
          "containerInstances"
        ],
        "members": {
          "cluster": {},
          "containerInstances": {
            "shape": "Sm"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "containerInstances": {
            "shape": "S2u"
          },
          "failures": {
            "shape": "S2q"
          }
        }
      }
    },
    "DescribeServices": {
      "input": {
        "type": "structure",
        "required": [
          "services"
        ],
        "members": {
          "cluster": {},
          "services": {
            "shape": "Sm"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "services": {
            "type": "list",
            "member": {
              "shape": "Sp"
            }
          },
          "failures": {
            "shape": "S2q"
          }
        }
      }
    },
    "DescribeTaskDefinition": {
      "input": {
        "type": "structure",
        "required": [
          "taskDefinition"
        ],
        "members": {
          "taskDefinition": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "taskDefinition": {
            "shape": "S1k"
          }
        }
      }
    },
    "DescribeTasks": {
      "input": {
        "type": "structure",
        "required": [
          "tasks"
        ],
        "members": {
          "cluster": {},
          "tasks": {
            "shape": "Sm"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "tasks": {
            "shape": "S32"
          },
          "failures": {
            "shape": "S2q"
          }
        }
      }
    },
    "DiscoverPollEndpoint": {
      "input": {
        "type": "structure",
        "members": {
          "containerInstance": {},
          "cluster": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "endpoint": {},
          "telemetryEndpoint": {}
        }
      }
    },
    "ListAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "targetType"
        ],
        "members": {
          "cluster": {},
          "targetType": {},
          "attributeName": {},
          "attributeValue": {},
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "attributes": {
            "shape": "Sw"
          },
          "nextToken": {}
        }
      }
    },
    "ListClusters": {
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "clusterArns": {
            "shape": "Sm"
          },
          "nextToken": {}
        }
      }
    },
    "ListContainerInstances": {
      "input": {
        "type": "structure",
        "members": {
          "cluster": {},
          "filter": {},
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          },
          "status": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "containerInstanceArns": {
            "shape": "Sm"
          },
          "nextToken": {}
        }
      }
    },
    "ListServices": {
      "input": {
        "type": "structure",
        "members": {
          "cluster": {},
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          },
          "launchType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "serviceArns": {
            "shape": "Sm"
          },
          "nextToken": {}
        }
      }
    },
    "ListTaskDefinitionFamilies": {
      "input": {
        "type": "structure",
        "members": {
          "familyPrefix": {},
          "status": {},
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "families": {
            "shape": "Sm"
          },
          "nextToken": {}
        }
      }
    },
    "ListTaskDefinitions": {
      "input": {
        "type": "structure",
        "members": {
          "familyPrefix": {},
          "status": {},
          "sort": {},
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "taskDefinitionArns": {
            "shape": "Sm"
          },
          "nextToken": {}
        }
      }
    },
    "ListTasks": {
      "input": {
        "type": "structure",
        "members": {
          "cluster": {},
          "containerInstance": {},
          "family": {},
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          },
          "startedBy": {},
          "serviceName": {},
          "desiredStatus": {},
          "launchType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "taskArns": {
            "shape": "Sm"
          },
          "nextToken": {}
        }
      }
    },
    "PutAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "attributes"
        ],
        "members": {
          "cluster": {},
          "attributes": {
            "shape": "Sw"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "attributes": {
            "shape": "Sw"
          }
        }
      }
    },
    "RegisterContainerInstance": {
      "input": {
        "type": "structure",
        "members": {
          "cluster": {},
          "instanceIdentityDocument": {},
          "instanceIdentityDocumentSignature": {},
          "totalResources": {
            "shape": "S1a"
          },
          "versionInfo": {
            "shape": "S19"
          },
          "containerInstanceArn": {},
          "attributes": {
            "shape": "Sw"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "containerInstance": {
            "shape": "S17"
          }
        }
      }
    },
    "RegisterTaskDefinition": {
      "input": {
        "type": "structure",
        "required": [
          "family",
          "containerDefinitions"
        ],
        "members": {
          "family": {},
          "taskRoleArn": {},
          "executionRoleArn": {},
          "networkMode": {},
          "containerDefinitions": {
            "shape": "S1l"
          },
          "volumes": {
            "shape": "S2b"
          },
          "placementConstraints": {
            "shape": "S2g"
          },
          "requiresCompatibilities": {
            "shape": "S2j"
          },
          "cpu": {},
          "memory": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "taskDefinition": {
            "shape": "S1k"
          }
        }
      }
    },
    "RunTask": {
      "input": {
        "type": "structure",
        "required": [
          "taskDefinition"
        ],
        "members": {
          "cluster": {},
          "taskDefinition": {},
          "overrides": {
            "shape": "S34"
          },
          "count": {
            "type": "integer"
          },
          "startedBy": {},
          "group": {},
          "placementConstraints": {
            "shape": "Se"
          },
          "placementStrategy": {
            "shape": "Sh"
          },
          "launchType": {},
          "platformVersion": {},
          "networkConfiguration": {
            "shape": "Sk"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "tasks": {
            "shape": "S32"
          },
          "failures": {
            "shape": "S2q"
          }
        }
      }
    },
    "StartTask": {
      "input": {
        "type": "structure",
        "required": [
          "taskDefinition",
          "containerInstances"
        ],
        "members": {
          "cluster": {},
          "taskDefinition": {},
          "overrides": {
            "shape": "S34"
          },
          "containerInstances": {
            "shape": "Sm"
          },
          "startedBy": {},
          "group": {},
          "networkConfiguration": {
            "shape": "Sk"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "tasks": {
            "shape": "S32"
          },
          "failures": {
            "shape": "S2q"
          }
        }
      }
    },
    "StopTask": {
      "input": {
        "type": "structure",
        "required": [
          "task"
        ],
        "members": {
          "cluster": {},
          "task": {},
          "reason": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "task": {
            "shape": "S33"
          }
        }
      }
    },
    "SubmitContainerStateChange": {
      "input": {
        "type": "structure",
        "members": {
          "cluster": {},
          "task": {},
          "containerName": {},
          "status": {},
          "exitCode": {
            "type": "integer"
          },
          "reason": {},
          "networkBindings": {
            "shape": "S39"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "acknowledgment": {}
        }
      }
    },
    "SubmitTaskStateChange": {
      "input": {
        "type": "structure",
        "members": {
          "cluster": {},
          "task": {},
          "status": {},
          "reason": {},
          "containers": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "containerName": {},
                "exitCode": {
                  "type": "integer"
                },
                "networkBindings": {
                  "shape": "S39"
                },
                "reason": {},
                "status": {}
              }
            }
          },
          "attachments": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "attachmentArn",
                "status"
              ],
              "members": {
                "attachmentArn": {},
                "status": {}
              }
            }
          },
          "pullStartedAt": {
            "type": "timestamp"
          },
          "pullStoppedAt": {
            "type": "timestamp"
          },
          "executionStoppedAt": {
            "type": "timestamp"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "acknowledgment": {}
        }
      }
    },
    "UpdateContainerAgent": {
      "input": {
        "type": "structure",
        "required": [
          "containerInstance"
        ],
        "members": {
          "cluster": {},
          "containerInstance": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "containerInstance": {
            "shape": "S17"
          }
        }
      }
    },
    "UpdateContainerInstancesState": {
      "input": {
        "type": "structure",
        "required": [
          "containerInstances",
          "status"
        ],
        "members": {
          "cluster": {},
          "containerInstances": {
            "shape": "Sm"
          },
          "status": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "containerInstances": {
            "shape": "S2u"
          },
          "failures": {
            "shape": "S2q"
          }
        }
      }
    },
    "UpdateService": {
      "input": {
        "type": "structure",
        "required": [
          "service"
        ],
        "members": {
          "cluster": {},
          "service": {},
          "desiredCount": {
            "type": "integer"
          },
          "taskDefinition": {},
          "deploymentConfiguration": {
            "shape": "Sd"
          },
          "networkConfiguration": {
            "shape": "Sk"
          },
          "platformVersion": {},
          "forceNewDeployment": {
            "type": "boolean"
          },
          "healthCheckGracePeriodSeconds": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "service": {
            "shape": "Sp"
          }
        }
      }
    }
  },
  "shapes": {
    "S4": {
      "type": "structure",
      "members": {
        "clusterArn": {},
        "clusterName": {},
        "status": {},
        "registeredContainerInstancesCount": {
          "type": "integer"
        },
        "runningTasksCount": {
          "type": "integer"
        },
        "pendingTasksCount": {
          "type": "integer"
        },
        "activeServicesCount": {
          "type": "integer"
        },
        "statistics": {
          "type": "list",
          "member": {
            "shape": "S7"
          }
        }
      }
    },
    "S7": {
      "type": "structure",
      "members": {
        "name": {},
        "value": {}
      }
    },
    "S9": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "targetGroupArn": {},
          "loadBalancerName": {},
          "containerName": {},
          "containerPort": {
            "type": "integer"
          }
        }
      }
    },
    "Sd": {
      "type": "structure",
      "members": {
        "maximumPercent": {
          "type": "integer"
        },
        "minimumHealthyPercent": {
          "type": "integer"
        }
      }
    },
    "Se": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "type": {},
          "expression": {}
        }
      }
    },
    "Sh": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "type": {},
          "field": {}
        }
      }
    },
    "Sk": {
      "type": "structure",
      "members": {
        "awsvpcConfiguration": {
          "type": "structure",
          "required": [
            "subnets"
          ],
          "members": {
            "subnets": {
              "shape": "Sm"
            },
            "securityGroups": {
              "shape": "Sm"
            },
            "assignPublicIp": {}
          }
        }
      }
    },
    "Sm": {
      "type": "list",
      "member": {}
    },
    "Sp": {
      "type": "structure",
      "members": {
        "serviceArn": {},
        "serviceName": {},
        "clusterArn": {},
        "loadBalancers": {
          "shape": "S9"
        },
        "status": {},
        "desiredCount": {
          "type": "integer"
        },
        "runningCount": {
          "type": "integer"
        },
        "pendingCount": {
          "type": "integer"
        },
        "launchType": {},
        "platformVersion": {},
        "taskDefinition": {},
        "deploymentConfiguration": {
          "shape": "Sd"
        },
        "deployments": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "id": {},
              "status": {},
              "taskDefinition": {},
              "desiredCount": {
                "type": "integer"
              },
              "pendingCount": {
                "type": "integer"
              },
              "runningCount": {
                "type": "integer"
              },
              "createdAt": {
                "type": "timestamp"
              },
              "updatedAt": {
                "type": "timestamp"
              },
              "launchType": {},
              "platformVersion": {},
              "networkConfiguration": {
                "shape": "Sk"
              }
            }
          }
        },
        "roleArn": {},
        "events": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "id": {},
              "createdAt": {
                "type": "timestamp"
              },
              "message": {}
            }
          }
        },
        "createdAt": {
          "type": "timestamp"
        },
        "placementConstraints": {
          "shape": "Se"
        },
        "placementStrategy": {
          "shape": "Sh"
        },
        "networkConfiguration": {
          "shape": "Sk"
        },
        "healthCheckGracePeriodSeconds": {
          "type": "integer"
        }
      }
    },
    "Sw": {
      "type": "list",
      "member": {
        "shape": "Sx"
      }
    },
    "Sx": {
      "type": "structure",
      "required": [
        "name"
      ],
      "members": {
        "name": {},
        "value": {},
        "targetType": {},
        "targetId": {}
      }
    },
    "S17": {
      "type": "structure",
      "members": {
        "containerInstanceArn": {},
        "ec2InstanceId": {},
        "version": {
          "type": "long"
        },
        "versionInfo": {
          "shape": "S19"
        },
        "remainingResources": {
          "shape": "S1a"
        },
        "registeredResources": {
          "shape": "S1a"
        },
        "status": {},
        "agentConnected": {
          "type": "boolean"
        },
        "runningTasksCount": {
          "type": "integer"
        },
        "pendingTasksCount": {
          "type": "integer"
        },
        "agentUpdateStatus": {},
        "attributes": {
          "shape": "Sw"
        },
        "registeredAt": {
          "type": "timestamp"
        },
        "attachments": {
          "shape": "S1f"
        }
      }
    },
    "S19": {
      "type": "structure",
      "members": {
        "agentVersion": {},
        "agentHash": {},
        "dockerVersion": {}
      }
    },
    "S1a": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "name": {},
          "type": {},
          "doubleValue": {
            "type": "double"
          },
          "longValue": {
            "type": "long"
          },
          "integerValue": {
            "type": "integer"
          },
          "stringSetValue": {
            "shape": "Sm"
          }
        }
      }
    },
    "S1f": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "id": {},
          "type": {},
          "status": {},
          "details": {
            "type": "list",
            "member": {
              "shape": "S7"
            }
          }
        }
      }
    },
    "S1k": {
      "type": "structure",
      "members": {
        "taskDefinitionArn": {},
        "containerDefinitions": {
          "shape": "S1l"
        },
        "family": {},
        "taskRoleArn": {},
        "executionRoleArn": {},
        "networkMode": {},
        "revision": {
          "type": "integer"
        },
        "volumes": {
          "shape": "S2b"
        },
        "status": {},
        "requiresAttributes": {
          "type": "list",
          "member": {
            "shape": "Sx"
          }
        },
        "placementConstraints": {
          "shape": "S2g"
        },
        "compatibilities": {
          "shape": "S2j"
        },
        "requiresCompatibilities": {
          "shape": "S2j"
        },
        "cpu": {},
        "memory": {}
      }
    },
    "S1l": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "name": {},
          "image": {},
          "cpu": {
            "type": "integer"
          },
          "memory": {
            "type": "integer"
          },
          "memoryReservation": {
            "type": "integer"
          },
          "links": {
            "shape": "Sm"
          },
          "portMappings": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "containerPort": {
                  "type": "integer"
                },
                "hostPort": {
                  "type": "integer"
                },
                "protocol": {}
              }
            }
          },
          "essential": {
            "type": "boolean"
          },
          "entryPoint": {
            "shape": "Sm"
          },
          "command": {
            "shape": "Sm"
          },
          "environment": {
            "shape": "S1q"
          },
          "mountPoints": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "sourceVolume": {},
                "containerPath": {},
                "readOnly": {
                  "type": "boolean"
                }
              }
            }
          },
          "volumesFrom": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "sourceContainer": {},
                "readOnly": {
                  "type": "boolean"
                }
              }
            }
          },
          "linuxParameters": {
            "type": "structure",
            "members": {
              "capabilities": {
                "type": "structure",
                "members": {
                  "add": {
                    "shape": "Sm"
                  },
                  "drop": {
                    "shape": "Sm"
                  }
                }
              },
              "devices": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "required": [
                    "hostPath"
                  ],
                  "members": {
                    "hostPath": {},
                    "containerPath": {},
                    "permissions": {
                      "type": "list",
                      "member": {}
                    }
                  }
                }
              },
              "initProcessEnabled": {
                "type": "boolean"
              }
            }
          },
          "hostname": {},
          "user": {},
          "workingDirectory": {},
          "disableNetworking": {
            "type": "boolean"
          },
          "privileged": {
            "type": "boolean"
          },
          "readonlyRootFilesystem": {
            "type": "boolean"
          },
          "dnsServers": {
            "shape": "Sm"
          },
          "dnsSearchDomains": {
            "shape": "Sm"
          },
          "extraHosts": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "hostname",
                "ipAddress"
              ],
              "members": {
                "hostname": {},
                "ipAddress": {}
              }
            }
          },
          "dockerSecurityOptions": {
            "shape": "Sm"
          },
          "dockerLabels": {
            "type": "map",
            "key": {},
            "value": {}
          },
          "ulimits": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "name",
                "softLimit",
                "hardLimit"
              ],
              "members": {
                "name": {},
                "softLimit": {
                  "type": "integer"
                },
                "hardLimit": {
                  "type": "integer"
                }
              }
            }
          },
          "logConfiguration": {
            "type": "structure",
            "required": [
              "logDriver"
            ],
            "members": {
              "logDriver": {},
              "options": {
                "type": "map",
                "key": {},
                "value": {}
              }
            }
          }
        }
      }
    },
    "S1q": {
      "type": "list",
      "member": {
        "shape": "S7"
      }
    },
    "S2b": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "name": {},
          "host": {
            "type": "structure",
            "members": {
              "sourcePath": {}
            }
          }
        }
      }
    },
    "S2g": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "type": {},
          "expression": {}
        }
      }
    },
    "S2j": {
      "type": "list",
      "member": {}
    },
    "S2q": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "arn": {},
          "reason": {}
        }
      }
    },
    "S2u": {
      "type": "list",
      "member": {
        "shape": "S17"
      }
    },
    "S32": {
      "type": "list",
      "member": {
        "shape": "S33"
      }
    },
    "S33": {
      "type": "structure",
      "members": {
        "taskArn": {},
        "clusterArn": {},
        "taskDefinitionArn": {},
        "containerInstanceArn": {},
        "overrides": {
          "shape": "S34"
        },
        "lastStatus": {},
        "desiredStatus": {},
        "cpu": {},
        "memory": {},
        "containers": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "containerArn": {},
              "taskArn": {},
              "name": {},
              "lastStatus": {},
              "exitCode": {
                "type": "integer"
              },
              "reason": {},
              "networkBindings": {
                "shape": "S39"
              },
              "networkInterfaces": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "attachmentId": {},
                    "privateIpv4Address": {},
                    "ipv6Address": {}
                  }
                }
              }
            }
          }
        },
        "startedBy": {},
        "version": {
          "type": "long"
        },
        "stoppedReason": {},
        "connectivity": {},
        "connectivityAt": {
          "type": "timestamp"
        },
        "pullStartedAt": {
          "type": "timestamp"
        },
        "pullStoppedAt": {
          "type": "timestamp"
        },
        "executionStoppedAt": {
          "type": "timestamp"
        },
        "createdAt": {
          "type": "timestamp"
        },
        "startedAt": {
          "type": "timestamp"
        },
        "stoppingAt": {
          "type": "timestamp"
        },
        "stoppedAt": {
          "type": "timestamp"
        },
        "group": {},
        "launchType": {},
        "platformVersion": {},
        "attachments": {
          "shape": "S1f"
        }
      }
    },
    "S34": {
      "type": "structure",
      "members": {
        "containerOverrides": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "name": {},
              "command": {
                "shape": "Sm"
              },
              "environment": {
                "shape": "S1q"
              },
              "cpu": {
                "type": "integer"
              },
              "memory": {
                "type": "integer"
              },
              "memoryReservation": {
                "type": "integer"
              }
            }
          }
        },
        "taskRoleArn": {},
        "executionRoleArn": {}
      }
    },
    "S39": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "bindIP": {},
          "containerPort": {
            "type": "integer"
          },
          "hostPort": {
            "type": "integer"
          },
          "protocol": {}
        }
      }
    }
  }
}
},{}],54:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListClusters": {
      "input_token": "nextToken",
      "limit_key": "maxResults",
      "output_token": "nextToken",
      "result_key": "clusterArns"
    },
    "ListContainerInstances": {
      "input_token": "nextToken",
      "limit_key": "maxResults",
      "output_token": "nextToken",
      "result_key": "containerInstanceArns"
    },
    "ListServices": {
      "input_token": "nextToken",
      "limit_key": "maxResults",
      "output_token": "nextToken",
      "result_key": "serviceArns"
    },
    "ListTaskDefinitionFamilies": {
      "input_token": "nextToken",
      "limit_key": "maxResults",
      "output_token": "nextToken",
      "result_key": "families"
    },
    "ListTaskDefinitions": {
      "input_token": "nextToken",
      "limit_key": "maxResults",
      "output_token": "nextToken",
      "result_key": "taskDefinitionArns"
    },
    "ListTasks": {
      "input_token": "nextToken",
      "limit_key": "maxResults",
      "output_token": "nextToken",
      "result_key": "taskArns"
    }
  }
}
},{}],55:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "TasksRunning": {
      "delay": 6,
      "operation": "DescribeTasks",
      "maxAttempts": 100,
      "acceptors": [
        {
          "expected": "STOPPED",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "tasks[].lastStatus"
        },
        {
          "expected": "MISSING",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "failures[].reason"
        },
        {
          "expected": "RUNNING",
          "matcher": "pathAll",
          "state": "success",
          "argument": "tasks[].lastStatus"
        }
      ]
    },
    "TasksStopped": {
      "delay": 6,
      "operation": "DescribeTasks",
      "maxAttempts": 100,
      "acceptors": [
        {
          "expected": "STOPPED",
          "matcher": "pathAll",
          "state": "success",
          "argument": "tasks[].lastStatus"
        }
      ]
    },
    "ServicesStable": {
      "delay": 15,
      "operation": "DescribeServices",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "MISSING",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "failures[].reason"
        },
        {
          "expected": "DRAINING",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "services[].status"
        },
        {
          "expected": "INACTIVE",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "services[].status"
        },
        {
          "expected": true,
          "matcher": "path",
          "state": "success",
          "argument": "length(services[?!(length(deployments) == `1` && runningCount == desiredCount)]) == `0`"
        }
      ]
    },
    "ServicesInactive": {
      "delay": 15,
      "operation": "DescribeServices",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "MISSING",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "failures[].reason"
        },
        {
          "expected": "INACTIVE",
          "matcher": "pathAny",
          "state": "success",
          "argument": "services[].status"
        }
      ]
    }
  }
}

},{}],56:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-02-02",
    "endpointPrefix": "elasticache",
    "protocol": "query",
    "serviceFullName": "Amazon ElastiCache",
    "signatureVersion": "v4",
    "uid": "elasticache-2015-02-02",
    "xmlNamespace": "http://elasticache.amazonaws.com/doc/2015-02-02/"
  },
  "operations": {
    "AddTagsToResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName",
          "Tags"
        ],
        "members": {
          "ResourceName": {},
          "Tags": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "shape": "S5",
        "resultWrapper": "AddTagsToResourceResult"
      }
    },
    "AuthorizeCacheSecurityGroupIngress": {
      "input": {
        "type": "structure",
        "required": [
          "CacheSecurityGroupName",
          "EC2SecurityGroupName",
          "EC2SecurityGroupOwnerId"
        ],
        "members": {
          "CacheSecurityGroupName": {},
          "EC2SecurityGroupName": {},
          "EC2SecurityGroupOwnerId": {}
        }
      },
      "output": {
        "resultWrapper": "AuthorizeCacheSecurityGroupIngressResult",
        "type": "structure",
        "members": {
          "CacheSecurityGroup": {
            "shape": "S8"
          }
        }
      }
    },
    "CopySnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "SourceSnapshotName",
          "TargetSnapshotName"
        ],
        "members": {
          "SourceSnapshotName": {},
          "TargetSnapshotName": {},
          "TargetBucket": {}
        }
      },
      "output": {
        "resultWrapper": "CopySnapshotResult",
        "type": "structure",
        "members": {
          "Snapshot": {
            "shape": "Sd"
          }
        }
      }
    },
    "CreateCacheCluster": {
      "input": {
        "type": "structure",
        "required": [
          "CacheClusterId"
        ],
        "members": {
          "CacheClusterId": {},
          "ReplicationGroupId": {},
          "AZMode": {},
          "PreferredAvailabilityZone": {},
          "PreferredAvailabilityZones": {
            "shape": "So"
          },
          "NumCacheNodes": {
            "type": "integer"
          },
          "CacheNodeType": {},
          "Engine": {},
          "EngineVersion": {},
          "CacheParameterGroupName": {},
          "CacheSubnetGroupName": {},
          "CacheSecurityGroupNames": {
            "shape": "Sp"
          },
          "SecurityGroupIds": {
            "shape": "Sq"
          },
          "Tags": {
            "shape": "S3"
          },
          "SnapshotArns": {
            "shape": "Sr"
          },
          "SnapshotName": {},
          "PreferredMaintenanceWindow": {},
          "Port": {
            "type": "integer"
          },
          "NotificationTopicArn": {},
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "SnapshotRetentionLimit": {
            "type": "integer"
          },
          "SnapshotWindow": {},
          "AuthToken": {}
        }
      },
      "output": {
        "resultWrapper": "CreateCacheClusterResult",
        "type": "structure",
        "members": {
          "CacheCluster": {
            "shape": "Su"
          }
        }
      }
    },
    "CreateCacheParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "CacheParameterGroupName",
          "CacheParameterGroupFamily",
          "Description"
        ],
        "members": {
          "CacheParameterGroupName": {},
          "CacheParameterGroupFamily": {},
          "Description": {}
        }
      },
      "output": {
        "resultWrapper": "CreateCacheParameterGroupResult",
        "type": "structure",
        "members": {
          "CacheParameterGroup": {
            "shape": "S19"
          }
        }
      }
    },
    "CreateCacheSecurityGroup": {
      "input": {
        "type": "structure",
        "required": [
          "CacheSecurityGroupName",
          "Description"
        ],
        "members": {
          "CacheSecurityGroupName": {},
          "Description": {}
        }
      },
      "output": {
        "resultWrapper": "CreateCacheSecurityGroupResult",
        "type": "structure",
        "members": {
          "CacheSecurityGroup": {
            "shape": "S8"
          }
        }
      }
    },
    "CreateCacheSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "CacheSubnetGroupName",
          "CacheSubnetGroupDescription",
          "SubnetIds"
        ],
        "members": {
          "CacheSubnetGroupName": {},
          "CacheSubnetGroupDescription": {},
          "SubnetIds": {
            "shape": "S1d"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateCacheSubnetGroupResult",
        "type": "structure",
        "members": {
          "CacheSubnetGroup": {
            "shape": "S1f"
          }
        }
      }
    },
    "CreateReplicationGroup": {
      "input": {
        "type": "structure",
        "required": [
          "ReplicationGroupId",
          "ReplicationGroupDescription"
        ],
        "members": {
          "ReplicationGroupId": {},
          "ReplicationGroupDescription": {},
          "PrimaryClusterId": {},
          "AutomaticFailoverEnabled": {
            "type": "boolean"
          },
          "NumCacheClusters": {
            "type": "integer"
          },
          "PreferredCacheClusterAZs": {
            "shape": "Sl"
          },
          "NumNodeGroups": {
            "type": "integer"
          },
          "ReplicasPerNodeGroup": {
            "type": "integer"
          },
          "NodeGroupConfiguration": {
            "type": "list",
            "member": {
              "shape": "Sk",
              "locationName": "NodeGroupConfiguration"
            }
          },
          "CacheNodeType": {},
          "Engine": {},
          "EngineVersion": {},
          "CacheParameterGroupName": {},
          "CacheSubnetGroupName": {},
          "CacheSecurityGroupNames": {
            "shape": "Sp"
          },
          "SecurityGroupIds": {
            "shape": "Sq"
          },
          "Tags": {
            "shape": "S3"
          },
          "SnapshotArns": {
            "shape": "Sr"
          },
          "SnapshotName": {},
          "PreferredMaintenanceWindow": {},
          "Port": {
            "type": "integer"
          },
          "NotificationTopicArn": {},
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "SnapshotRetentionLimit": {
            "type": "integer"
          },
          "SnapshotWindow": {},
          "AuthToken": {},
          "TransitEncryptionEnabled": {
            "type": "boolean"
          },
          "AtRestEncryptionEnabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateReplicationGroupResult",
        "type": "structure",
        "members": {
          "ReplicationGroup": {
            "shape": "S1m"
          }
        }
      }
    },
    "CreateSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "SnapshotName"
        ],
        "members": {
          "ReplicationGroupId": {},
          "CacheClusterId": {},
          "SnapshotName": {}
        }
      },
      "output": {
        "resultWrapper": "CreateSnapshotResult",
        "type": "structure",
        "members": {
          "Snapshot": {
            "shape": "Sd"
          }
        }
      }
    },
    "DeleteCacheCluster": {
      "input": {
        "type": "structure",
        "required": [
          "CacheClusterId"
        ],
        "members": {
          "CacheClusterId": {},
          "FinalSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteCacheClusterResult",
        "type": "structure",
        "members": {
          "CacheCluster": {
            "shape": "Su"
          }
        }
      }
    },
    "DeleteCacheParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "CacheParameterGroupName"
        ],
        "members": {
          "CacheParameterGroupName": {}
        }
      }
    },
    "DeleteCacheSecurityGroup": {
      "input": {
        "type": "structure",
        "required": [
          "CacheSecurityGroupName"
        ],
        "members": {
          "CacheSecurityGroupName": {}
        }
      }
    },
    "DeleteCacheSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "CacheSubnetGroupName"
        ],
        "members": {
          "CacheSubnetGroupName": {}
        }
      }
    },
    "DeleteReplicationGroup": {
      "input": {
        "type": "structure",
        "required": [
          "ReplicationGroupId"
        ],
        "members": {
          "ReplicationGroupId": {},
          "RetainPrimaryCluster": {
            "type": "boolean"
          },
          "FinalSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteReplicationGroupResult",
        "type": "structure",
        "members": {
          "ReplicationGroup": {
            "shape": "S1m"
          }
        }
      }
    },
    "DeleteSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "SnapshotName"
        ],
        "members": {
          "SnapshotName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteSnapshotResult",
        "type": "structure",
        "members": {
          "Snapshot": {
            "shape": "Sd"
          }
        }
      }
    },
    "DescribeCacheClusters": {
      "input": {
        "type": "structure",
        "members": {
          "CacheClusterId": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "ShowCacheNodeInfo": {
            "type": "boolean"
          },
          "ShowCacheClustersNotInReplicationGroups": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeCacheClustersResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "CacheClusters": {
            "type": "list",
            "member": {
              "shape": "Su",
              "locationName": "CacheCluster"
            }
          }
        }
      }
    },
    "DescribeCacheEngineVersions": {
      "input": {
        "type": "structure",
        "members": {
          "Engine": {},
          "EngineVersion": {},
          "CacheParameterGroupFamily": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "DefaultOnly": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeCacheEngineVersionsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "CacheEngineVersions": {
            "type": "list",
            "member": {
              "locationName": "CacheEngineVersion",
              "type": "structure",
              "members": {
                "Engine": {},
                "EngineVersion": {},
                "CacheParameterGroupFamily": {},
                "CacheEngineDescription": {},
                "CacheEngineVersionDescription": {}
              }
            }
          }
        }
      }
    },
    "DescribeCacheParameterGroups": {
      "input": {
        "type": "structure",
        "members": {
          "CacheParameterGroupName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeCacheParameterGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "CacheParameterGroups": {
            "type": "list",
            "member": {
              "shape": "S19",
              "locationName": "CacheParameterGroup"
            }
          }
        }
      }
    },
    "DescribeCacheParameters": {
      "input": {
        "type": "structure",
        "required": [
          "CacheParameterGroupName"
        ],
        "members": {
          "CacheParameterGroupName": {},
          "Source": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeCacheParametersResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "Parameters": {
            "shape": "S2k"
          },
          "CacheNodeTypeSpecificParameters": {
            "shape": "S2n"
          }
        }
      }
    },
    "DescribeCacheSecurityGroups": {
      "input": {
        "type": "structure",
        "members": {
          "CacheSecurityGroupName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeCacheSecurityGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "CacheSecurityGroups": {
            "type": "list",
            "member": {
              "shape": "S8",
              "locationName": "CacheSecurityGroup"
            }
          }
        }
      }
    },
    "DescribeCacheSubnetGroups": {
      "input": {
        "type": "structure",
        "members": {
          "CacheSubnetGroupName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeCacheSubnetGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "CacheSubnetGroups": {
            "type": "list",
            "member": {
              "shape": "S1f",
              "locationName": "CacheSubnetGroup"
            }
          }
        }
      }
    },
    "DescribeEngineDefaultParameters": {
      "input": {
        "type": "structure",
        "required": [
          "CacheParameterGroupFamily"
        ],
        "members": {
          "CacheParameterGroupFamily": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEngineDefaultParametersResult",
        "type": "structure",
        "members": {
          "EngineDefaults": {
            "type": "structure",
            "members": {
              "CacheParameterGroupFamily": {},
              "Marker": {},
              "Parameters": {
                "shape": "S2k"
              },
              "CacheNodeTypeSpecificParameters": {
                "shape": "S2n"
              }
            },
            "wrapper": true
          }
        }
      }
    },
    "DescribeEvents": {
      "input": {
        "type": "structure",
        "members": {
          "SourceIdentifier": {},
          "SourceType": {},
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "Duration": {
            "type": "integer"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEventsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "Events": {
            "type": "list",
            "member": {
              "locationName": "Event",
              "type": "structure",
              "members": {
                "SourceIdentifier": {},
                "SourceType": {},
                "Message": {},
                "Date": {
                  "type": "timestamp"
                }
              }
            }
          }
        }
      }
    },
    "DescribeReplicationGroups": {
      "input": {
        "type": "structure",
        "members": {
          "ReplicationGroupId": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReplicationGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ReplicationGroups": {
            "type": "list",
            "member": {
              "shape": "S1m",
              "locationName": "ReplicationGroup"
            }
          }
        }
      }
    },
    "DescribeReservedCacheNodes": {
      "input": {
        "type": "structure",
        "members": {
          "ReservedCacheNodeId": {},
          "ReservedCacheNodesOfferingId": {},
          "CacheNodeType": {},
          "Duration": {},
          "ProductDescription": {},
          "OfferingType": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReservedCacheNodesResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ReservedCacheNodes": {
            "type": "list",
            "member": {
              "shape": "S3b",
              "locationName": "ReservedCacheNode"
            }
          }
        }
      }
    },
    "DescribeReservedCacheNodesOfferings": {
      "input": {
        "type": "structure",
        "members": {
          "ReservedCacheNodesOfferingId": {},
          "CacheNodeType": {},
          "Duration": {},
          "ProductDescription": {},
          "OfferingType": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReservedCacheNodesOfferingsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ReservedCacheNodesOfferings": {
            "type": "list",
            "member": {
              "locationName": "ReservedCacheNodesOffering",
              "type": "structure",
              "members": {
                "ReservedCacheNodesOfferingId": {},
                "CacheNodeType": {},
                "Duration": {
                  "type": "integer"
                },
                "FixedPrice": {
                  "type": "double"
                },
                "UsagePrice": {
                  "type": "double"
                },
                "ProductDescription": {},
                "OfferingType": {},
                "RecurringCharges": {
                  "shape": "S3c"
                }
              },
              "wrapper": true
            }
          }
        }
      }
    },
    "DescribeSnapshots": {
      "input": {
        "type": "structure",
        "members": {
          "ReplicationGroupId": {},
          "CacheClusterId": {},
          "SnapshotName": {},
          "SnapshotSource": {},
          "Marker": {},
          "MaxRecords": {
            "type": "integer"
          },
          "ShowNodeGroupConfig": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeSnapshotsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "Snapshots": {
            "type": "list",
            "member": {
              "shape": "Sd",
              "locationName": "Snapshot"
            }
          }
        }
      }
    },
    "ListAllowedNodeTypeModifications": {
      "input": {
        "type": "structure",
        "members": {
          "CacheClusterId": {},
          "ReplicationGroupId": {}
        }
      },
      "output": {
        "resultWrapper": "ListAllowedNodeTypeModificationsResult",
        "type": "structure",
        "members": {
          "ScaleUpModifications": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "ListTagsForResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName"
        ],
        "members": {
          "ResourceName": {}
        }
      },
      "output": {
        "shape": "S5",
        "resultWrapper": "ListTagsForResourceResult"
      }
    },
    "ModifyCacheCluster": {
      "input": {
        "type": "structure",
        "required": [
          "CacheClusterId"
        ],
        "members": {
          "CacheClusterId": {},
          "NumCacheNodes": {
            "type": "integer"
          },
          "CacheNodeIdsToRemove": {
            "shape": "Sy"
          },
          "AZMode": {},
          "NewAvailabilityZones": {
            "shape": "So"
          },
          "CacheSecurityGroupNames": {
            "shape": "Sp"
          },
          "SecurityGroupIds": {
            "shape": "Sq"
          },
          "PreferredMaintenanceWindow": {},
          "NotificationTopicArn": {},
          "CacheParameterGroupName": {},
          "NotificationTopicStatus": {},
          "ApplyImmediately": {
            "type": "boolean"
          },
          "EngineVersion": {},
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "SnapshotRetentionLimit": {
            "type": "integer"
          },
          "SnapshotWindow": {},
          "CacheNodeType": {}
        }
      },
      "output": {
        "resultWrapper": "ModifyCacheClusterResult",
        "type": "structure",
        "members": {
          "CacheCluster": {
            "shape": "Su"
          }
        }
      }
    },
    "ModifyCacheParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "CacheParameterGroupName",
          "ParameterNameValues"
        ],
        "members": {
          "CacheParameterGroupName": {},
          "ParameterNameValues": {
            "shape": "S3s"
          }
        }
      },
      "output": {
        "shape": "S3u",
        "resultWrapper": "ModifyCacheParameterGroupResult"
      }
    },
    "ModifyCacheSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "CacheSubnetGroupName"
        ],
        "members": {
          "CacheSubnetGroupName": {},
          "CacheSubnetGroupDescription": {},
          "SubnetIds": {
            "shape": "S1d"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyCacheSubnetGroupResult",
        "type": "structure",
        "members": {
          "CacheSubnetGroup": {
            "shape": "S1f"
          }
        }
      }
    },
    "ModifyReplicationGroup": {
      "input": {
        "type": "structure",
        "required": [
          "ReplicationGroupId"
        ],
        "members": {
          "ReplicationGroupId": {},
          "ReplicationGroupDescription": {},
          "PrimaryClusterId": {},
          "SnapshottingClusterId": {},
          "AutomaticFailoverEnabled": {
            "type": "boolean"
          },
          "CacheSecurityGroupNames": {
            "shape": "Sp"
          },
          "SecurityGroupIds": {
            "shape": "Sq"
          },
          "PreferredMaintenanceWindow": {},
          "NotificationTopicArn": {},
          "CacheParameterGroupName": {},
          "NotificationTopicStatus": {},
          "ApplyImmediately": {
            "type": "boolean"
          },
          "EngineVersion": {},
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "SnapshotRetentionLimit": {
            "type": "integer"
          },
          "SnapshotWindow": {},
          "CacheNodeType": {},
          "NodeGroupId": {}
        }
      },
      "output": {
        "resultWrapper": "ModifyReplicationGroupResult",
        "type": "structure",
        "members": {
          "ReplicationGroup": {
            "shape": "S1m"
          }
        }
      }
    },
    "ModifyReplicationGroupShardConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "ReplicationGroupId",
          "NodeGroupCount",
          "ApplyImmediately"
        ],
        "members": {
          "ReplicationGroupId": {},
          "NodeGroupCount": {
            "type": "integer"
          },
          "ApplyImmediately": {
            "type": "boolean"
          },
          "ReshardingConfiguration": {
            "type": "list",
            "member": {
              "locationName": "ReshardingConfiguration",
              "type": "structure",
              "members": {
                "PreferredAvailabilityZones": {
                  "shape": "Sl"
                }
              }
            }
          },
          "NodeGroupsToRemove": {
            "type": "list",
            "member": {
              "locationName": "NodeGroupToRemove"
            }
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyReplicationGroupShardConfigurationResult",
        "type": "structure",
        "members": {
          "ReplicationGroup": {
            "shape": "S1m"
          }
        }
      }
    },
    "PurchaseReservedCacheNodesOffering": {
      "input": {
        "type": "structure",
        "required": [
          "ReservedCacheNodesOfferingId"
        ],
        "members": {
          "ReservedCacheNodesOfferingId": {},
          "ReservedCacheNodeId": {},
          "CacheNodeCount": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "PurchaseReservedCacheNodesOfferingResult",
        "type": "structure",
        "members": {
          "ReservedCacheNode": {
            "shape": "S3b"
          }
        }
      }
    },
    "RebootCacheCluster": {
      "input": {
        "type": "structure",
        "required": [
          "CacheClusterId",
          "CacheNodeIdsToReboot"
        ],
        "members": {
          "CacheClusterId": {},
          "CacheNodeIdsToReboot": {
            "shape": "Sy"
          }
        }
      },
      "output": {
        "resultWrapper": "RebootCacheClusterResult",
        "type": "structure",
        "members": {
          "CacheCluster": {
            "shape": "Su"
          }
        }
      }
    },
    "RemoveTagsFromResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName",
          "TagKeys"
        ],
        "members": {
          "ResourceName": {},
          "TagKeys": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "shape": "S5",
        "resultWrapper": "RemoveTagsFromResourceResult"
      }
    },
    "ResetCacheParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "CacheParameterGroupName"
        ],
        "members": {
          "CacheParameterGroupName": {},
          "ResetAllParameters": {
            "type": "boolean"
          },
          "ParameterNameValues": {
            "shape": "S3s"
          }
        }
      },
      "output": {
        "shape": "S3u",
        "resultWrapper": "ResetCacheParameterGroupResult"
      }
    },
    "RevokeCacheSecurityGroupIngress": {
      "input": {
        "type": "structure",
        "required": [
          "CacheSecurityGroupName",
          "EC2SecurityGroupName",
          "EC2SecurityGroupOwnerId"
        ],
        "members": {
          "CacheSecurityGroupName": {},
          "EC2SecurityGroupName": {},
          "EC2SecurityGroupOwnerId": {}
        }
      },
      "output": {
        "resultWrapper": "RevokeCacheSecurityGroupIngressResult",
        "type": "structure",
        "members": {
          "CacheSecurityGroup": {
            "shape": "S8"
          }
        }
      }
    },
    "TestFailover": {
      "input": {
        "type": "structure",
        "required": [
          "ReplicationGroupId",
          "NodeGroupId"
        ],
        "members": {
          "ReplicationGroupId": {},
          "NodeGroupId": {}
        }
      },
      "output": {
        "resultWrapper": "TestFailoverResult",
        "type": "structure",
        "members": {
          "ReplicationGroup": {
            "shape": "S1m"
          }
        }
      }
    }
  },
  "shapes": {
    "S3": {
      "type": "list",
      "member": {
        "locationName": "Tag",
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "S5": {
      "type": "structure",
      "members": {
        "TagList": {
          "shape": "S3"
        }
      }
    },
    "S8": {
      "type": "structure",
      "members": {
        "OwnerId": {},
        "CacheSecurityGroupName": {},
        "Description": {},
        "EC2SecurityGroups": {
          "type": "list",
          "member": {
            "locationName": "EC2SecurityGroup",
            "type": "structure",
            "members": {
              "Status": {},
              "EC2SecurityGroupName": {},
              "EC2SecurityGroupOwnerId": {}
            }
          }
        }
      },
      "wrapper": true
    },
    "Sd": {
      "type": "structure",
      "members": {
        "SnapshotName": {},
        "ReplicationGroupId": {},
        "ReplicationGroupDescription": {},
        "CacheClusterId": {},
        "SnapshotStatus": {},
        "SnapshotSource": {},
        "CacheNodeType": {},
        "Engine": {},
        "EngineVersion": {},
        "NumCacheNodes": {
          "type": "integer"
        },
        "PreferredAvailabilityZone": {},
        "CacheClusterCreateTime": {
          "type": "timestamp"
        },
        "PreferredMaintenanceWindow": {},
        "TopicArn": {},
        "Port": {
          "type": "integer"
        },
        "CacheParameterGroupName": {},
        "CacheSubnetGroupName": {},
        "VpcId": {},
        "AutoMinorVersionUpgrade": {
          "type": "boolean"
        },
        "SnapshotRetentionLimit": {
          "type": "integer"
        },
        "SnapshotWindow": {},
        "NumNodeGroups": {
          "type": "integer"
        },
        "AutomaticFailover": {},
        "NodeSnapshots": {
          "type": "list",
          "member": {
            "locationName": "NodeSnapshot",
            "type": "structure",
            "members": {
              "CacheClusterId": {},
              "NodeGroupId": {},
              "CacheNodeId": {},
              "NodeGroupConfiguration": {
                "shape": "Sk"
              },
              "CacheSize": {},
              "CacheNodeCreateTime": {
                "type": "timestamp"
              },
              "SnapshotCreateTime": {
                "type": "timestamp"
              }
            },
            "wrapper": true
          }
        }
      },
      "wrapper": true
    },
    "Sk": {
      "type": "structure",
      "members": {
        "Slots": {},
        "ReplicaCount": {
          "type": "integer"
        },
        "PrimaryAvailabilityZone": {},
        "ReplicaAvailabilityZones": {
          "shape": "Sl"
        }
      }
    },
    "Sl": {
      "type": "list",
      "member": {
        "locationName": "AvailabilityZone"
      }
    },
    "So": {
      "type": "list",
      "member": {
        "locationName": "PreferredAvailabilityZone"
      }
    },
    "Sp": {
      "type": "list",
      "member": {
        "locationName": "CacheSecurityGroupName"
      }
    },
    "Sq": {
      "type": "list",
      "member": {
        "locationName": "SecurityGroupId"
      }
    },
    "Sr": {
      "type": "list",
      "member": {
        "locationName": "SnapshotArn"
      }
    },
    "Su": {
      "type": "structure",
      "members": {
        "CacheClusterId": {},
        "ConfigurationEndpoint": {
          "shape": "Sv"
        },
        "ClientDownloadLandingPage": {},
        "CacheNodeType": {},
        "Engine": {},
        "EngineVersion": {},
        "CacheClusterStatus": {},
        "NumCacheNodes": {
          "type": "integer"
        },
        "PreferredAvailabilityZone": {},
        "CacheClusterCreateTime": {
          "type": "timestamp"
        },
        "PreferredMaintenanceWindow": {},
        "PendingModifiedValues": {
          "type": "structure",
          "members": {
            "NumCacheNodes": {
              "type": "integer"
            },
            "CacheNodeIdsToRemove": {
              "shape": "Sy"
            },
            "EngineVersion": {},
            "CacheNodeType": {}
          }
        },
        "NotificationConfiguration": {
          "type": "structure",
          "members": {
            "TopicArn": {},
            "TopicStatus": {}
          }
        },
        "CacheSecurityGroups": {
          "type": "list",
          "member": {
            "locationName": "CacheSecurityGroup",
            "type": "structure",
            "members": {
              "CacheSecurityGroupName": {},
              "Status": {}
            }
          }
        },
        "CacheParameterGroup": {
          "type": "structure",
          "members": {
            "CacheParameterGroupName": {},
            "ParameterApplyStatus": {},
            "CacheNodeIdsToReboot": {
              "shape": "Sy"
            }
          }
        },
        "CacheSubnetGroupName": {},
        "CacheNodes": {
          "type": "list",
          "member": {
            "locationName": "CacheNode",
            "type": "structure",
            "members": {
              "CacheNodeId": {},
              "CacheNodeStatus": {},
              "CacheNodeCreateTime": {
                "type": "timestamp"
              },
              "Endpoint": {
                "shape": "Sv"
              },
              "ParameterGroupStatus": {},
              "SourceCacheNodeId": {},
              "CustomerAvailabilityZone": {}
            }
          }
        },
        "AutoMinorVersionUpgrade": {
          "type": "boolean"
        },
        "SecurityGroups": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "SecurityGroupId": {},
              "Status": {}
            }
          }
        },
        "ReplicationGroupId": {},
        "SnapshotRetentionLimit": {
          "type": "integer"
        },
        "SnapshotWindow": {},
        "AuthTokenEnabled": {
          "type": "boolean"
        },
        "TransitEncryptionEnabled": {
          "type": "boolean"
        },
        "AtRestEncryptionEnabled": {
          "type": "boolean"
        }
      },
      "wrapper": true
    },
    "Sv": {
      "type": "structure",
      "members": {
        "Address": {},
        "Port": {
          "type": "integer"
        }
      }
    },
    "Sy": {
      "type": "list",
      "member": {
        "locationName": "CacheNodeId"
      }
    },
    "S19": {
      "type": "structure",
      "members": {
        "CacheParameterGroupName": {},
        "CacheParameterGroupFamily": {},
        "Description": {}
      },
      "wrapper": true
    },
    "S1d": {
      "type": "list",
      "member": {
        "locationName": "SubnetIdentifier"
      }
    },
    "S1f": {
      "type": "structure",
      "members": {
        "CacheSubnetGroupName": {},
        "CacheSubnetGroupDescription": {},
        "VpcId": {},
        "Subnets": {
          "type": "list",
          "member": {
            "locationName": "Subnet",
            "type": "structure",
            "members": {
              "SubnetIdentifier": {},
              "SubnetAvailabilityZone": {
                "type": "structure",
                "members": {
                  "Name": {}
                },
                "wrapper": true
              }
            }
          }
        }
      },
      "wrapper": true
    },
    "S1m": {
      "type": "structure",
      "members": {
        "ReplicationGroupId": {},
        "Description": {},
        "Status": {},
        "PendingModifiedValues": {
          "type": "structure",
          "members": {
            "PrimaryClusterId": {},
            "AutomaticFailoverStatus": {},
            "Resharding": {
              "type": "structure",
              "members": {
                "SlotMigration": {
                  "type": "structure",
                  "members": {
                    "ProgressPercentage": {
                      "type": "double"
                    }
                  }
                }
              }
            }
          }
        },
        "MemberClusters": {
          "type": "list",
          "member": {
            "locationName": "ClusterId"
          }
        },
        "NodeGroups": {
          "type": "list",
          "member": {
            "locationName": "NodeGroup",
            "type": "structure",
            "members": {
              "NodeGroupId": {},
              "Status": {},
              "PrimaryEndpoint": {
                "shape": "Sv"
              },
              "Slots": {},
              "NodeGroupMembers": {
                "type": "list",
                "member": {
                  "locationName": "NodeGroupMember",
                  "type": "structure",
                  "members": {
                    "CacheClusterId": {},
                    "CacheNodeId": {},
                    "ReadEndpoint": {
                      "shape": "Sv"
                    },
                    "PreferredAvailabilityZone": {},
                    "CurrentRole": {}
                  }
                }
              }
            }
          }
        },
        "SnapshottingClusterId": {},
        "AutomaticFailover": {},
        "ConfigurationEndpoint": {
          "shape": "Sv"
        },
        "SnapshotRetentionLimit": {
          "type": "integer"
        },
        "SnapshotWindow": {},
        "ClusterEnabled": {
          "type": "boolean"
        },
        "CacheNodeType": {},
        "AuthTokenEnabled": {
          "type": "boolean"
        },
        "TransitEncryptionEnabled": {
          "type": "boolean"
        },
        "AtRestEncryptionEnabled": {
          "type": "boolean"
        }
      },
      "wrapper": true
    },
    "S2k": {
      "type": "list",
      "member": {
        "locationName": "Parameter",
        "type": "structure",
        "members": {
          "ParameterName": {},
          "ParameterValue": {},
          "Description": {},
          "Source": {},
          "DataType": {},
          "AllowedValues": {},
          "IsModifiable": {
            "type": "boolean"
          },
          "MinimumEngineVersion": {},
          "ChangeType": {}
        }
      }
    },
    "S2n": {
      "type": "list",
      "member": {
        "locationName": "CacheNodeTypeSpecificParameter",
        "type": "structure",
        "members": {
          "ParameterName": {},
          "Description": {},
          "Source": {},
          "DataType": {},
          "AllowedValues": {},
          "IsModifiable": {
            "type": "boolean"
          },
          "MinimumEngineVersion": {},
          "CacheNodeTypeSpecificValues": {
            "type": "list",
            "member": {
              "locationName": "CacheNodeTypeSpecificValue",
              "type": "structure",
              "members": {
                "CacheNodeType": {},
                "Value": {}
              }
            }
          },
          "ChangeType": {}
        }
      }
    },
    "S3b": {
      "type": "structure",
      "members": {
        "ReservedCacheNodeId": {},
        "ReservedCacheNodesOfferingId": {},
        "CacheNodeType": {},
        "StartTime": {
          "type": "timestamp"
        },
        "Duration": {
          "type": "integer"
        },
        "FixedPrice": {
          "type": "double"
        },
        "UsagePrice": {
          "type": "double"
        },
        "CacheNodeCount": {
          "type": "integer"
        },
        "ProductDescription": {},
        "OfferingType": {},
        "State": {},
        "RecurringCharges": {
          "shape": "S3c"
        }
      },
      "wrapper": true
    },
    "S3c": {
      "type": "list",
      "member": {
        "locationName": "RecurringCharge",
        "type": "structure",
        "members": {
          "RecurringChargeAmount": {
            "type": "double"
          },
          "RecurringChargeFrequency": {}
        },
        "wrapper": true
      }
    },
    "S3s": {
      "type": "list",
      "member": {
        "locationName": "ParameterNameValue",
        "type": "structure",
        "members": {
          "ParameterName": {},
          "ParameterValue": {}
        }
      }
    },
    "S3u": {
      "type": "structure",
      "members": {
        "CacheParameterGroupName": {}
      }
    }
  }
}
},{}],57:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeCacheClusters": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "CacheClusters"
    },
    "DescribeCacheEngineVersions": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "CacheEngineVersions"
    },
    "DescribeCacheParameterGroups": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "CacheParameterGroups"
    },
    "DescribeCacheParameters": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "Parameters"
    },
    "DescribeCacheSecurityGroups": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "CacheSecurityGroups"
    },
    "DescribeCacheSubnetGroups": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "CacheSubnetGroups"
    },
    "DescribeEngineDefaultParameters": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "EngineDefaults.Marker",
      "result_key": "EngineDefaults.Parameters"
    },
    "DescribeEvents": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "Events"
    },
    "DescribeReplicationGroups": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "ReplicationGroups"
    },
    "DescribeReservedCacheNodes": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "ReservedCacheNodes"
    },
    "DescribeReservedCacheNodesOfferings": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "ReservedCacheNodesOfferings"
    },
    "DescribeSnapshots": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "Snapshots"
    }
  }
}
},{}],58:[function(require,module,exports){
module.exports={
    "version":2,
    "waiters":{
        "CacheClusterAvailable":{
            "acceptors":[
                {
                    "argument":"CacheClusters[].CacheClusterStatus",
                    "expected":"available",
                    "matcher":"pathAll",
                    "state":"success"
                },
                {
                    "argument":"CacheClusters[].CacheClusterStatus",
                    "expected":"deleted",
                    "matcher":"pathAny",
                    "state":"failure"
                },
                {
                    "argument":"CacheClusters[].CacheClusterStatus",
                    "expected":"deleting",
                    "matcher":"pathAny",
                    "state":"failure"
                },
                {
                    "argument":"CacheClusters[].CacheClusterStatus",
                    "expected":"incompatible-network",
                    "matcher":"pathAny",
                    "state":"failure"
                },
                {
                    "argument":"CacheClusters[].CacheClusterStatus",
                    "expected":"restore-failed",
                    "matcher":"pathAny",
                    "state":"failure"
                }
            ],
            "delay":15,
            "description":"Wait until ElastiCache cluster is available.",
            "maxAttempts":40,
            "operation":"DescribeCacheClusters"
        },
        "CacheClusterDeleted":{
            "acceptors":[
                {
                    "argument":"CacheClusters[].CacheClusterStatus",
                    "expected":"deleted",
                    "matcher":"pathAll",
                    "state":"success"
                },
                {
                    "expected":"CacheClusterNotFound",
                    "matcher":"error",
                    "state":"success"
                },
                {
                    "argument":"CacheClusters[].CacheClusterStatus",
                    "expected":"available",
                    "matcher":"pathAny",
                    "state":"failure"
                },
                {
                    "argument":"CacheClusters[].CacheClusterStatus",
                    "expected":"creating",
                    "matcher":"pathAny",
                    "state":"failure"
                },
                {
                    "argument":"CacheClusters[].CacheClusterStatus",
                    "expected":"incompatible-network",
                    "matcher":"pathAny",
                    "state":"failure"
                },
                {
                    "argument":"CacheClusters[].CacheClusterStatus",
                    "expected":"modifying",
                    "matcher":"pathAny",
                    "state":"failure"
                },
                {
                    "argument":"CacheClusters[].CacheClusterStatus",
                    "expected":"restore-failed",
                    "matcher":"pathAny",
                    "state":"failure"
                },
                {
                    "argument":"CacheClusters[].CacheClusterStatus",
                    "expected":"snapshotting",
                    "matcher":"pathAny",
                    "state":"failure"
                }
            ],
            "delay":15,
            "description":"Wait until ElastiCache cluster is deleted.",
            "maxAttempts":40,
            "operation":"DescribeCacheClusters"
        },
        "ReplicationGroupAvailable":{
            "acceptors":[
                {
                    "argument":"ReplicationGroups[].Status",
                    "expected":"available",
                    "matcher":"pathAll",
                    "state":"success"
                },
                {
                    "argument":"ReplicationGroups[].Status",
                    "expected":"deleted",
                    "matcher":"pathAny",
                    "state":"failure"
                }
            ],
            "delay":15,
            "description":"Wait until ElastiCache replication group is available.",
            "maxAttempts":40,
            "operation":"DescribeReplicationGroups"
        },
        "ReplicationGroupDeleted":{
            "acceptors":[
                {
                    "argument":"ReplicationGroups[].Status",
                    "expected":"deleted",
                    "matcher":"pathAll",
                    "state":"success"
                },
                {
                    "argument":"ReplicationGroups[].Status",
                    "expected":"available",
                    "matcher":"pathAny",
                    "state":"failure"
                },
                {
                    "expected":"ReplicationGroupNotFoundFault",
                    "matcher":"error",
                    "state":"success"
                }
            ],
            "delay":15,
            "description":"Wait until ElastiCache replication group is deleted.",
            "maxAttempts":40,
            "operation":"DescribeReplicationGroups"
        }
    }
}

},{}],59:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2010-12-01",
    "endpointPrefix": "elasticbeanstalk",
    "protocol": "query",
    "serviceAbbreviation": "Elastic Beanstalk",
    "serviceFullName": "AWS Elastic Beanstalk",
    "signatureVersion": "v4",
    "uid": "elasticbeanstalk-2010-12-01",
    "xmlNamespace": "http://elasticbeanstalk.amazonaws.com/docs/2010-12-01/"
  },
  "operations": {
    "AbortEnvironmentUpdate": {
      "input": {
        "type": "structure",
        "members": {
          "EnvironmentId": {},
          "EnvironmentName": {}
        }
      }
    },
    "ApplyEnvironmentManagedAction": {
      "input": {
        "type": "structure",
        "required": [
          "ActionId"
        ],
        "members": {
          "EnvironmentName": {},
          "EnvironmentId": {},
          "ActionId": {}
        }
      },
      "output": {
        "resultWrapper": "ApplyEnvironmentManagedActionResult",
        "type": "structure",
        "members": {
          "ActionId": {},
          "ActionDescription": {},
          "ActionType": {},
          "Status": {}
        }
      }
    },
    "CheckDNSAvailability": {
      "input": {
        "type": "structure",
        "required": [
          "CNAMEPrefix"
        ],
        "members": {
          "CNAMEPrefix": {}
        }
      },
      "output": {
        "resultWrapper": "CheckDNSAvailabilityResult",
        "type": "structure",
        "members": {
          "Available": {
            "type": "boolean"
          },
          "FullyQualifiedCNAME": {}
        }
      }
    },
    "ComposeEnvironments": {
      "input": {
        "type": "structure",
        "members": {
          "ApplicationName": {},
          "GroupName": {},
          "VersionLabels": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "shape": "Si",
        "resultWrapper": "ComposeEnvironmentsResult"
      }
    },
    "CreateApplication": {
      "input": {
        "type": "structure",
        "required": [
          "ApplicationName"
        ],
        "members": {
          "ApplicationName": {},
          "Description": {},
          "ResourceLifecycleConfig": {
            "shape": "S17"
          }
        }
      },
      "output": {
        "shape": "S1d",
        "resultWrapper": "CreateApplicationResult"
      }
    },
    "CreateApplicationVersion": {
      "input": {
        "type": "structure",
        "required": [
          "ApplicationName",
          "VersionLabel"
        ],
        "members": {
          "ApplicationName": {},
          "VersionLabel": {},
          "Description": {},
          "SourceBuildInformation": {
            "shape": "S1i"
          },
          "SourceBundle": {
            "shape": "S1m"
          },
          "BuildConfiguration": {
            "type": "structure",
            "required": [
              "CodeBuildServiceRole",
              "Image"
            ],
            "members": {
              "ArtifactName": {},
              "CodeBuildServiceRole": {},
              "ComputeType": {},
              "Image": {},
              "TimeoutInMinutes": {
                "type": "integer"
              }
            }
          },
          "AutoCreateApplication": {
            "type": "boolean"
          },
          "Process": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "shape": "S1u",
        "resultWrapper": "CreateApplicationVersionResult"
      }
    },
    "CreateConfigurationTemplate": {
      "input": {
        "type": "structure",
        "required": [
          "ApplicationName",
          "TemplateName"
        ],
        "members": {
          "ApplicationName": {},
          "TemplateName": {},
          "SolutionStackName": {},
          "PlatformArn": {},
          "SourceConfiguration": {
            "type": "structure",
            "members": {
              "ApplicationName": {},
              "TemplateName": {}
            }
          },
          "EnvironmentId": {},
          "Description": {},
          "OptionSettings": {
            "shape": "S1z"
          }
        }
      },
      "output": {
        "shape": "S25",
        "resultWrapper": "CreateConfigurationTemplateResult"
      }
    },
    "CreateEnvironment": {
      "input": {
        "type": "structure",
        "required": [
          "ApplicationName"
        ],
        "members": {
          "ApplicationName": {},
          "EnvironmentName": {},
          "GroupName": {},
          "Description": {},
          "CNAMEPrefix": {},
          "Tier": {
            "shape": "S11"
          },
          "Tags": {
            "type": "list",
            "member": {
              "shape": "S29"
            }
          },
          "VersionLabel": {},
          "TemplateName": {},
          "SolutionStackName": {},
          "PlatformArn": {},
          "OptionSettings": {
            "shape": "S1z"
          },
          "OptionsToRemove": {
            "shape": "S2c"
          }
        }
      },
      "output": {
        "shape": "Sk",
        "resultWrapper": "CreateEnvironmentResult"
      }
    },
    "CreatePlatformVersion": {
      "input": {
        "type": "structure",
        "required": [
          "PlatformName",
          "PlatformVersion",
          "PlatformDefinitionBundle"
        ],
        "members": {
          "PlatformName": {},
          "PlatformVersion": {},
          "PlatformDefinitionBundle": {
            "shape": "S1m"
          },
          "EnvironmentName": {},
          "OptionSettings": {
            "shape": "S1z"
          }
        }
      },
      "output": {
        "resultWrapper": "CreatePlatformVersionResult",
        "type": "structure",
        "members": {
          "PlatformSummary": {
            "shape": "S2i"
          },
          "Builder": {
            "type": "structure",
            "members": {
              "ARN": {}
            }
          }
        }
      }
    },
    "CreateStorageLocation": {
      "output": {
        "resultWrapper": "CreateStorageLocationResult",
        "type": "structure",
        "members": {
          "S3Bucket": {}
        }
      }
    },
    "DeleteApplication": {
      "input": {
        "type": "structure",
        "required": [
          "ApplicationName"
        ],
        "members": {
          "ApplicationName": {},
          "TerminateEnvByForce": {
            "type": "boolean"
          }
        }
      }
    },
    "DeleteApplicationVersion": {
      "input": {
        "type": "structure",
        "required": [
          "ApplicationName",
          "VersionLabel"
        ],
        "members": {
          "ApplicationName": {},
          "VersionLabel": {},
          "DeleteSourceBundle": {
            "type": "boolean"
          }
        }
      }
    },
    "DeleteConfigurationTemplate": {
      "input": {
        "type": "structure",
        "required": [
          "ApplicationName",
          "TemplateName"
        ],
        "members": {
          "ApplicationName": {},
          "TemplateName": {}
        }
      }
    },
    "DeleteEnvironmentConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "ApplicationName",
          "EnvironmentName"
        ],
        "members": {
          "ApplicationName": {},
          "EnvironmentName": {}
        }
      }
    },
    "DeletePlatformVersion": {
      "input": {
        "type": "structure",
        "members": {
          "PlatformArn": {}
        }
      },
      "output": {
        "resultWrapper": "DeletePlatformVersionResult",
        "type": "structure",
        "members": {
          "PlatformSummary": {
            "shape": "S2i"
          }
        }
      }
    },
    "DescribeApplicationVersions": {
      "input": {
        "type": "structure",
        "members": {
          "ApplicationName": {},
          "VersionLabels": {
            "shape": "S1f"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeApplicationVersionsResult",
        "type": "structure",
        "members": {
          "ApplicationVersions": {
            "type": "list",
            "member": {
              "shape": "S1v"
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeApplications": {
      "input": {
        "type": "structure",
        "members": {
          "ApplicationNames": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeApplicationsResult",
        "type": "structure",
        "members": {
          "Applications": {
            "type": "list",
            "member": {
              "shape": "S1e"
            }
          }
        }
      }
    },
    "DescribeConfigurationOptions": {
      "input": {
        "type": "structure",
        "members": {
          "ApplicationName": {},
          "TemplateName": {},
          "EnvironmentName": {},
          "SolutionStackName": {},
          "PlatformArn": {},
          "Options": {
            "shape": "S2c"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeConfigurationOptionsResult",
        "type": "structure",
        "members": {
          "SolutionStackName": {},
          "PlatformArn": {},
          "Options": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Namespace": {},
                "Name": {},
                "DefaultValue": {},
                "ChangeSeverity": {},
                "UserDefined": {
                  "type": "boolean"
                },
                "ValueType": {},
                "ValueOptions": {
                  "type": "list",
                  "member": {}
                },
                "MinValue": {
                  "type": "integer"
                },
                "MaxValue": {
                  "type": "integer"
                },
                "MaxLength": {
                  "type": "integer"
                },
                "Regex": {
                  "type": "structure",
                  "members": {
                    "Pattern": {},
                    "Label": {}
                  }
                }
              }
            }
          }
        }
      }
    },
    "DescribeConfigurationSettings": {
      "input": {
        "type": "structure",
        "required": [
          "ApplicationName"
        ],
        "members": {
          "ApplicationName": {},
          "TemplateName": {},
          "EnvironmentName": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeConfigurationSettingsResult",
        "type": "structure",
        "members": {
          "ConfigurationSettings": {
            "type": "list",
            "member": {
              "shape": "S25"
            }
          }
        }
      }
    },
    "DescribeEnvironmentHealth": {
      "input": {
        "type": "structure",
        "members": {
          "EnvironmentName": {},
          "EnvironmentId": {},
          "AttributeNames": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeEnvironmentHealthResult",
        "type": "structure",
        "members": {
          "EnvironmentName": {},
          "HealthStatus": {},
          "Status": {},
          "Color": {},
          "Causes": {
            "shape": "S3y"
          },
          "ApplicationMetrics": {
            "shape": "S40"
          },
          "InstancesHealth": {
            "type": "structure",
            "members": {
              "NoData": {
                "type": "integer"
              },
              "Unknown": {
                "type": "integer"
              },
              "Pending": {
                "type": "integer"
              },
              "Ok": {
                "type": "integer"
              },
              "Info": {
                "type": "integer"
              },
              "Warning": {
                "type": "integer"
              },
              "Degraded": {
                "type": "integer"
              },
              "Severe": {
                "type": "integer"
              }
            }
          },
          "RefreshedAt": {
            "type": "timestamp"
          }
        }
      }
    },
    "DescribeEnvironmentManagedActionHistory": {
      "input": {
        "type": "structure",
        "members": {
          "EnvironmentId": {},
          "EnvironmentName": {},
          "NextToken": {},
          "MaxItems": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeEnvironmentManagedActionHistoryResult",
        "type": "structure",
        "members": {
          "ManagedActionHistoryItems": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ActionId": {},
                "ActionType": {},
                "ActionDescription": {},
                "FailureType": {},
                "Status": {},
                "FailureDescription": {},
                "ExecutedTime": {
                  "type": "timestamp"
                },
                "FinishedTime": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeEnvironmentManagedActions": {
      "input": {
        "type": "structure",
        "members": {
          "EnvironmentName": {},
          "EnvironmentId": {},
          "Status": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEnvironmentManagedActionsResult",
        "type": "structure",
        "members": {
          "ManagedActions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ActionId": {},
                "ActionDescription": {},
                "ActionType": {},
                "Status": {},
                "WindowStartTime": {
                  "type": "timestamp"
                }
              }
            }
          }
        }
      }
    },
    "DescribeEnvironmentResources": {
      "input": {
        "type": "structure",
        "members": {
          "EnvironmentId": {},
          "EnvironmentName": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEnvironmentResourcesResult",
        "type": "structure",
        "members": {
          "EnvironmentResources": {
            "type": "structure",
            "members": {
              "EnvironmentName": {},
              "AutoScalingGroups": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "Name": {}
                  }
                }
              },
              "Instances": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "Id": {}
                  }
                }
              },
              "LaunchConfigurations": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "Name": {}
                  }
                }
              },
              "LoadBalancers": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "Name": {}
                  }
                }
              },
              "Triggers": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "Name": {}
                  }
                }
              },
              "Queues": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "Name": {},
                    "URL": {}
                  }
                }
              }
            }
          }
        }
      }
    },
    "DescribeEnvironments": {
      "input": {
        "type": "structure",
        "members": {
          "ApplicationName": {},
          "VersionLabel": {},
          "EnvironmentIds": {
            "type": "list",
            "member": {}
          },
          "EnvironmentNames": {
            "type": "list",
            "member": {}
          },
          "IncludeDeleted": {
            "type": "boolean"
          },
          "IncludedDeletedBackTo": {
            "type": "timestamp"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "shape": "Si",
        "resultWrapper": "DescribeEnvironmentsResult"
      }
    },
    "DescribeEvents": {
      "input": {
        "type": "structure",
        "members": {
          "ApplicationName": {},
          "VersionLabel": {},
          "TemplateName": {},
          "EnvironmentId": {},
          "EnvironmentName": {},
          "PlatformArn": {},
          "RequestId": {},
          "Severity": {},
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEventsResult",
        "type": "structure",
        "members": {
          "Events": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "EventDate": {
                  "type": "timestamp"
                },
                "Message": {},
                "ApplicationName": {},
                "VersionLabel": {},
                "TemplateName": {},
                "EnvironmentName": {},
                "PlatformArn": {},
                "RequestId": {},
                "Severity": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeInstancesHealth": {
      "input": {
        "type": "structure",
        "members": {
          "EnvironmentName": {},
          "EnvironmentId": {},
          "AttributeNames": {
            "type": "list",
            "member": {}
          },
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeInstancesHealthResult",
        "type": "structure",
        "members": {
          "InstanceHealthList": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "InstanceId": {},
                "HealthStatus": {},
                "Color": {},
                "Causes": {
                  "shape": "S3y"
                },
                "LaunchedAt": {
                  "type": "timestamp"
                },
                "ApplicationMetrics": {
                  "shape": "S40"
                },
                "System": {
                  "type": "structure",
                  "members": {
                    "CPUUtilization": {
                      "type": "structure",
                      "members": {
                        "User": {
                          "type": "double"
                        },
                        "Nice": {
                          "type": "double"
                        },
                        "System": {
                          "type": "double"
                        },
                        "Idle": {
                          "type": "double"
                        },
                        "IOWait": {
                          "type": "double"
                        },
                        "IRQ": {
                          "type": "double"
                        },
                        "SoftIRQ": {
                          "type": "double"
                        }
                      }
                    },
                    "LoadAverage": {
                      "type": "list",
                      "member": {
                        "type": "double"
                      }
                    }
                  }
                },
                "Deployment": {
                  "type": "structure",
                  "members": {
                    "VersionLabel": {},
                    "DeploymentId": {
                      "type": "long"
                    },
                    "Status": {},
                    "DeploymentTime": {
                      "type": "timestamp"
                    }
                  }
                },
                "AvailabilityZone": {},
                "InstanceType": {}
              }
            }
          },
          "RefreshedAt": {
            "type": "timestamp"
          },
          "NextToken": {}
        }
      }
    },
    "DescribePlatformVersion": {
      "input": {
        "type": "structure",
        "members": {
          "PlatformArn": {}
        }
      },
      "output": {
        "resultWrapper": "DescribePlatformVersionResult",
        "type": "structure",
        "members": {
          "PlatformDescription": {
            "type": "structure",
            "members": {
              "PlatformArn": {},
              "PlatformOwner": {},
              "PlatformName": {},
              "PlatformVersion": {},
              "SolutionStackName": {},
              "PlatformStatus": {},
              "DateCreated": {
                "type": "timestamp"
              },
              "DateUpdated": {
                "type": "timestamp"
              },
              "PlatformCategory": {},
              "Description": {},
              "Maintainer": {},
              "OperatingSystemName": {},
              "OperatingSystemVersion": {},
              "ProgrammingLanguages": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "Name": {},
                    "Version": {}
                  }
                }
              },
              "Frameworks": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "Name": {},
                    "Version": {}
                  }
                }
              },
              "CustomAmiList": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "VirtualizationType": {},
                    "ImageId": {}
                  }
                }
              },
              "SupportedTierList": {
                "shape": "S2o"
              },
              "SupportedAddonList": {
                "shape": "S2q"
              }
            }
          }
        }
      }
    },
    "ListAvailableSolutionStacks": {
      "output": {
        "resultWrapper": "ListAvailableSolutionStacksResult",
        "type": "structure",
        "members": {
          "SolutionStacks": {
            "type": "list",
            "member": {}
          },
          "SolutionStackDetails": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "SolutionStackName": {},
                "PermittedFileTypes": {
                  "type": "list",
                  "member": {}
                }
              }
            }
          }
        }
      }
    },
    "ListPlatformVersions": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Type": {},
                "Operator": {},
                "Values": {
                  "type": "list",
                  "member": {}
                }
              }
            }
          },
          "MaxRecords": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "ListPlatformVersionsResult",
        "type": "structure",
        "members": {
          "PlatformSummaryList": {
            "type": "list",
            "member": {
              "shape": "S2i"
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListTagsForResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArn"
        ],
        "members": {
          "ResourceArn": {}
        }
      },
      "output": {
        "resultWrapper": "ListTagsForResourceResult",
        "type": "structure",
        "members": {
          "ResourceArn": {},
          "ResourceTags": {
            "shape": "S6q"
          }
        }
      }
    },
    "RebuildEnvironment": {
      "input": {
        "type": "structure",
        "members": {
          "EnvironmentId": {},
          "EnvironmentName": {}
        }
      }
    },
    "RequestEnvironmentInfo": {
      "input": {
        "type": "structure",
        "required": [
          "InfoType"
        ],
        "members": {
          "EnvironmentId": {},
          "EnvironmentName": {},
          "InfoType": {}
        }
      }
    },
    "RestartAppServer": {
      "input": {
        "type": "structure",
        "members": {
          "EnvironmentId": {},
          "EnvironmentName": {}
        }
      }
    },
    "RetrieveEnvironmentInfo": {
      "input": {
        "type": "structure",
        "required": [
          "InfoType"
        ],
        "members": {
          "EnvironmentId": {},
          "EnvironmentName": {},
          "InfoType": {}
        }
      },
      "output": {
        "resultWrapper": "RetrieveEnvironmentInfoResult",
        "type": "structure",
        "members": {
          "EnvironmentInfo": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "InfoType": {},
                "Ec2InstanceId": {},
                "SampleTimestamp": {
                  "type": "timestamp"
                },
                "Message": {}
              }
            }
          }
        }
      }
    },
    "SwapEnvironmentCNAMEs": {
      "input": {
        "type": "structure",
        "members": {
          "SourceEnvironmentId": {},
          "SourceEnvironmentName": {},
          "DestinationEnvironmentId": {},
          "DestinationEnvironmentName": {}
        }
      }
    },
    "TerminateEnvironment": {
      "input": {
        "type": "structure",
        "members": {
          "EnvironmentId": {},
          "EnvironmentName": {},
          "TerminateResources": {
            "type": "boolean"
          },
          "ForceTerminate": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "shape": "Sk",
        "resultWrapper": "TerminateEnvironmentResult"
      }
    },
    "UpdateApplication": {
      "input": {
        "type": "structure",
        "required": [
          "ApplicationName"
        ],
        "members": {
          "ApplicationName": {},
          "Description": {}
        }
      },
      "output": {
        "shape": "S1d",
        "resultWrapper": "UpdateApplicationResult"
      }
    },
    "UpdateApplicationResourceLifecycle": {
      "input": {
        "type": "structure",
        "required": [
          "ApplicationName",
          "ResourceLifecycleConfig"
        ],
        "members": {
          "ApplicationName": {},
          "ResourceLifecycleConfig": {
            "shape": "S17"
          }
        }
      },
      "output": {
        "resultWrapper": "UpdateApplicationResourceLifecycleResult",
        "type": "structure",
        "members": {
          "ApplicationName": {},
          "ResourceLifecycleConfig": {
            "shape": "S17"
          }
        }
      }
    },
    "UpdateApplicationVersion": {
      "input": {
        "type": "structure",
        "required": [
          "ApplicationName",
          "VersionLabel"
        ],
        "members": {
          "ApplicationName": {},
          "VersionLabel": {},
          "Description": {}
        }
      },
      "output": {
        "shape": "S1u",
        "resultWrapper": "UpdateApplicationVersionResult"
      }
    },
    "UpdateConfigurationTemplate": {
      "input": {
        "type": "structure",
        "required": [
          "ApplicationName",
          "TemplateName"
        ],
        "members": {
          "ApplicationName": {},
          "TemplateName": {},
          "Description": {},
          "OptionSettings": {
            "shape": "S1z"
          },
          "OptionsToRemove": {
            "shape": "S2c"
          }
        }
      },
      "output": {
        "shape": "S25",
        "resultWrapper": "UpdateConfigurationTemplateResult"
      }
    },
    "UpdateEnvironment": {
      "input": {
        "type": "structure",
        "members": {
          "ApplicationName": {},
          "EnvironmentId": {},
          "EnvironmentName": {},
          "GroupName": {},
          "Description": {},
          "Tier": {
            "shape": "S11"
          },
          "VersionLabel": {},
          "TemplateName": {},
          "SolutionStackName": {},
          "PlatformArn": {},
          "OptionSettings": {
            "shape": "S1z"
          },
          "OptionsToRemove": {
            "shape": "S2c"
          }
        }
      },
      "output": {
        "shape": "Sk",
        "resultWrapper": "UpdateEnvironmentResult"
      }
    },
    "UpdateTagsForResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArn"
        ],
        "members": {
          "ResourceArn": {},
          "TagsToAdd": {
            "shape": "S6q"
          },
          "TagsToRemove": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "ValidateConfigurationSettings": {
      "input": {
        "type": "structure",
        "required": [
          "ApplicationName",
          "OptionSettings"
        ],
        "members": {
          "ApplicationName": {},
          "TemplateName": {},
          "EnvironmentName": {},
          "OptionSettings": {
            "shape": "S1z"
          }
        }
      },
      "output": {
        "resultWrapper": "ValidateConfigurationSettingsResult",
        "type": "structure",
        "members": {
          "Messages": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Message": {},
                "Severity": {},
                "Namespace": {},
                "OptionName": {}
              }
            }
          }
        }
      }
    }
  },
  "shapes": {
    "Si": {
      "type": "structure",
      "members": {
        "Environments": {
          "type": "list",
          "member": {
            "shape": "Sk"
          }
        },
        "NextToken": {}
      }
    },
    "Sk": {
      "type": "structure",
      "members": {
        "EnvironmentName": {},
        "EnvironmentId": {},
        "ApplicationName": {},
        "VersionLabel": {},
        "SolutionStackName": {},
        "PlatformArn": {},
        "TemplateName": {},
        "Description": {},
        "EndpointURL": {},
        "CNAME": {},
        "DateCreated": {
          "type": "timestamp"
        },
        "DateUpdated": {
          "type": "timestamp"
        },
        "Status": {},
        "AbortableOperationInProgress": {
          "type": "boolean"
        },
        "Health": {},
        "HealthStatus": {},
        "Resources": {
          "type": "structure",
          "members": {
            "LoadBalancer": {
              "type": "structure",
              "members": {
                "LoadBalancerName": {},
                "Domain": {},
                "Listeners": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "Protocol": {},
                      "Port": {
                        "type": "integer"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "Tier": {
          "shape": "S11"
        },
        "EnvironmentLinks": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "LinkName": {},
              "EnvironmentName": {}
            }
          }
        },
        "EnvironmentArn": {}
      }
    },
    "S11": {
      "type": "structure",
      "members": {
        "Name": {},
        "Type": {},
        "Version": {}
      }
    },
    "S17": {
      "type": "structure",
      "members": {
        "ServiceRole": {},
        "VersionLifecycleConfig": {
          "type": "structure",
          "members": {
            "MaxCountRule": {
              "type": "structure",
              "required": [
                "Enabled"
              ],
              "members": {
                "Enabled": {
                  "type": "boolean"
                },
                "MaxCount": {
                  "type": "integer"
                },
                "DeleteSourceFromS3": {
                  "type": "boolean"
                }
              }
            },
            "MaxAgeRule": {
              "type": "structure",
              "required": [
                "Enabled"
              ],
              "members": {
                "Enabled": {
                  "type": "boolean"
                },
                "MaxAgeInDays": {
                  "type": "integer"
                },
                "DeleteSourceFromS3": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      }
    },
    "S1d": {
      "type": "structure",
      "members": {
        "Application": {
          "shape": "S1e"
        }
      }
    },
    "S1e": {
      "type": "structure",
      "members": {
        "ApplicationName": {},
        "Description": {},
        "DateCreated": {
          "type": "timestamp"
        },
        "DateUpdated": {
          "type": "timestamp"
        },
        "Versions": {
          "shape": "S1f"
        },
        "ConfigurationTemplates": {
          "type": "list",
          "member": {}
        },
        "ResourceLifecycleConfig": {
          "shape": "S17"
        }
      }
    },
    "S1f": {
      "type": "list",
      "member": {}
    },
    "S1i": {
      "type": "structure",
      "required": [
        "SourceType",
        "SourceRepository",
        "SourceLocation"
      ],
      "members": {
        "SourceType": {},
        "SourceRepository": {},
        "SourceLocation": {}
      }
    },
    "S1m": {
      "type": "structure",
      "members": {
        "S3Bucket": {},
        "S3Key": {}
      }
    },
    "S1u": {
      "type": "structure",
      "members": {
        "ApplicationVersion": {
          "shape": "S1v"
        }
      }
    },
    "S1v": {
      "type": "structure",
      "members": {
        "ApplicationName": {},
        "Description": {},
        "VersionLabel": {},
        "SourceBuildInformation": {
          "shape": "S1i"
        },
        "BuildArn": {},
        "SourceBundle": {
          "shape": "S1m"
        },
        "DateCreated": {
          "type": "timestamp"
        },
        "DateUpdated": {
          "type": "timestamp"
        },
        "Status": {}
      }
    },
    "S1z": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "ResourceName": {},
          "Namespace": {},
          "OptionName": {},
          "Value": {}
        }
      }
    },
    "S25": {
      "type": "structure",
      "members": {
        "SolutionStackName": {},
        "PlatformArn": {},
        "ApplicationName": {},
        "TemplateName": {},
        "Description": {},
        "EnvironmentName": {},
        "DeploymentStatus": {},
        "DateCreated": {
          "type": "timestamp"
        },
        "DateUpdated": {
          "type": "timestamp"
        },
        "OptionSettings": {
          "shape": "S1z"
        }
      }
    },
    "S29": {
      "type": "structure",
      "members": {
        "Key": {},
        "Value": {}
      }
    },
    "S2c": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "ResourceName": {},
          "Namespace": {},
          "OptionName": {}
        }
      }
    },
    "S2i": {
      "type": "structure",
      "members": {
        "PlatformArn": {},
        "PlatformOwner": {},
        "PlatformStatus": {},
        "PlatformCategory": {},
        "OperatingSystemName": {},
        "OperatingSystemVersion": {},
        "SupportedTierList": {
          "shape": "S2o"
        },
        "SupportedAddonList": {
          "shape": "S2q"
        }
      }
    },
    "S2o": {
      "type": "list",
      "member": {}
    },
    "S2q": {
      "type": "list",
      "member": {}
    },
    "S3y": {
      "type": "list",
      "member": {}
    },
    "S40": {
      "type": "structure",
      "members": {
        "Duration": {
          "type": "integer"
        },
        "RequestCount": {
          "type": "integer"
        },
        "StatusCodes": {
          "type": "structure",
          "members": {
            "Status2xx": {
              "type": "integer"
            },
            "Status3xx": {
              "type": "integer"
            },
            "Status4xx": {
              "type": "integer"
            },
            "Status5xx": {
              "type": "integer"
            }
          }
        },
        "Latency": {
          "type": "structure",
          "members": {
            "P999": {
              "type": "double"
            },
            "P99": {
              "type": "double"
            },
            "P95": {
              "type": "double"
            },
            "P90": {
              "type": "double"
            },
            "P85": {
              "type": "double"
            },
            "P75": {
              "type": "double"
            },
            "P50": {
              "type": "double"
            },
            "P10": {
              "type": "double"
            }
          }
        }
      }
    },
    "S6q": {
      "type": "list",
      "member": {
        "shape": "S29"
      }
    }
  }
}
},{}],60:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeApplicationVersions": {
      "result_key": "ApplicationVersions"
    },
    "DescribeApplications": {
      "result_key": "Applications"
    },
    "DescribeConfigurationOptions": {
      "result_key": "Options"
    },
    "DescribeEnvironments": {
      "result_key": "Environments"
    },
    "DescribeEvents": {
      "input_token": "NextToken",
      "limit_key": "MaxRecords",
      "output_token": "NextToken",
      "result_key": "Events"
    },
    "ListAvailableSolutionStacks": {
      "result_key": "SolutionStacks"
    }
  }
}
},{}],61:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-02-01",
    "endpointPrefix": "elasticfilesystem",
    "protocol": "rest-json",
    "serviceAbbreviation": "EFS",
    "serviceFullName": "Amazon Elastic File System",
    "signatureVersion": "v4",
    "uid": "elasticfilesystem-2015-02-01"
  },
  "operations": {
    "CreateFileSystem": {
      "http": {
        "requestUri": "/2015-02-01/file-systems",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "CreationToken"
        ],
        "members": {
          "CreationToken": {},
          "PerformanceMode": {},
          "Encrypted": {
            "type": "boolean"
          },
          "KmsKeyId": {}
        }
      },
      "output": {
        "shape": "S6"
      }
    },
    "CreateMountTarget": {
      "http": {
        "requestUri": "/2015-02-01/mount-targets",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FileSystemId",
          "SubnetId"
        ],
        "members": {
          "FileSystemId": {},
          "SubnetId": {},
          "IpAddress": {},
          "SecurityGroups": {
            "shape": "Si"
          }
        }
      },
      "output": {
        "shape": "Sk"
      }
    },
    "CreateTags": {
      "http": {
        "requestUri": "/2015-02-01/create-tags/{FileSystemId}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "FileSystemId",
          "Tags"
        ],
        "members": {
          "FileSystemId": {
            "location": "uri",
            "locationName": "FileSystemId"
          },
          "Tags": {
            "shape": "So"
          }
        }
      }
    },
    "DeleteFileSystem": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2015-02-01/file-systems/{FileSystemId}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "FileSystemId"
        ],
        "members": {
          "FileSystemId": {
            "location": "uri",
            "locationName": "FileSystemId"
          }
        }
      }
    },
    "DeleteMountTarget": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2015-02-01/mount-targets/{MountTargetId}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "MountTargetId"
        ],
        "members": {
          "MountTargetId": {
            "location": "uri",
            "locationName": "MountTargetId"
          }
        }
      }
    },
    "DeleteTags": {
      "http": {
        "requestUri": "/2015-02-01/delete-tags/{FileSystemId}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "FileSystemId",
          "TagKeys"
        ],
        "members": {
          "FileSystemId": {
            "location": "uri",
            "locationName": "FileSystemId"
          },
          "TagKeys": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "DescribeFileSystems": {
      "http": {
        "method": "GET",
        "requestUri": "/2015-02-01/file-systems",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems",
            "type": "integer"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "CreationToken": {
            "location": "querystring",
            "locationName": "CreationToken"
          },
          "FileSystemId": {
            "location": "querystring",
            "locationName": "FileSystemId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Marker": {},
          "FileSystems": {
            "type": "list",
            "member": {
              "shape": "S6"
            }
          },
          "NextMarker": {}
        }
      }
    },
    "DescribeMountTargetSecurityGroups": {
      "http": {
        "method": "GET",
        "requestUri": "/2015-02-01/mount-targets/{MountTargetId}/security-groups",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "MountTargetId"
        ],
        "members": {
          "MountTargetId": {
            "location": "uri",
            "locationName": "MountTargetId"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "SecurityGroups"
        ],
        "members": {
          "SecurityGroups": {
            "shape": "Si"
          }
        }
      }
    },
    "DescribeMountTargets": {
      "http": {
        "method": "GET",
        "requestUri": "/2015-02-01/mount-targets",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems",
            "type": "integer"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "FileSystemId": {
            "location": "querystring",
            "locationName": "FileSystemId"
          },
          "MountTargetId": {
            "location": "querystring",
            "locationName": "MountTargetId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Marker": {},
          "MountTargets": {
            "type": "list",
            "member": {
              "shape": "Sk"
            }
          },
          "NextMarker": {}
        }
      }
    },
    "DescribeTags": {
      "http": {
        "method": "GET",
        "requestUri": "/2015-02-01/tags/{FileSystemId}/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FileSystemId"
        ],
        "members": {
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems",
            "type": "integer"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "FileSystemId": {
            "location": "uri",
            "locationName": "FileSystemId"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Tags"
        ],
        "members": {
          "Marker": {},
          "Tags": {
            "shape": "So"
          },
          "NextMarker": {}
        }
      }
    },
    "ModifyMountTargetSecurityGroups": {
      "http": {
        "method": "PUT",
        "requestUri": "/2015-02-01/mount-targets/{MountTargetId}/security-groups",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "MountTargetId"
        ],
        "members": {
          "MountTargetId": {
            "location": "uri",
            "locationName": "MountTargetId"
          },
          "SecurityGroups": {
            "shape": "Si"
          }
        }
      }
    }
  },
  "shapes": {
    "S6": {
      "type": "structure",
      "required": [
        "OwnerId",
        "CreationToken",
        "FileSystemId",
        "CreationTime",
        "LifeCycleState",
        "NumberOfMountTargets",
        "SizeInBytes",
        "PerformanceMode"
      ],
      "members": {
        "OwnerId": {},
        "CreationToken": {},
        "FileSystemId": {},
        "CreationTime": {
          "type": "timestamp"
        },
        "LifeCycleState": {},
        "Name": {},
        "NumberOfMountTargets": {
          "type": "integer"
        },
        "SizeInBytes": {
          "type": "structure",
          "required": [
            "Value"
          ],
          "members": {
            "Value": {
              "type": "long"
            },
            "Timestamp": {
              "type": "timestamp"
            }
          }
        },
        "PerformanceMode": {},
        "Encrypted": {
          "type": "boolean"
        },
        "KmsKeyId": {}
      }
    },
    "Si": {
      "type": "list",
      "member": {}
    },
    "Sk": {
      "type": "structure",
      "required": [
        "MountTargetId",
        "FileSystemId",
        "SubnetId",
        "LifeCycleState"
      ],
      "members": {
        "OwnerId": {},
        "MountTargetId": {},
        "FileSystemId": {},
        "SubnetId": {},
        "LifeCycleState": {},
        "IpAddress": {},
        "NetworkInterfaceId": {}
      }
    },
    "So": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Key",
          "Value"
        ],
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    }
  }
}
},{}],62:[function(require,module,exports){
arguments[4][19][0].apply(exports,arguments)
},{"dup":19}],63:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2012-06-01",
    "endpointPrefix": "elasticloadbalancing",
    "protocol": "query",
    "serviceFullName": "Elastic Load Balancing",
    "signatureVersion": "v4",
    "uid": "elasticloadbalancing-2012-06-01",
    "xmlNamespace": "http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/"
  },
  "operations": {
    "AddTags": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerNames",
          "Tags"
        ],
        "members": {
          "LoadBalancerNames": {
            "shape": "S2"
          },
          "Tags": {
            "shape": "S4"
          }
        }
      },
      "output": {
        "resultWrapper": "AddTagsResult",
        "type": "structure",
        "members": {}
      }
    },
    "ApplySecurityGroupsToLoadBalancer": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "SecurityGroups"
        ],
        "members": {
          "LoadBalancerName": {},
          "SecurityGroups": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "resultWrapper": "ApplySecurityGroupsToLoadBalancerResult",
        "type": "structure",
        "members": {
          "SecurityGroups": {
            "shape": "Sa"
          }
        }
      }
    },
    "AttachLoadBalancerToSubnets": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "Subnets"
        ],
        "members": {
          "LoadBalancerName": {},
          "Subnets": {
            "shape": "Se"
          }
        }
      },
      "output": {
        "resultWrapper": "AttachLoadBalancerToSubnetsResult",
        "type": "structure",
        "members": {
          "Subnets": {
            "shape": "Se"
          }
        }
      }
    },
    "ConfigureHealthCheck": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "HealthCheck"
        ],
        "members": {
          "LoadBalancerName": {},
          "HealthCheck": {
            "shape": "Si"
          }
        }
      },
      "output": {
        "resultWrapper": "ConfigureHealthCheckResult",
        "type": "structure",
        "members": {
          "HealthCheck": {
            "shape": "Si"
          }
        }
      }
    },
    "CreateAppCookieStickinessPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "PolicyName",
          "CookieName"
        ],
        "members": {
          "LoadBalancerName": {},
          "PolicyName": {},
          "CookieName": {}
        }
      },
      "output": {
        "resultWrapper": "CreateAppCookieStickinessPolicyResult",
        "type": "structure",
        "members": {}
      }
    },
    "CreateLBCookieStickinessPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "PolicyName"
        ],
        "members": {
          "LoadBalancerName": {},
          "PolicyName": {},
          "CookieExpirationPeriod": {
            "type": "long"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateLBCookieStickinessPolicyResult",
        "type": "structure",
        "members": {}
      }
    },
    "CreateLoadBalancer": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "Listeners"
        ],
        "members": {
          "LoadBalancerName": {},
          "Listeners": {
            "shape": "Sx"
          },
          "AvailabilityZones": {
            "shape": "S13"
          },
          "Subnets": {
            "shape": "Se"
          },
          "SecurityGroups": {
            "shape": "Sa"
          },
          "Scheme": {},
          "Tags": {
            "shape": "S4"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateLoadBalancerResult",
        "type": "structure",
        "members": {
          "DNSName": {}
        }
      }
    },
    "CreateLoadBalancerListeners": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "Listeners"
        ],
        "members": {
          "LoadBalancerName": {},
          "Listeners": {
            "shape": "Sx"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateLoadBalancerListenersResult",
        "type": "structure",
        "members": {}
      }
    },
    "CreateLoadBalancerPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "PolicyName",
          "PolicyTypeName"
        ],
        "members": {
          "LoadBalancerName": {},
          "PolicyName": {},
          "PolicyTypeName": {},
          "PolicyAttributes": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "AttributeName": {},
                "AttributeValue": {}
              }
            }
          }
        }
      },
      "output": {
        "resultWrapper": "CreateLoadBalancerPolicyResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteLoadBalancer": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName"
        ],
        "members": {
          "LoadBalancerName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteLoadBalancerResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteLoadBalancerListeners": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "LoadBalancerPorts"
        ],
        "members": {
          "LoadBalancerName": {},
          "LoadBalancerPorts": {
            "type": "list",
            "member": {
              "type": "integer"
            }
          }
        }
      },
      "output": {
        "resultWrapper": "DeleteLoadBalancerListenersResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteLoadBalancerPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "PolicyName"
        ],
        "members": {
          "LoadBalancerName": {},
          "PolicyName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteLoadBalancerPolicyResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeregisterInstancesFromLoadBalancer": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "Instances"
        ],
        "members": {
          "LoadBalancerName": {},
          "Instances": {
            "shape": "S1p"
          }
        }
      },
      "output": {
        "resultWrapper": "DeregisterInstancesFromLoadBalancerResult",
        "type": "structure",
        "members": {
          "Instances": {
            "shape": "S1p"
          }
        }
      }
    },
    "DescribeAccountLimits": {
      "input": {
        "type": "structure",
        "members": {
          "Marker": {},
          "PageSize": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeAccountLimitsResult",
        "type": "structure",
        "members": {
          "Limits": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "Max": {}
              }
            }
          },
          "NextMarker": {}
        }
      }
    },
    "DescribeInstanceHealth": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName"
        ],
        "members": {
          "LoadBalancerName": {},
          "Instances": {
            "shape": "S1p"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeInstanceHealthResult",
        "type": "structure",
        "members": {
          "InstanceStates": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "InstanceId": {},
                "State": {},
                "ReasonCode": {},
                "Description": {}
              }
            }
          }
        }
      }
    },
    "DescribeLoadBalancerAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName"
        ],
        "members": {
          "LoadBalancerName": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeLoadBalancerAttributesResult",
        "type": "structure",
        "members": {
          "LoadBalancerAttributes": {
            "shape": "S2a"
          }
        }
      }
    },
    "DescribeLoadBalancerPolicies": {
      "input": {
        "type": "structure",
        "members": {
          "LoadBalancerName": {},
          "PolicyNames": {
            "shape": "S2s"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeLoadBalancerPoliciesResult",
        "type": "structure",
        "members": {
          "PolicyDescriptions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "PolicyName": {},
                "PolicyTypeName": {},
                "PolicyAttributeDescriptions": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "AttributeName": {},
                      "AttributeValue": {}
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "DescribeLoadBalancerPolicyTypes": {
      "input": {
        "type": "structure",
        "members": {
          "PolicyTypeNames": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeLoadBalancerPolicyTypesResult",
        "type": "structure",
        "members": {
          "PolicyTypeDescriptions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "PolicyTypeName": {},
                "Description": {},
                "PolicyAttributeTypeDescriptions": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "AttributeName": {},
                      "AttributeType": {},
                      "Description": {},
                      "DefaultValue": {},
                      "Cardinality": {}
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "DescribeLoadBalancers": {
      "input": {
        "type": "structure",
        "members": {
          "LoadBalancerNames": {
            "shape": "S2"
          },
          "Marker": {},
          "PageSize": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeLoadBalancersResult",
        "type": "structure",
        "members": {
          "LoadBalancerDescriptions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "LoadBalancerName": {},
                "DNSName": {},
                "CanonicalHostedZoneName": {},
                "CanonicalHostedZoneNameID": {},
                "ListenerDescriptions": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "Listener": {
                        "shape": "Sy"
                      },
                      "PolicyNames": {
                        "shape": "S2s"
                      }
                    }
                  }
                },
                "Policies": {
                  "type": "structure",
                  "members": {
                    "AppCookieStickinessPolicies": {
                      "type": "list",
                      "member": {
                        "type": "structure",
                        "members": {
                          "PolicyName": {},
                          "CookieName": {}
                        }
                      }
                    },
                    "LBCookieStickinessPolicies": {
                      "type": "list",
                      "member": {
                        "type": "structure",
                        "members": {
                          "PolicyName": {},
                          "CookieExpirationPeriod": {
                            "type": "long"
                          }
                        }
                      }
                    },
                    "OtherPolicies": {
                      "shape": "S2s"
                    }
                  }
                },
                "BackendServerDescriptions": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "InstancePort": {
                        "type": "integer"
                      },
                      "PolicyNames": {
                        "shape": "S2s"
                      }
                    }
                  }
                },
                "AvailabilityZones": {
                  "shape": "S13"
                },
                "Subnets": {
                  "shape": "Se"
                },
                "VPCId": {},
                "Instances": {
                  "shape": "S1p"
                },
                "HealthCheck": {
                  "shape": "Si"
                },
                "SourceSecurityGroup": {
                  "type": "structure",
                  "members": {
                    "OwnerAlias": {},
                    "GroupName": {}
                  }
                },
                "SecurityGroups": {
                  "shape": "Sa"
                },
                "CreatedTime": {
                  "type": "timestamp"
                },
                "Scheme": {}
              }
            }
          },
          "NextMarker": {}
        }
      }
    },
    "DescribeTags": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerNames"
        ],
        "members": {
          "LoadBalancerNames": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeTagsResult",
        "type": "structure",
        "members": {
          "TagDescriptions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "LoadBalancerName": {},
                "Tags": {
                  "shape": "S4"
                }
              }
            }
          }
        }
      }
    },
    "DetachLoadBalancerFromSubnets": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "Subnets"
        ],
        "members": {
          "LoadBalancerName": {},
          "Subnets": {
            "shape": "Se"
          }
        }
      },
      "output": {
        "resultWrapper": "DetachLoadBalancerFromSubnetsResult",
        "type": "structure",
        "members": {
          "Subnets": {
            "shape": "Se"
          }
        }
      }
    },
    "DisableAvailabilityZonesForLoadBalancer": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "AvailabilityZones"
        ],
        "members": {
          "LoadBalancerName": {},
          "AvailabilityZones": {
            "shape": "S13"
          }
        }
      },
      "output": {
        "resultWrapper": "DisableAvailabilityZonesForLoadBalancerResult",
        "type": "structure",
        "members": {
          "AvailabilityZones": {
            "shape": "S13"
          }
        }
      }
    },
    "EnableAvailabilityZonesForLoadBalancer": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "AvailabilityZones"
        ],
        "members": {
          "LoadBalancerName": {},
          "AvailabilityZones": {
            "shape": "S13"
          }
        }
      },
      "output": {
        "resultWrapper": "EnableAvailabilityZonesForLoadBalancerResult",
        "type": "structure",
        "members": {
          "AvailabilityZones": {
            "shape": "S13"
          }
        }
      }
    },
    "ModifyLoadBalancerAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "LoadBalancerAttributes"
        ],
        "members": {
          "LoadBalancerName": {},
          "LoadBalancerAttributes": {
            "shape": "S2a"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyLoadBalancerAttributesResult",
        "type": "structure",
        "members": {
          "LoadBalancerName": {},
          "LoadBalancerAttributes": {
            "shape": "S2a"
          }
        }
      }
    },
    "RegisterInstancesWithLoadBalancer": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "Instances"
        ],
        "members": {
          "LoadBalancerName": {},
          "Instances": {
            "shape": "S1p"
          }
        }
      },
      "output": {
        "resultWrapper": "RegisterInstancesWithLoadBalancerResult",
        "type": "structure",
        "members": {
          "Instances": {
            "shape": "S1p"
          }
        }
      }
    },
    "RemoveTags": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerNames",
          "Tags"
        ],
        "members": {
          "LoadBalancerNames": {
            "shape": "S2"
          },
          "Tags": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Key": {}
              }
            }
          }
        }
      },
      "output": {
        "resultWrapper": "RemoveTagsResult",
        "type": "structure",
        "members": {}
      }
    },
    "SetLoadBalancerListenerSSLCertificate": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "LoadBalancerPort",
          "SSLCertificateId"
        ],
        "members": {
          "LoadBalancerName": {},
          "LoadBalancerPort": {
            "type": "integer"
          },
          "SSLCertificateId": {}
        }
      },
      "output": {
        "resultWrapper": "SetLoadBalancerListenerSSLCertificateResult",
        "type": "structure",
        "members": {}
      }
    },
    "SetLoadBalancerPoliciesForBackendServer": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "InstancePort",
          "PolicyNames"
        ],
        "members": {
          "LoadBalancerName": {},
          "InstancePort": {
            "type": "integer"
          },
          "PolicyNames": {
            "shape": "S2s"
          }
        }
      },
      "output": {
        "resultWrapper": "SetLoadBalancerPoliciesForBackendServerResult",
        "type": "structure",
        "members": {}
      }
    },
    "SetLoadBalancerPoliciesOfListener": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerName",
          "LoadBalancerPort",
          "PolicyNames"
        ],
        "members": {
          "LoadBalancerName": {},
          "LoadBalancerPort": {
            "type": "integer"
          },
          "PolicyNames": {
            "shape": "S2s"
          }
        }
      },
      "output": {
        "resultWrapper": "SetLoadBalancerPoliciesOfListenerResult",
        "type": "structure",
        "members": {}
      }
    }
  },
  "shapes": {
    "S2": {
      "type": "list",
      "member": {}
    },
    "S4": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Key"
        ],
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "Sa": {
      "type": "list",
      "member": {}
    },
    "Se": {
      "type": "list",
      "member": {}
    },
    "Si": {
      "type": "structure",
      "required": [
        "Target",
        "Interval",
        "Timeout",
        "UnhealthyThreshold",
        "HealthyThreshold"
      ],
      "members": {
        "Target": {},
        "Interval": {
          "type": "integer"
        },
        "Timeout": {
          "type": "integer"
        },
        "UnhealthyThreshold": {
          "type": "integer"
        },
        "HealthyThreshold": {
          "type": "integer"
        }
      }
    },
    "Sx": {
      "type": "list",
      "member": {
        "shape": "Sy"
      }
    },
    "Sy": {
      "type": "structure",
      "required": [
        "Protocol",
        "LoadBalancerPort",
        "InstancePort"
      ],
      "members": {
        "Protocol": {},
        "LoadBalancerPort": {
          "type": "integer"
        },
        "InstanceProtocol": {},
        "InstancePort": {
          "type": "integer"
        },
        "SSLCertificateId": {}
      }
    },
    "S13": {
      "type": "list",
      "member": {}
    },
    "S1p": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "InstanceId": {}
        }
      }
    },
    "S2a": {
      "type": "structure",
      "members": {
        "CrossZoneLoadBalancing": {
          "type": "structure",
          "required": [
            "Enabled"
          ],
          "members": {
            "Enabled": {
              "type": "boolean"
            }
          }
        },
        "AccessLog": {
          "type": "structure",
          "required": [
            "Enabled"
          ],
          "members": {
            "Enabled": {
              "type": "boolean"
            },
            "S3BucketName": {},
            "EmitInterval": {
              "type": "integer"
            },
            "S3BucketPrefix": {}
          }
        },
        "ConnectionDraining": {
          "type": "structure",
          "required": [
            "Enabled"
          ],
          "members": {
            "Enabled": {
              "type": "boolean"
            },
            "Timeout": {
              "type": "integer"
            }
          }
        },
        "ConnectionSettings": {
          "type": "structure",
          "required": [
            "IdleTimeout"
          ],
          "members": {
            "IdleTimeout": {
              "type": "integer"
            }
          }
        },
        "AdditionalAttributes": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "Key": {},
              "Value": {}
            }
          }
        }
      }
    },
    "S2s": {
      "type": "list",
      "member": {}
    }
  }
}
},{}],64:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeInstanceHealth": {
      "result_key": "InstanceStates"
    },
    "DescribeLoadBalancerPolicies": {
      "result_key": "PolicyDescriptions"
    },
    "DescribeLoadBalancerPolicyTypes": {
      "result_key": "PolicyTypeDescriptions"
    },
    "DescribeLoadBalancers": {
      "input_token": "Marker",
      "output_token": "NextMarker",
      "result_key": "LoadBalancerDescriptions"
    }
  }
}
},{}],65:[function(require,module,exports){
module.exports={
    "version":2,
    "waiters":{
        "InstanceDeregistered": {
          "delay": 15,
          "operation": "DescribeInstanceHealth",
          "maxAttempts": 40,
          "acceptors": [
            {
              "expected": "OutOfService",
              "matcher": "pathAll",
              "state": "success",
              "argument": "InstanceStates[].State"
            },
            {
              "matcher": "error",
              "expected": "InvalidInstance",
              "state": "success"
            }
          ]
        },
        "AnyInstanceInService":{
            "acceptors":[
                {
                    "argument":"InstanceStates[].State",
                    "expected":"InService",
                    "matcher":"pathAny",
                    "state":"success"
                }
            ],
            "delay":15,
            "maxAttempts":40,
            "operation":"DescribeInstanceHealth"
        },
        "InstanceInService":{
            "acceptors":[
                {
                    "argument":"InstanceStates[].State",
                    "expected":"InService",
                    "matcher":"pathAll",
                    "state":"success"
                },
                {
                    "matcher": "error",
                    "expected": "InvalidInstance",
                    "state": "retry"
                }
            ],
            "delay":15,
            "maxAttempts":40,
            "operation":"DescribeInstanceHealth"
        }
    }
}

},{}],66:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-12-01",
    "endpointPrefix": "elasticloadbalancing",
    "protocol": "query",
    "serviceAbbreviation": "Elastic Load Balancing v2",
    "serviceFullName": "Elastic Load Balancing",
    "serviceId": "Elastic Load Balancing v2",
    "signatureVersion": "v4",
    "uid": "elasticloadbalancingv2-2015-12-01",
    "xmlNamespace": "http://elasticloadbalancing.amazonaws.com/doc/2015-12-01/"
  },
  "operations": {
    "AddListenerCertificates": {
      "input": {
        "type": "structure",
        "required": [
          "ListenerArn",
          "Certificates"
        ],
        "members": {
          "ListenerArn": {},
          "Certificates": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "resultWrapper": "AddListenerCertificatesResult",
        "type": "structure",
        "members": {
          "Certificates": {
            "shape": "S3"
          }
        }
      }
    },
    "AddTags": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArns",
          "Tags"
        ],
        "members": {
          "ResourceArns": {
            "shape": "S9"
          },
          "Tags": {
            "shape": "Sb"
          }
        }
      },
      "output": {
        "resultWrapper": "AddTagsResult",
        "type": "structure",
        "members": {}
      }
    },
    "CreateListener": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerArn",
          "Protocol",
          "Port",
          "DefaultActions"
        ],
        "members": {
          "LoadBalancerArn": {},
          "Protocol": {},
          "Port": {
            "type": "integer"
          },
          "SslPolicy": {},
          "Certificates": {
            "shape": "S3"
          },
          "DefaultActions": {
            "shape": "Sl"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateListenerResult",
        "type": "structure",
        "members": {
          "Listeners": {
            "shape": "Sq"
          }
        }
      }
    },
    "CreateLoadBalancer": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {},
          "Subnets": {
            "shape": "Su"
          },
          "SubnetMappings": {
            "shape": "Sw"
          },
          "SecurityGroups": {
            "shape": "Sz"
          },
          "Scheme": {},
          "Tags": {
            "shape": "Sb"
          },
          "Type": {},
          "IpAddressType": {}
        }
      },
      "output": {
        "resultWrapper": "CreateLoadBalancerResult",
        "type": "structure",
        "members": {
          "LoadBalancers": {
            "shape": "S15"
          }
        }
      }
    },
    "CreateRule": {
      "input": {
        "type": "structure",
        "required": [
          "ListenerArn",
          "Conditions",
          "Priority",
          "Actions"
        ],
        "members": {
          "ListenerArn": {},
          "Conditions": {
            "shape": "S1l"
          },
          "Priority": {
            "type": "integer"
          },
          "Actions": {
            "shape": "Sl"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateRuleResult",
        "type": "structure",
        "members": {
          "Rules": {
            "shape": "S1s"
          }
        }
      }
    },
    "CreateTargetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "Protocol",
          "Port",
          "VpcId"
        ],
        "members": {
          "Name": {},
          "Protocol": {},
          "Port": {
            "type": "integer"
          },
          "VpcId": {},
          "HealthCheckProtocol": {},
          "HealthCheckPort": {},
          "HealthCheckPath": {},
          "HealthCheckIntervalSeconds": {
            "type": "integer"
          },
          "HealthCheckTimeoutSeconds": {
            "type": "integer"
          },
          "HealthyThresholdCount": {
            "type": "integer"
          },
          "UnhealthyThresholdCount": {
            "type": "integer"
          },
          "Matcher": {
            "shape": "S24"
          },
          "TargetType": {}
        }
      },
      "output": {
        "resultWrapper": "CreateTargetGroupResult",
        "type": "structure",
        "members": {
          "TargetGroups": {
            "shape": "S28"
          }
        }
      }
    },
    "DeleteListener": {
      "input": {
        "type": "structure",
        "required": [
          "ListenerArn"
        ],
        "members": {
          "ListenerArn": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteListenerResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteLoadBalancer": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerArn"
        ],
        "members": {
          "LoadBalancerArn": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteLoadBalancerResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteRule": {
      "input": {
        "type": "structure",
        "required": [
          "RuleArn"
        ],
        "members": {
          "RuleArn": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteRuleResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteTargetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "TargetGroupArn"
        ],
        "members": {
          "TargetGroupArn": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteTargetGroupResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeregisterTargets": {
      "input": {
        "type": "structure",
        "required": [
          "TargetGroupArn",
          "Targets"
        ],
        "members": {
          "TargetGroupArn": {},
          "Targets": {
            "shape": "S2k"
          }
        }
      },
      "output": {
        "resultWrapper": "DeregisterTargetsResult",
        "type": "structure",
        "members": {}
      }
    },
    "DescribeAccountLimits": {
      "input": {
        "type": "structure",
        "members": {
          "Marker": {},
          "PageSize": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeAccountLimitsResult",
        "type": "structure",
        "members": {
          "Limits": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "Max": {}
              }
            }
          },
          "NextMarker": {}
        }
      }
    },
    "DescribeListenerCertificates": {
      "input": {
        "type": "structure",
        "required": [
          "ListenerArn"
        ],
        "members": {
          "ListenerArn": {},
          "Marker": {},
          "PageSize": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeListenerCertificatesResult",
        "type": "structure",
        "members": {
          "Certificates": {
            "shape": "S3"
          },
          "NextMarker": {}
        }
      }
    },
    "DescribeListeners": {
      "input": {
        "type": "structure",
        "members": {
          "LoadBalancerArn": {},
          "ListenerArns": {
            "type": "list",
            "member": {}
          },
          "Marker": {},
          "PageSize": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeListenersResult",
        "type": "structure",
        "members": {
          "Listeners": {
            "shape": "Sq"
          },
          "NextMarker": {}
        }
      }
    },
    "DescribeLoadBalancerAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerArn"
        ],
        "members": {
          "LoadBalancerArn": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeLoadBalancerAttributesResult",
        "type": "structure",
        "members": {
          "Attributes": {
            "shape": "S33"
          }
        }
      }
    },
    "DescribeLoadBalancers": {
      "input": {
        "type": "structure",
        "members": {
          "LoadBalancerArns": {
            "shape": "S2a"
          },
          "Names": {
            "type": "list",
            "member": {}
          },
          "Marker": {},
          "PageSize": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeLoadBalancersResult",
        "type": "structure",
        "members": {
          "LoadBalancers": {
            "shape": "S15"
          },
          "NextMarker": {}
        }
      }
    },
    "DescribeRules": {
      "input": {
        "type": "structure",
        "members": {
          "ListenerArn": {},
          "RuleArns": {
            "type": "list",
            "member": {}
          },
          "Marker": {},
          "PageSize": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeRulesResult",
        "type": "structure",
        "members": {
          "Rules": {
            "shape": "S1s"
          },
          "NextMarker": {}
        }
      }
    },
    "DescribeSSLPolicies": {
      "input": {
        "type": "structure",
        "members": {
          "Names": {
            "type": "list",
            "member": {}
          },
          "Marker": {},
          "PageSize": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeSSLPoliciesResult",
        "type": "structure",
        "members": {
          "SslPolicies": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "SslProtocols": {
                  "type": "list",
                  "member": {}
                },
                "Ciphers": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "Name": {},
                      "Priority": {
                        "type": "integer"
                      }
                    }
                  }
                },
                "Name": {}
              }
            }
          },
          "NextMarker": {}
        }
      }
    },
    "DescribeTags": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArns"
        ],
        "members": {
          "ResourceArns": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeTagsResult",
        "type": "structure",
        "members": {
          "TagDescriptions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ResourceArn": {},
                "Tags": {
                  "shape": "Sb"
                }
              }
            }
          }
        }
      }
    },
    "DescribeTargetGroupAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "TargetGroupArn"
        ],
        "members": {
          "TargetGroupArn": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeTargetGroupAttributesResult",
        "type": "structure",
        "members": {
          "Attributes": {
            "shape": "S3u"
          }
        }
      }
    },
    "DescribeTargetGroups": {
      "input": {
        "type": "structure",
        "members": {
          "LoadBalancerArn": {},
          "TargetGroupArns": {
            "type": "list",
            "member": {}
          },
          "Names": {
            "type": "list",
            "member": {}
          },
          "Marker": {},
          "PageSize": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeTargetGroupsResult",
        "type": "structure",
        "members": {
          "TargetGroups": {
            "shape": "S28"
          },
          "NextMarker": {}
        }
      }
    },
    "DescribeTargetHealth": {
      "input": {
        "type": "structure",
        "required": [
          "TargetGroupArn"
        ],
        "members": {
          "TargetGroupArn": {},
          "Targets": {
            "shape": "S2k"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeTargetHealthResult",
        "type": "structure",
        "members": {
          "TargetHealthDescriptions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Target": {
                  "shape": "S2l"
                },
                "HealthCheckPort": {},
                "TargetHealth": {
                  "type": "structure",
                  "members": {
                    "State": {},
                    "Reason": {},
                    "Description": {}
                  }
                }
              }
            }
          }
        }
      }
    },
    "ModifyListener": {
      "input": {
        "type": "structure",
        "required": [
          "ListenerArn"
        ],
        "members": {
          "ListenerArn": {},
          "Port": {
            "type": "integer"
          },
          "Protocol": {},
          "SslPolicy": {},
          "Certificates": {
            "shape": "S3"
          },
          "DefaultActions": {
            "shape": "Sl"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyListenerResult",
        "type": "structure",
        "members": {
          "Listeners": {
            "shape": "Sq"
          }
        }
      }
    },
    "ModifyLoadBalancerAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerArn",
          "Attributes"
        ],
        "members": {
          "LoadBalancerArn": {},
          "Attributes": {
            "shape": "S33"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyLoadBalancerAttributesResult",
        "type": "structure",
        "members": {
          "Attributes": {
            "shape": "S33"
          }
        }
      }
    },
    "ModifyRule": {
      "input": {
        "type": "structure",
        "required": [
          "RuleArn"
        ],
        "members": {
          "RuleArn": {},
          "Conditions": {
            "shape": "S1l"
          },
          "Actions": {
            "shape": "Sl"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyRuleResult",
        "type": "structure",
        "members": {
          "Rules": {
            "shape": "S1s"
          }
        }
      }
    },
    "ModifyTargetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "TargetGroupArn"
        ],
        "members": {
          "TargetGroupArn": {},
          "HealthCheckProtocol": {},
          "HealthCheckPort": {},
          "HealthCheckPath": {},
          "HealthCheckIntervalSeconds": {
            "type": "integer"
          },
          "HealthCheckTimeoutSeconds": {
            "type": "integer"
          },
          "HealthyThresholdCount": {
            "type": "integer"
          },
          "UnhealthyThresholdCount": {
            "type": "integer"
          },
          "Matcher": {
            "shape": "S24"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyTargetGroupResult",
        "type": "structure",
        "members": {
          "TargetGroups": {
            "shape": "S28"
          }
        }
      }
    },
    "ModifyTargetGroupAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "TargetGroupArn",
          "Attributes"
        ],
        "members": {
          "TargetGroupArn": {},
          "Attributes": {
            "shape": "S3u"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyTargetGroupAttributesResult",
        "type": "structure",
        "members": {
          "Attributes": {
            "shape": "S3u"
          }
        }
      }
    },
    "RegisterTargets": {
      "input": {
        "type": "structure",
        "required": [
          "TargetGroupArn",
          "Targets"
        ],
        "members": {
          "TargetGroupArn": {},
          "Targets": {
            "shape": "S2k"
          }
        }
      },
      "output": {
        "resultWrapper": "RegisterTargetsResult",
        "type": "structure",
        "members": {}
      }
    },
    "RemoveListenerCertificates": {
      "input": {
        "type": "structure",
        "required": [
          "ListenerArn",
          "Certificates"
        ],
        "members": {
          "ListenerArn": {},
          "Certificates": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "resultWrapper": "RemoveListenerCertificatesResult",
        "type": "structure",
        "members": {}
      }
    },
    "RemoveTags": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArns",
          "TagKeys"
        ],
        "members": {
          "ResourceArns": {
            "shape": "S9"
          },
          "TagKeys": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "resultWrapper": "RemoveTagsResult",
        "type": "structure",
        "members": {}
      }
    },
    "SetIpAddressType": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerArn",
          "IpAddressType"
        ],
        "members": {
          "LoadBalancerArn": {},
          "IpAddressType": {}
        }
      },
      "output": {
        "resultWrapper": "SetIpAddressTypeResult",
        "type": "structure",
        "members": {
          "IpAddressType": {}
        }
      }
    },
    "SetRulePriorities": {
      "input": {
        "type": "structure",
        "required": [
          "RulePriorities"
        ],
        "members": {
          "RulePriorities": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "RuleArn": {},
                "Priority": {
                  "type": "integer"
                }
              }
            }
          }
        }
      },
      "output": {
        "resultWrapper": "SetRulePrioritiesResult",
        "type": "structure",
        "members": {
          "Rules": {
            "shape": "S1s"
          }
        }
      }
    },
    "SetSecurityGroups": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerArn",
          "SecurityGroups"
        ],
        "members": {
          "LoadBalancerArn": {},
          "SecurityGroups": {
            "shape": "Sz"
          }
        }
      },
      "output": {
        "resultWrapper": "SetSecurityGroupsResult",
        "type": "structure",
        "members": {
          "SecurityGroupIds": {
            "shape": "Sz"
          }
        }
      }
    },
    "SetSubnets": {
      "input": {
        "type": "structure",
        "required": [
          "LoadBalancerArn",
          "Subnets"
        ],
        "members": {
          "LoadBalancerArn": {},
          "Subnets": {
            "shape": "Su"
          },
          "SubnetMappings": {
            "shape": "Sw"
          }
        }
      },
      "output": {
        "resultWrapper": "SetSubnetsResult",
        "type": "structure",
        "members": {
          "AvailabilityZones": {
            "shape": "S1e"
          }
        }
      }
    }
  },
  "shapes": {
    "S3": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "CertificateArn": {},
          "IsDefault": {
            "type": "boolean"
          }
        }
      }
    },
    "S9": {
      "type": "list",
      "member": {}
    },
    "Sb": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Key"
        ],
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "Sl": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Type",
          "TargetGroupArn"
        ],
        "members": {
          "Type": {},
          "TargetGroupArn": {}
        }
      }
    },
    "Sq": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "ListenerArn": {},
          "LoadBalancerArn": {},
          "Port": {
            "type": "integer"
          },
          "Protocol": {},
          "Certificates": {
            "shape": "S3"
          },
          "SslPolicy": {},
          "DefaultActions": {
            "shape": "Sl"
          }
        }
      }
    },
    "Su": {
      "type": "list",
      "member": {}
    },
    "Sw": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "SubnetId": {},
          "AllocationId": {}
        }
      }
    },
    "Sz": {
      "type": "list",
      "member": {}
    },
    "S15": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "LoadBalancerArn": {},
          "DNSName": {},
          "CanonicalHostedZoneId": {},
          "CreatedTime": {
            "type": "timestamp"
          },
          "LoadBalancerName": {},
          "Scheme": {},
          "VpcId": {},
          "State": {
            "type": "structure",
            "members": {
              "Code": {},
              "Reason": {}
            }
          },
          "Type": {},
          "AvailabilityZones": {
            "shape": "S1e"
          },
          "SecurityGroups": {
            "shape": "Sz"
          },
          "IpAddressType": {}
        }
      }
    },
    "S1e": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "ZoneName": {},
          "SubnetId": {},
          "LoadBalancerAddresses": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "IpAddress": {},
                "AllocationId": {}
              }
            }
          }
        }
      }
    },
    "S1l": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Field": {},
          "Values": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "S1s": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "RuleArn": {},
          "Priority": {},
          "Conditions": {
            "shape": "S1l"
          },
          "Actions": {
            "shape": "Sl"
          },
          "IsDefault": {
            "type": "boolean"
          }
        }
      }
    },
    "S24": {
      "type": "structure",
      "required": [
        "HttpCode"
      ],
      "members": {
        "HttpCode": {}
      }
    },
    "S28": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "TargetGroupArn": {},
          "TargetGroupName": {},
          "Protocol": {},
          "Port": {
            "type": "integer"
          },
          "VpcId": {},
          "HealthCheckProtocol": {},
          "HealthCheckPort": {},
          "HealthCheckIntervalSeconds": {
            "type": "integer"
          },
          "HealthCheckTimeoutSeconds": {
            "type": "integer"
          },
          "HealthyThresholdCount": {
            "type": "integer"
          },
          "UnhealthyThresholdCount": {
            "type": "integer"
          },
          "HealthCheckPath": {},
          "Matcher": {
            "shape": "S24"
          },
          "LoadBalancerArns": {
            "shape": "S2a"
          },
          "TargetType": {}
        }
      }
    },
    "S2a": {
      "type": "list",
      "member": {}
    },
    "S2k": {
      "type": "list",
      "member": {
        "shape": "S2l"
      }
    },
    "S2l": {
      "type": "structure",
      "required": [
        "Id"
      ],
      "members": {
        "Id": {},
        "Port": {
          "type": "integer"
        },
        "AvailabilityZone": {}
      }
    },
    "S33": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "S3u": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    }
  }
}
},{}],67:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeListeners": {
      "input_token": "Marker",
      "output_token": "NextMarker",
      "result_key": "Listeners"
    },
    "DescribeLoadBalancers": {
      "input_token": "Marker",
      "output_token": "NextMarker",
      "result_key": "LoadBalancers"
    },
    "DescribeTargetGroups": {
      "input_token": "Marker",
      "output_token": "NextMarker",
      "result_key": "TargetGroups"
    }
  }
}
},{}],68:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "LoadBalancerExists": {
      "delay": 15,
      "operation": "DescribeLoadBalancers",
      "maxAttempts": 40,
      "acceptors": [
        {
          "matcher": "status",
          "expected": 200,
          "state": "success"
        },
        {
          "matcher": "error",
          "expected": "LoadBalancerNotFound",
          "state": "retry"
        }
      ]
    },
    "LoadBalancerAvailable": {
      "delay": 15,
      "operation": "DescribeLoadBalancers",
      "maxAttempts": 40,
      "acceptors": [
        {
          "state": "success",
          "matcher": "pathAll",
          "argument": "LoadBalancers[].State.Code",
          "expected": "active"
        },
        {
          "state": "retry",
          "matcher": "pathAny",
          "argument": "LoadBalancers[].State.Code",
          "expected": "provisioning"
        },
        {
          "state": "retry",
          "matcher": "error",
          "expected": "LoadBalancerNotFound"
        }
      ]
    },
    "LoadBalancersDeleted": {
      "delay": 15,
      "operation": "DescribeLoadBalancers",
      "maxAttempts": 40,
      "acceptors": [
        {
          "state": "retry",
          "matcher": "pathAll",
          "argument": "LoadBalancers[].State.Code",
          "expected": "active"
        },
        {
          "matcher": "error",
          "expected": "LoadBalancerNotFound",
          "state": "success"
        }
      ]
    },
    "TargetInService":{
      "delay":15,
      "maxAttempts":40,
      "operation":"DescribeTargetHealth",
      "acceptors":[
        {
          "argument":"TargetHealthDescriptions[].TargetHealth.State",
          "expected":"healthy",
          "matcher":"pathAll",
          "state":"success"
        },
        {
          "matcher": "error",
          "expected": "InvalidInstance",
          "state": "retry"
        }
      ]
    },
    "TargetDeregistered": {
      "delay": 15,
      "maxAttempts": 40,
      "operation": "DescribeTargetHealth",
      "acceptors": [
        {
          "matcher": "error",
          "expected": "InvalidTarget",
          "state": "success"
        },
        {
          "argument":"TargetHealthDescriptions[].TargetHealth.State",
          "expected":"unused",
          "matcher":"pathAll",
          "state":"success"
        }
      ]
    }
  }
}

},{}],69:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2009-03-31",
    "endpointPrefix": "elasticmapreduce",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "Amazon EMR",
    "serviceFullName": "Amazon Elastic MapReduce",
    "signatureVersion": "v4",
    "targetPrefix": "ElasticMapReduce",
    "timestampFormat": "unixTimestamp",
    "uid": "elasticmapreduce-2009-03-31"
  },
  "operations": {
    "AddInstanceFleet": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterId",
          "InstanceFleet"
        ],
        "members": {
          "ClusterId": {},
          "InstanceFleet": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ClusterId": {},
          "InstanceFleetId": {}
        }
      }
    },
    "AddInstanceGroups": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceGroups",
          "JobFlowId"
        ],
        "members": {
          "InstanceGroups": {
            "shape": "Sq"
          },
          "JobFlowId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "JobFlowId": {},
          "InstanceGroupIds": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "AddJobFlowSteps": {
      "input": {
        "type": "structure",
        "required": [
          "JobFlowId",
          "Steps"
        ],
        "members": {
          "JobFlowId": {},
          "Steps": {
            "shape": "S1b"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StepIds": {
            "shape": "S1k"
          }
        }
      }
    },
    "AddTags": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceId",
          "Tags"
        ],
        "members": {
          "ResourceId": {},
          "Tags": {
            "shape": "S1n"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "CancelSteps": {
      "input": {
        "type": "structure",
        "members": {
          "ClusterId": {},
          "StepIds": {
            "shape": "S1k"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CancelStepsInfoList": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "StepId": {},
                "Status": {},
                "Reason": {}
              }
            }
          }
        }
      }
    },
    "CreateSecurityConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "SecurityConfiguration"
        ],
        "members": {
          "Name": {},
          "SecurityConfiguration": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Name",
          "CreationDateTime"
        ],
        "members": {
          "Name": {},
          "CreationDateTime": {
            "type": "timestamp"
          }
        }
      }
    },
    "DeleteSecurityConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DescribeCluster": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterId"
        ],
        "members": {
          "ClusterId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Cluster": {
            "type": "structure",
            "members": {
              "Id": {},
              "Name": {},
              "Status": {
                "shape": "S25"
              },
              "Ec2InstanceAttributes": {
                "type": "structure",
                "members": {
                  "Ec2KeyName": {},
                  "Ec2SubnetId": {},
                  "RequestedEc2SubnetIds": {
                    "shape": "S2b"
                  },
                  "Ec2AvailabilityZone": {},
                  "RequestedEc2AvailabilityZones": {
                    "shape": "S2b"
                  },
                  "IamInstanceProfile": {},
                  "EmrManagedMasterSecurityGroup": {},
                  "EmrManagedSlaveSecurityGroup": {},
                  "ServiceAccessSecurityGroup": {},
                  "AdditionalMasterSecurityGroups": {
                    "shape": "S2c"
                  },
                  "AdditionalSlaveSecurityGroups": {
                    "shape": "S2c"
                  }
                }
              },
              "InstanceCollectionType": {},
              "LogUri": {},
              "RequestedAmiVersion": {},
              "RunningAmiVersion": {},
              "ReleaseLabel": {},
              "AutoTerminate": {
                "type": "boolean"
              },
              "TerminationProtected": {
                "type": "boolean"
              },
              "VisibleToAllUsers": {
                "type": "boolean"
              },
              "Applications": {
                "shape": "S2f"
              },
              "Tags": {
                "shape": "S1n"
              },
              "ServiceRole": {},
              "NormalizedInstanceHours": {
                "type": "integer"
              },
              "MasterPublicDnsName": {},
              "Configurations": {
                "shape": "Sh"
              },
              "SecurityConfiguration": {},
              "AutoScalingRole": {},
              "ScaleDownBehavior": {},
              "CustomAmiId": {},
              "EbsRootVolumeSize": {
                "type": "integer"
              },
              "RepoUpgradeOnBoot": {},
              "KerberosAttributes": {
                "shape": "S2j"
              }
            }
          }
        }
      }
    },
    "DescribeJobFlows": {
      "input": {
        "type": "structure",
        "members": {
          "CreatedAfter": {
            "type": "timestamp"
          },
          "CreatedBefore": {
            "type": "timestamp"
          },
          "JobFlowIds": {
            "shape": "S1i"
          },
          "JobFlowStates": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "JobFlows": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "JobFlowId",
                "Name",
                "ExecutionStatusDetail",
                "Instances"
              ],
              "members": {
                "JobFlowId": {},
                "Name": {},
                "LogUri": {},
                "AmiVersion": {},
                "ExecutionStatusDetail": {
                  "type": "structure",
                  "required": [
                    "State",
                    "CreationDateTime"
                  ],
                  "members": {
                    "State": {},
                    "CreationDateTime": {
                      "type": "timestamp"
                    },
                    "StartDateTime": {
                      "type": "timestamp"
                    },
                    "ReadyDateTime": {
                      "type": "timestamp"
                    },
                    "EndDateTime": {
                      "type": "timestamp"
                    },
                    "LastStateChangeReason": {}
                  }
                },
                "Instances": {
                  "type": "structure",
                  "required": [
                    "MasterInstanceType",
                    "SlaveInstanceType",
                    "InstanceCount"
                  ],
                  "members": {
                    "MasterInstanceType": {},
                    "MasterPublicDnsName": {},
                    "MasterInstanceId": {},
                    "SlaveInstanceType": {},
                    "InstanceCount": {
                      "type": "integer"
                    },
                    "InstanceGroups": {
                      "type": "list",
                      "member": {
                        "type": "structure",
                        "required": [
                          "Market",
                          "InstanceRole",
                          "InstanceType",
                          "InstanceRequestCount",
                          "InstanceRunningCount",
                          "State",
                          "CreationDateTime"
                        ],
                        "members": {
                          "InstanceGroupId": {},
                          "Name": {},
                          "Market": {},
                          "InstanceRole": {},
                          "BidPrice": {},
                          "InstanceType": {},
                          "InstanceRequestCount": {
                            "type": "integer"
                          },
                          "InstanceRunningCount": {
                            "type": "integer"
                          },
                          "State": {},
                          "LastStateChangeReason": {},
                          "CreationDateTime": {
                            "type": "timestamp"
                          },
                          "StartDateTime": {
                            "type": "timestamp"
                          },
                          "ReadyDateTime": {
                            "type": "timestamp"
                          },
                          "EndDateTime": {
                            "type": "timestamp"
                          }
                        }
                      }
                    },
                    "NormalizedInstanceHours": {
                      "type": "integer"
                    },
                    "Ec2KeyName": {},
                    "Ec2SubnetId": {},
                    "Placement": {
                      "shape": "S2v"
                    },
                    "KeepJobFlowAliveWhenNoSteps": {
                      "type": "boolean"
                    },
                    "TerminationProtected": {
                      "type": "boolean"
                    },
                    "HadoopVersion": {}
                  }
                },
                "Steps": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "required": [
                      "StepConfig",
                      "ExecutionStatusDetail"
                    ],
                    "members": {
                      "StepConfig": {
                        "shape": "S1c"
                      },
                      "ExecutionStatusDetail": {
                        "type": "structure",
                        "required": [
                          "State",
                          "CreationDateTime"
                        ],
                        "members": {
                          "State": {},
                          "CreationDateTime": {
                            "type": "timestamp"
                          },
                          "StartDateTime": {
                            "type": "timestamp"
                          },
                          "EndDateTime": {
                            "type": "timestamp"
                          },
                          "LastStateChangeReason": {}
                        }
                      }
                    }
                  }
                },
                "BootstrapActions": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "BootstrapActionConfig": {
                        "shape": "S32"
                      }
                    }
                  }
                },
                "SupportedProducts": {
                  "shape": "S34"
                },
                "VisibleToAllUsers": {
                  "type": "boolean"
                },
                "JobFlowRole": {},
                "ServiceRole": {},
                "AutoScalingRole": {},
                "ScaleDownBehavior": {}
              }
            }
          }
        }
      },
      "deprecated": true
    },
    "DescribeSecurityConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Name": {},
          "SecurityConfiguration": {},
          "CreationDateTime": {
            "type": "timestamp"
          }
        }
      }
    },
    "DescribeStep": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterId",
          "StepId"
        ],
        "members": {
          "ClusterId": {},
          "StepId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Step": {
            "type": "structure",
            "members": {
              "Id": {},
              "Name": {},
              "Config": {
                "shape": "S3a"
              },
              "ActionOnFailure": {},
              "Status": {
                "shape": "S3b"
              }
            }
          }
        }
      }
    },
    "ListBootstrapActions": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterId"
        ],
        "members": {
          "ClusterId": {},
          "Marker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BootstrapActions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "ScriptPath": {},
                "Args": {
                  "shape": "S2c"
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "ListClusters": {
      "input": {
        "type": "structure",
        "members": {
          "CreatedAfter": {
            "type": "timestamp"
          },
          "CreatedBefore": {
            "type": "timestamp"
          },
          "ClusterStates": {
            "type": "list",
            "member": {}
          },
          "Marker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Clusters": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Id": {},
                "Name": {},
                "Status": {
                  "shape": "S25"
                },
                "NormalizedInstanceHours": {
                  "type": "integer"
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "ListInstanceFleets": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterId"
        ],
        "members": {
          "ClusterId": {},
          "Marker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstanceFleets": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Id": {},
                "Name": {},
                "Status": {
                  "type": "structure",
                  "members": {
                    "State": {},
                    "StateChangeReason": {
                      "type": "structure",
                      "members": {
                        "Code": {},
                        "Message": {}
                      }
                    },
                    "Timeline": {
                      "type": "structure",
                      "members": {
                        "CreationDateTime": {
                          "type": "timestamp"
                        },
                        "ReadyDateTime": {
                          "type": "timestamp"
                        },
                        "EndDateTime": {
                          "type": "timestamp"
                        }
                      }
                    }
                  }
                },
                "InstanceFleetType": {},
                "TargetOnDemandCapacity": {
                  "type": "integer"
                },
                "TargetSpotCapacity": {
                  "type": "integer"
                },
                "ProvisionedOnDemandCapacity": {
                  "type": "integer"
                },
                "ProvisionedSpotCapacity": {
                  "type": "integer"
                },
                "InstanceTypeSpecifications": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "InstanceType": {},
                      "WeightedCapacity": {
                        "type": "integer"
                      },
                      "BidPrice": {},
                      "BidPriceAsPercentageOfOnDemandPrice": {
                        "type": "double"
                      },
                      "Configurations": {
                        "shape": "Sh"
                      },
                      "EbsBlockDevices": {
                        "shape": "S42"
                      },
                      "EbsOptimized": {
                        "type": "boolean"
                      }
                    }
                  }
                },
                "LaunchSpecifications": {
                  "shape": "Sk"
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "ListInstanceGroups": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterId"
        ],
        "members": {
          "ClusterId": {},
          "Marker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstanceGroups": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Id": {},
                "Name": {},
                "Market": {},
                "InstanceGroupType": {},
                "BidPrice": {},
                "InstanceType": {},
                "RequestedInstanceCount": {
                  "type": "integer"
                },
                "RunningInstanceCount": {
                  "type": "integer"
                },
                "Status": {
                  "type": "structure",
                  "members": {
                    "State": {},
                    "StateChangeReason": {
                      "type": "structure",
                      "members": {
                        "Code": {},
                        "Message": {}
                      }
                    },
                    "Timeline": {
                      "type": "structure",
                      "members": {
                        "CreationDateTime": {
                          "type": "timestamp"
                        },
                        "ReadyDateTime": {
                          "type": "timestamp"
                        },
                        "EndDateTime": {
                          "type": "timestamp"
                        }
                      }
                    }
                  }
                },
                "Configurations": {
                  "shape": "Sh"
                },
                "EbsBlockDevices": {
                  "shape": "S42"
                },
                "EbsOptimized": {
                  "type": "boolean"
                },
                "ShrinkPolicy": {
                  "shape": "S4e"
                },
                "AutoScalingPolicy": {
                  "shape": "S4i"
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "ListInstances": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterId"
        ],
        "members": {
          "ClusterId": {},
          "InstanceGroupId": {},
          "InstanceGroupTypes": {
            "type": "list",
            "member": {}
          },
          "InstanceFleetId": {},
          "InstanceFleetType": {},
          "InstanceStates": {
            "type": "list",
            "member": {}
          },
          "Marker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Instances": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Id": {},
                "Ec2InstanceId": {},
                "PublicDnsName": {},
                "PublicIpAddress": {},
                "PrivateDnsName": {},
                "PrivateIpAddress": {},
                "Status": {
                  "type": "structure",
                  "members": {
                    "State": {},
                    "StateChangeReason": {
                      "type": "structure",
                      "members": {
                        "Code": {},
                        "Message": {}
                      }
                    },
                    "Timeline": {
                      "type": "structure",
                      "members": {
                        "CreationDateTime": {
                          "type": "timestamp"
                        },
                        "ReadyDateTime": {
                          "type": "timestamp"
                        },
                        "EndDateTime": {
                          "type": "timestamp"
                        }
                      }
                    }
                  }
                },
                "InstanceGroupId": {},
                "InstanceFleetId": {},
                "Market": {},
                "InstanceType": {},
                "EbsVolumes": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "Device": {},
                      "VolumeId": {}
                    }
                  }
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "ListSecurityConfigurations": {
      "input": {
        "type": "structure",
        "members": {
          "Marker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SecurityConfigurations": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "CreationDateTime": {
                  "type": "timestamp"
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "ListSteps": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterId"
        ],
        "members": {
          "ClusterId": {},
          "StepStates": {
            "type": "list",
            "member": {}
          },
          "StepIds": {
            "shape": "S1i"
          },
          "Marker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Steps": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Id": {},
                "Name": {},
                "Config": {
                  "shape": "S3a"
                },
                "ActionOnFailure": {},
                "Status": {
                  "shape": "S3b"
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "ModifyInstanceFleet": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterId",
          "InstanceFleet"
        ],
        "members": {
          "ClusterId": {},
          "InstanceFleet": {
            "type": "structure",
            "required": [
              "InstanceFleetId"
            ],
            "members": {
              "InstanceFleetId": {},
              "TargetOnDemandCapacity": {
                "type": "integer"
              },
              "TargetSpotCapacity": {
                "type": "integer"
              }
            }
          }
        }
      }
    },
    "ModifyInstanceGroups": {
      "input": {
        "type": "structure",
        "members": {
          "ClusterId": {},
          "InstanceGroups": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "InstanceGroupId"
              ],
              "members": {
                "InstanceGroupId": {},
                "InstanceCount": {
                  "type": "integer"
                },
                "EC2InstanceIdsToTerminate": {
                  "type": "list",
                  "member": {}
                },
                "ShrinkPolicy": {
                  "shape": "S4e"
                }
              }
            }
          }
        }
      }
    },
    "PutAutoScalingPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterId",
          "InstanceGroupId",
          "AutoScalingPolicy"
        ],
        "members": {
          "ClusterId": {},
          "InstanceGroupId": {},
          "AutoScalingPolicy": {
            "shape": "Su"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ClusterId": {},
          "InstanceGroupId": {},
          "AutoScalingPolicy": {
            "shape": "S4i"
          }
        }
      }
    },
    "RemoveAutoScalingPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterId",
          "InstanceGroupId"
        ],
        "members": {
          "ClusterId": {},
          "InstanceGroupId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "RemoveTags": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceId",
          "TagKeys"
        ],
        "members": {
          "ResourceId": {},
          "TagKeys": {
            "shape": "S2c"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "RunJobFlow": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "Instances"
        ],
        "members": {
          "Name": {},
          "LogUri": {},
          "AdditionalInfo": {},
          "AmiVersion": {},
          "ReleaseLabel": {},
          "Instances": {
            "type": "structure",
            "members": {
              "MasterInstanceType": {},
              "SlaveInstanceType": {},
              "InstanceCount": {
                "type": "integer"
              },
              "InstanceGroups": {
                "shape": "Sq"
              },
              "InstanceFleets": {
                "type": "list",
                "member": {
                  "shape": "S3"
                }
              },
              "Ec2KeyName": {},
              "Placement": {
                "shape": "S2v"
              },
              "KeepJobFlowAliveWhenNoSteps": {
                "type": "boolean"
              },
              "TerminationProtected": {
                "type": "boolean"
              },
              "HadoopVersion": {},
              "Ec2SubnetId": {},
              "Ec2SubnetIds": {
                "shape": "S2b"
              },
              "EmrManagedMasterSecurityGroup": {},
              "EmrManagedSlaveSecurityGroup": {},
              "ServiceAccessSecurityGroup": {},
              "AdditionalMasterSecurityGroups": {
                "shape": "S5o"
              },
              "AdditionalSlaveSecurityGroups": {
                "shape": "S5o"
              }
            }
          },
          "Steps": {
            "shape": "S1b"
          },
          "BootstrapActions": {
            "type": "list",
            "member": {
              "shape": "S32"
            }
          },
          "SupportedProducts": {
            "shape": "S34"
          },
          "NewSupportedProducts": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "Args": {
                  "shape": "S1i"
                }
              }
            }
          },
          "Applications": {
            "shape": "S2f"
          },
          "Configurations": {
            "shape": "Sh"
          },
          "VisibleToAllUsers": {
            "type": "boolean"
          },
          "JobFlowRole": {},
          "ServiceRole": {},
          "Tags": {
            "shape": "S1n"
          },
          "SecurityConfiguration": {},
          "AutoScalingRole": {},
          "ScaleDownBehavior": {},
          "CustomAmiId": {},
          "EbsRootVolumeSize": {
            "type": "integer"
          },
          "RepoUpgradeOnBoot": {},
          "KerberosAttributes": {
            "shape": "S2j"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "JobFlowId": {}
        }
      }
    },
    "SetTerminationProtection": {
      "input": {
        "type": "structure",
        "required": [
          "JobFlowIds",
          "TerminationProtected"
        ],
        "members": {
          "JobFlowIds": {
            "shape": "S1i"
          },
          "TerminationProtected": {
            "type": "boolean"
          }
        }
      }
    },
    "SetVisibleToAllUsers": {
      "input": {
        "type": "structure",
        "required": [
          "JobFlowIds",
          "VisibleToAllUsers"
        ],
        "members": {
          "JobFlowIds": {
            "shape": "S1i"
          },
          "VisibleToAllUsers": {
            "type": "boolean"
          }
        }
      }
    },
    "TerminateJobFlows": {
      "input": {
        "type": "structure",
        "required": [
          "JobFlowIds"
        ],
        "members": {
          "JobFlowIds": {
            "shape": "S1i"
          }
        }
      }
    }
  },
  "shapes": {
    "S3": {
      "type": "structure",
      "required": [
        "InstanceFleetType"
      ],
      "members": {
        "Name": {},
        "InstanceFleetType": {},
        "TargetOnDemandCapacity": {
          "type": "integer"
        },
        "TargetSpotCapacity": {
          "type": "integer"
        },
        "InstanceTypeConfigs": {
          "type": "list",
          "member": {
            "type": "structure",
            "required": [
              "InstanceType"
            ],
            "members": {
              "InstanceType": {},
              "WeightedCapacity": {
                "type": "integer"
              },
              "BidPrice": {},
              "BidPriceAsPercentageOfOnDemandPrice": {
                "type": "double"
              },
              "EbsConfiguration": {
                "shape": "Sa"
              },
              "Configurations": {
                "shape": "Sh"
              }
            }
          }
        },
        "LaunchSpecifications": {
          "shape": "Sk"
        }
      }
    },
    "Sa": {
      "type": "structure",
      "members": {
        "EbsBlockDeviceConfigs": {
          "type": "list",
          "member": {
            "type": "structure",
            "required": [
              "VolumeSpecification"
            ],
            "members": {
              "VolumeSpecification": {
                "shape": "Sd"
              },
              "VolumesPerInstance": {
                "type": "integer"
              }
            }
          }
        },
        "EbsOptimized": {
          "type": "boolean"
        }
      }
    },
    "Sd": {
      "type": "structure",
      "required": [
        "VolumeType",
        "SizeInGB"
      ],
      "members": {
        "VolumeType": {},
        "Iops": {
          "type": "integer"
        },
        "SizeInGB": {
          "type": "integer"
        }
      }
    },
    "Sh": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Classification": {},
          "Configurations": {
            "shape": "Sh"
          },
          "Properties": {
            "shape": "Sj"
          }
        }
      }
    },
    "Sj": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "Sk": {
      "type": "structure",
      "required": [
        "SpotSpecification"
      ],
      "members": {
        "SpotSpecification": {
          "type": "structure",
          "required": [
            "TimeoutDurationMinutes",
            "TimeoutAction"
          ],
          "members": {
            "TimeoutDurationMinutes": {
              "type": "integer"
            },
            "TimeoutAction": {},
            "BlockDurationMinutes": {
              "type": "integer"
            }
          }
        }
      }
    },
    "Sq": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "InstanceRole",
          "InstanceType",
          "InstanceCount"
        ],
        "members": {
          "Name": {},
          "Market": {},
          "InstanceRole": {},
          "BidPrice": {},
          "InstanceType": {},
          "InstanceCount": {
            "type": "integer"
          },
          "Configurations": {
            "shape": "Sh"
          },
          "EbsConfiguration": {
            "shape": "Sa"
          },
          "AutoScalingPolicy": {
            "shape": "Su"
          }
        }
      }
    },
    "Su": {
      "type": "structure",
      "required": [
        "Constraints",
        "Rules"
      ],
      "members": {
        "Constraints": {
          "shape": "Sv"
        },
        "Rules": {
          "shape": "Sw"
        }
      }
    },
    "Sv": {
      "type": "structure",
      "required": [
        "MinCapacity",
        "MaxCapacity"
      ],
      "members": {
        "MinCapacity": {
          "type": "integer"
        },
        "MaxCapacity": {
          "type": "integer"
        }
      }
    },
    "Sw": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Name",
          "Action",
          "Trigger"
        ],
        "members": {
          "Name": {},
          "Description": {},
          "Action": {
            "type": "structure",
            "required": [
              "SimpleScalingPolicyConfiguration"
            ],
            "members": {
              "Market": {},
              "SimpleScalingPolicyConfiguration": {
                "type": "structure",
                "required": [
                  "ScalingAdjustment"
                ],
                "members": {
                  "AdjustmentType": {},
                  "ScalingAdjustment": {
                    "type": "integer"
                  },
                  "CoolDown": {
                    "type": "integer"
                  }
                }
              }
            }
          },
          "Trigger": {
            "type": "structure",
            "required": [
              "CloudWatchAlarmDefinition"
            ],
            "members": {
              "CloudWatchAlarmDefinition": {
                "type": "structure",
                "required": [
                  "ComparisonOperator",
                  "MetricName",
                  "Period",
                  "Threshold"
                ],
                "members": {
                  "ComparisonOperator": {},
                  "EvaluationPeriods": {
                    "type": "integer"
                  },
                  "MetricName": {},
                  "Namespace": {},
                  "Period": {
                    "type": "integer"
                  },
                  "Statistic": {},
                  "Threshold": {
                    "type": "double"
                  },
                  "Unit": {},
                  "Dimensions": {
                    "type": "list",
                    "member": {
                      "type": "structure",
                      "members": {
                        "Key": {},
                        "Value": {}
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "S1b": {
      "type": "list",
      "member": {
        "shape": "S1c"
      }
    },
    "S1c": {
      "type": "structure",
      "required": [
        "Name",
        "HadoopJarStep"
      ],
      "members": {
        "Name": {},
        "ActionOnFailure": {},
        "HadoopJarStep": {
          "type": "structure",
          "required": [
            "Jar"
          ],
          "members": {
            "Properties": {
              "type": "list",
              "member": {
                "type": "structure",
                "members": {
                  "Key": {},
                  "Value": {}
                }
              }
            },
            "Jar": {},
            "MainClass": {},
            "Args": {
              "shape": "S1i"
            }
          }
        }
      }
    },
    "S1i": {
      "type": "list",
      "member": {}
    },
    "S1k": {
      "type": "list",
      "member": {}
    },
    "S1n": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "S25": {
      "type": "structure",
      "members": {
        "State": {},
        "StateChangeReason": {
          "type": "structure",
          "members": {
            "Code": {},
            "Message": {}
          }
        },
        "Timeline": {
          "type": "structure",
          "members": {
            "CreationDateTime": {
              "type": "timestamp"
            },
            "ReadyDateTime": {
              "type": "timestamp"
            },
            "EndDateTime": {
              "type": "timestamp"
            }
          }
        }
      }
    },
    "S2b": {
      "type": "list",
      "member": {}
    },
    "S2c": {
      "type": "list",
      "member": {}
    },
    "S2f": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Name": {},
          "Version": {},
          "Args": {
            "shape": "S2c"
          },
          "AdditionalInfo": {
            "shape": "Sj"
          }
        }
      }
    },
    "S2j": {
      "type": "structure",
      "required": [
        "Realm",
        "KdcAdminPassword"
      ],
      "members": {
        "Realm": {},
        "KdcAdminPassword": {},
        "CrossRealmTrustPrincipalPassword": {},
        "ADDomainJoinUser": {},
        "ADDomainJoinPassword": {}
      }
    },
    "S2v": {
      "type": "structure",
      "members": {
        "AvailabilityZone": {},
        "AvailabilityZones": {
          "shape": "S2b"
        }
      }
    },
    "S32": {
      "type": "structure",
      "required": [
        "Name",
        "ScriptBootstrapAction"
      ],
      "members": {
        "Name": {},
        "ScriptBootstrapAction": {
          "type": "structure",
          "required": [
            "Path"
          ],
          "members": {
            "Path": {},
            "Args": {
              "shape": "S1i"
            }
          }
        }
      }
    },
    "S34": {
      "type": "list",
      "member": {}
    },
    "S3a": {
      "type": "structure",
      "members": {
        "Jar": {},
        "Properties": {
          "shape": "Sj"
        },
        "MainClass": {},
        "Args": {
          "shape": "S2c"
        }
      }
    },
    "S3b": {
      "type": "structure",
      "members": {
        "State": {},
        "StateChangeReason": {
          "type": "structure",
          "members": {
            "Code": {},
            "Message": {}
          }
        },
        "FailureDetails": {
          "type": "structure",
          "members": {
            "Reason": {},
            "Message": {},
            "LogFile": {}
          }
        },
        "Timeline": {
          "type": "structure",
          "members": {
            "CreationDateTime": {
              "type": "timestamp"
            },
            "StartDateTime": {
              "type": "timestamp"
            },
            "EndDateTime": {
              "type": "timestamp"
            }
          }
        }
      }
    },
    "S42": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "VolumeSpecification": {
            "shape": "Sd"
          },
          "Device": {}
        }
      }
    },
    "S4e": {
      "type": "structure",
      "members": {
        "DecommissionTimeout": {
          "type": "integer"
        },
        "InstanceResizePolicy": {
          "type": "structure",
          "members": {
            "InstancesToTerminate": {
              "shape": "S4g"
            },
            "InstancesToProtect": {
              "shape": "S4g"
            },
            "InstanceTerminationTimeout": {
              "type": "integer"
            }
          }
        }
      }
    },
    "S4g": {
      "type": "list",
      "member": {}
    },
    "S4i": {
      "type": "structure",
      "members": {
        "Status": {
          "type": "structure",
          "members": {
            "State": {},
            "StateChangeReason": {
              "type": "structure",
              "members": {
                "Code": {},
                "Message": {}
              }
            }
          }
        },
        "Constraints": {
          "shape": "Sv"
        },
        "Rules": {
          "shape": "Sw"
        }
      }
    },
    "S5o": {
      "type": "list",
      "member": {}
    }
  }
}
},{}],70:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeJobFlows": {
      "result_key": "JobFlows"
    },
    "ListBootstrapActions": {
      "input_token": "Marker",
      "output_token": "Marker",
      "result_key": "BootstrapActions"
    },
    "ListClusters": {
      "input_token": "Marker",
      "output_token": "Marker",
      "result_key": "Clusters"
    },
    "ListInstanceFleets": {
      "input_token": "Marker",
      "output_token": "Marker",
      "result_key": "InstanceFleets"
    },
    "ListInstanceGroups": {
      "input_token": "Marker",
      "output_token": "Marker",
      "result_key": "InstanceGroups"
    },
    "ListInstances": {
      "input_token": "Marker",
      "output_token": "Marker",
      "result_key": "Instances"
    },
    "ListSteps": {
      "input_token": "Marker",
      "output_token": "Marker",
      "result_key": "Steps"
    }
  }
}
},{}],71:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "ClusterRunning": {
      "delay": 30,
      "operation": "DescribeCluster",
      "maxAttempts": 60,
      "acceptors": [
        {
          "state": "success",
          "matcher": "path",
          "argument": "Cluster.Status.State",
          "expected": "RUNNING"
        },
        {
          "state": "success",
          "matcher": "path",
          "argument": "Cluster.Status.State",
          "expected": "WAITING"
        },
        {
          "state": "failure",
          "matcher": "path",
          "argument": "Cluster.Status.State",
          "expected": "TERMINATING"
        },
        {
          "state": "failure",
          "matcher": "path",
          "argument": "Cluster.Status.State",
          "expected": "TERMINATED"
        },
        {
          "state": "failure",
          "matcher": "path",
          "argument": "Cluster.Status.State",
          "expected": "TERMINATED_WITH_ERRORS"
        }
      ]
    },
    "StepComplete": {
      "delay": 30,
      "operation": "DescribeStep",
      "maxAttempts": 60,
      "acceptors": [
        {
          "state": "success",
          "matcher": "path",
          "argument": "Step.Status.State",
          "expected": "COMPLETED"
        },
        {
          "state": "failure",
          "matcher": "path",
          "argument": "Step.Status.State",
          "expected": "FAILED"
        },
        {
          "state": "failure",
          "matcher": "path",
          "argument": "Step.Status.State",
          "expected": "CANCELLED"
        }
      ]
    },
    "ClusterTerminated": {
      "delay": 30,
      "operation": "DescribeCluster",
      "maxAttempts": 60,
      "acceptors": [
        {
          "state": "success",
          "matcher": "path",
          "argument": "Cluster.Status.State",
          "expected": "TERMINATED"
        },
        {
          "state": "failure",
          "matcher": "path",
          "argument": "Cluster.Status.State",
          "expected": "TERMINATED_WITH_ERRORS"
        }
      ]
    }
  }
}

},{}],72:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "uid": "elastictranscoder-2012-09-25",
    "apiVersion": "2012-09-25",
    "endpointPrefix": "elastictranscoder",
    "protocol": "rest-json",
    "serviceFullName": "Amazon Elastic Transcoder",
    "signatureVersion": "v4"
  },
  "operations": {
    "CancelJob": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2012-09-25/jobs/{Id}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "CreateJob": {
      "http": {
        "requestUri": "/2012-09-25/jobs",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "PipelineId"
        ],
        "members": {
          "PipelineId": {},
          "Input": {
            "shape": "S5"
          },
          "Inputs": {
            "shape": "St"
          },
          "Output": {
            "shape": "Su"
          },
          "Outputs": {
            "type": "list",
            "member": {
              "shape": "Su"
            }
          },
          "OutputKeyPrefix": {},
          "Playlists": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "Format": {},
                "OutputKeys": {
                  "shape": "S1l"
                },
                "HlsContentProtection": {
                  "shape": "S1m"
                },
                "PlayReadyDrm": {
                  "shape": "S1q"
                }
              }
            }
          },
          "UserMetadata": {
            "shape": "S1v"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Job": {
            "shape": "S1y"
          }
        }
      }
    },
    "CreatePipeline": {
      "http": {
        "requestUri": "/2012-09-25/pipelines",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "InputBucket",
          "Role"
        ],
        "members": {
          "Name": {},
          "InputBucket": {},
          "OutputBucket": {},
          "Role": {},
          "AwsKmsKeyArn": {},
          "Notifications": {
            "shape": "S2a"
          },
          "ContentConfig": {
            "shape": "S2c"
          },
          "ThumbnailConfig": {
            "shape": "S2c"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Pipeline": {
            "shape": "S2l"
          },
          "Warnings": {
            "shape": "S2n"
          }
        }
      }
    },
    "CreatePreset": {
      "http": {
        "requestUri": "/2012-09-25/presets",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "Container"
        ],
        "members": {
          "Name": {},
          "Description": {},
          "Container": {},
          "Video": {
            "shape": "S2r"
          },
          "Audio": {
            "shape": "S37"
          },
          "Thumbnails": {
            "shape": "S3i"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Preset": {
            "shape": "S3m"
          },
          "Warning": {}
        }
      }
    },
    "DeletePipeline": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2012-09-25/pipelines/{Id}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeletePreset": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2012-09-25/presets/{Id}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "ListJobsByPipeline": {
      "http": {
        "method": "GET",
        "requestUri": "/2012-09-25/jobsByPipeline/{PipelineId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "PipelineId"
        ],
        "members": {
          "PipelineId": {
            "location": "uri",
            "locationName": "PipelineId"
          },
          "Ascending": {
            "location": "querystring",
            "locationName": "Ascending"
          },
          "PageToken": {
            "location": "querystring",
            "locationName": "PageToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Jobs": {
            "shape": "S3v"
          },
          "NextPageToken": {}
        }
      }
    },
    "ListJobsByStatus": {
      "http": {
        "method": "GET",
        "requestUri": "/2012-09-25/jobsByStatus/{Status}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Status"
        ],
        "members": {
          "Status": {
            "location": "uri",
            "locationName": "Status"
          },
          "Ascending": {
            "location": "querystring",
            "locationName": "Ascending"
          },
          "PageToken": {
            "location": "querystring",
            "locationName": "PageToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Jobs": {
            "shape": "S3v"
          },
          "NextPageToken": {}
        }
      }
    },
    "ListPipelines": {
      "http": {
        "method": "GET",
        "requestUri": "/2012-09-25/pipelines"
      },
      "input": {
        "type": "structure",
        "members": {
          "Ascending": {
            "location": "querystring",
            "locationName": "Ascending"
          },
          "PageToken": {
            "location": "querystring",
            "locationName": "PageToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Pipelines": {
            "type": "list",
            "member": {
              "shape": "S2l"
            }
          },
          "NextPageToken": {}
        }
      }
    },
    "ListPresets": {
      "http": {
        "method": "GET",
        "requestUri": "/2012-09-25/presets"
      },
      "input": {
        "type": "structure",
        "members": {
          "Ascending": {
            "location": "querystring",
            "locationName": "Ascending"
          },
          "PageToken": {
            "location": "querystring",
            "locationName": "PageToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Presets": {
            "type": "list",
            "member": {
              "shape": "S3m"
            }
          },
          "NextPageToken": {}
        }
      }
    },
    "ReadJob": {
      "http": {
        "method": "GET",
        "requestUri": "/2012-09-25/jobs/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Job": {
            "shape": "S1y"
          }
        }
      }
    },
    "ReadPipeline": {
      "http": {
        "method": "GET",
        "requestUri": "/2012-09-25/pipelines/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Pipeline": {
            "shape": "S2l"
          },
          "Warnings": {
            "shape": "S2n"
          }
        }
      }
    },
    "ReadPreset": {
      "http": {
        "method": "GET",
        "requestUri": "/2012-09-25/presets/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Preset": {
            "shape": "S3m"
          }
        }
      }
    },
    "TestRole": {
      "http": {
        "requestUri": "/2012-09-25/roleTests",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "Role",
          "InputBucket",
          "OutputBucket",
          "Topics"
        ],
        "members": {
          "Role": {},
          "InputBucket": {},
          "OutputBucket": {},
          "Topics": {
            "type": "list",
            "member": {}
          }
        },
        "deprecated": true
      },
      "output": {
        "type": "structure",
        "members": {
          "Success": {},
          "Messages": {
            "type": "list",
            "member": {}
          }
        },
        "deprecated": true
      },
      "deprecated": true
    },
    "UpdatePipeline": {
      "http": {
        "method": "PUT",
        "requestUri": "/2012-09-25/pipelines/{Id}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "Name": {},
          "InputBucket": {},
          "Role": {},
          "AwsKmsKeyArn": {},
          "Notifications": {
            "shape": "S2a"
          },
          "ContentConfig": {
            "shape": "S2c"
          },
          "ThumbnailConfig": {
            "shape": "S2c"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Pipeline": {
            "shape": "S2l"
          },
          "Warnings": {
            "shape": "S2n"
          }
        }
      }
    },
    "UpdatePipelineNotifications": {
      "http": {
        "requestUri": "/2012-09-25/pipelines/{Id}/notifications"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id",
          "Notifications"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "Notifications": {
            "shape": "S2a"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Pipeline": {
            "shape": "S2l"
          }
        }
      }
    },
    "UpdatePipelineStatus": {
      "http": {
        "requestUri": "/2012-09-25/pipelines/{Id}/status"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id",
          "Status"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "Status": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Pipeline": {
            "shape": "S2l"
          }
        }
      }
    }
  },
  "shapes": {
    "S5": {
      "type": "structure",
      "members": {
        "Key": {},
        "FrameRate": {},
        "Resolution": {},
        "AspectRatio": {},
        "Interlaced": {},
        "Container": {},
        "Encryption": {
          "shape": "Sc"
        },
        "TimeSpan": {
          "shape": "Sg"
        },
        "InputCaptions": {
          "type": "structure",
          "members": {
            "MergePolicy": {},
            "CaptionSources": {
              "shape": "Sk"
            }
          }
        },
        "DetectedProperties": {
          "type": "structure",
          "members": {
            "Width": {
              "type": "integer"
            },
            "Height": {
              "type": "integer"
            },
            "FrameRate": {},
            "FileSize": {
              "type": "long"
            },
            "DurationMillis": {
              "type": "long"
            }
          }
        }
      }
    },
    "Sc": {
      "type": "structure",
      "members": {
        "Mode": {},
        "Key": {},
        "KeyMd5": {},
        "InitializationVector": {}
      }
    },
    "Sg": {
      "type": "structure",
      "members": {
        "StartTime": {},
        "Duration": {}
      }
    },
    "Sk": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Key": {},
          "Language": {},
          "TimeOffset": {},
          "Label": {},
          "Encryption": {
            "shape": "Sc"
          }
        }
      }
    },
    "St": {
      "type": "list",
      "member": {
        "shape": "S5"
      }
    },
    "Su": {
      "type": "structure",
      "members": {
        "Key": {},
        "ThumbnailPattern": {},
        "ThumbnailEncryption": {
          "shape": "Sc"
        },
        "Rotate": {},
        "PresetId": {},
        "SegmentDuration": {},
        "Watermarks": {
          "shape": "Sx"
        },
        "AlbumArt": {
          "shape": "S11"
        },
        "Composition": {
          "shape": "S19",
          "deprecated": true
        },
        "Captions": {
          "shape": "S1b"
        },
        "Encryption": {
          "shape": "Sc"
        }
      }
    },
    "Sx": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "PresetWatermarkId": {},
          "InputKey": {},
          "Encryption": {
            "shape": "Sc"
          }
        }
      }
    },
    "S11": {
      "type": "structure",
      "members": {
        "MergePolicy": {},
        "Artwork": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "InputKey": {},
              "MaxWidth": {},
              "MaxHeight": {},
              "SizingPolicy": {},
              "PaddingPolicy": {},
              "AlbumArtFormat": {},
              "Encryption": {
                "shape": "Sc"
              }
            }
          }
        }
      }
    },
    "S19": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "TimeSpan": {
            "shape": "Sg"
          }
        },
        "deprecated": true
      },
      "deprecated": true
    },
    "S1b": {
      "type": "structure",
      "members": {
        "MergePolicy": {
          "deprecated": true
        },
        "CaptionSources": {
          "shape": "Sk",
          "deprecated": true
        },
        "CaptionFormats": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "Format": {},
              "Pattern": {},
              "Encryption": {
                "shape": "Sc"
              }
            }
          }
        }
      }
    },
    "S1l": {
      "type": "list",
      "member": {}
    },
    "S1m": {
      "type": "structure",
      "members": {
        "Method": {},
        "Key": {},
        "KeyMd5": {},
        "InitializationVector": {},
        "LicenseAcquisitionUrl": {},
        "KeyStoragePolicy": {}
      }
    },
    "S1q": {
      "type": "structure",
      "members": {
        "Format": {},
        "Key": {},
        "KeyMd5": {},
        "KeyId": {},
        "InitializationVector": {},
        "LicenseAcquisitionUrl": {}
      }
    },
    "S1v": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S1y": {
      "type": "structure",
      "members": {
        "Id": {},
        "Arn": {},
        "PipelineId": {},
        "Input": {
          "shape": "S5"
        },
        "Inputs": {
          "shape": "St"
        },
        "Output": {
          "shape": "S1z"
        },
        "Outputs": {
          "type": "list",
          "member": {
            "shape": "S1z"
          }
        },
        "OutputKeyPrefix": {},
        "Playlists": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "Name": {},
              "Format": {},
              "OutputKeys": {
                "shape": "S1l"
              },
              "HlsContentProtection": {
                "shape": "S1m"
              },
              "PlayReadyDrm": {
                "shape": "S1q"
              },
              "Status": {},
              "StatusDetail": {}
            }
          }
        },
        "Status": {},
        "UserMetadata": {
          "shape": "S1v"
        },
        "Timing": {
          "type": "structure",
          "members": {
            "SubmitTimeMillis": {
              "type": "long"
            },
            "StartTimeMillis": {
              "type": "long"
            },
            "FinishTimeMillis": {
              "type": "long"
            }
          }
        }
      }
    },
    "S1z": {
      "type": "structure",
      "members": {
        "Id": {},
        "Key": {},
        "ThumbnailPattern": {},
        "ThumbnailEncryption": {
          "shape": "Sc"
        },
        "Rotate": {},
        "PresetId": {},
        "SegmentDuration": {},
        "Status": {},
        "StatusDetail": {},
        "Duration": {
          "type": "long"
        },
        "Width": {
          "type": "integer"
        },
        "Height": {
          "type": "integer"
        },
        "FrameRate": {},
        "FileSize": {
          "type": "long"
        },
        "DurationMillis": {
          "type": "long"
        },
        "Watermarks": {
          "shape": "Sx"
        },
        "AlbumArt": {
          "shape": "S11"
        },
        "Composition": {
          "shape": "S19",
          "deprecated": true
        },
        "Captions": {
          "shape": "S1b"
        },
        "Encryption": {
          "shape": "Sc"
        },
        "AppliedColorSpaceConversion": {}
      }
    },
    "S2a": {
      "type": "structure",
      "members": {
        "Progressing": {},
        "Completed": {},
        "Warning": {},
        "Error": {}
      }
    },
    "S2c": {
      "type": "structure",
      "members": {
        "Bucket": {},
        "StorageClass": {},
        "Permissions": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "GranteeType": {},
              "Grantee": {},
              "Access": {
                "type": "list",
                "member": {}
              }
            }
          }
        }
      }
    },
    "S2l": {
      "type": "structure",
      "members": {
        "Id": {},
        "Arn": {},
        "Name": {},
        "Status": {},
        "InputBucket": {},
        "OutputBucket": {},
        "Role": {},
        "AwsKmsKeyArn": {},
        "Notifications": {
          "shape": "S2a"
        },
        "ContentConfig": {
          "shape": "S2c"
        },
        "ThumbnailConfig": {
          "shape": "S2c"
        }
      }
    },
    "S2n": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Code": {},
          "Message": {}
        }
      }
    },
    "S2r": {
      "type": "structure",
      "members": {
        "Codec": {},
        "CodecOptions": {
          "type": "map",
          "key": {},
          "value": {}
        },
        "KeyframesMaxDist": {},
        "FixedGOP": {},
        "BitRate": {},
        "FrameRate": {},
        "MaxFrameRate": {},
        "Resolution": {},
        "AspectRatio": {},
        "MaxWidth": {},
        "MaxHeight": {},
        "DisplayAspectRatio": {},
        "SizingPolicy": {},
        "PaddingPolicy": {},
        "Watermarks": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "Id": {},
              "MaxWidth": {},
              "MaxHeight": {},
              "SizingPolicy": {},
              "HorizontalAlign": {},
              "HorizontalOffset": {},
              "VerticalAlign": {},
              "VerticalOffset": {},
              "Opacity": {},
              "Target": {}
            }
          }
        }
      }
    },
    "S37": {
      "type": "structure",
      "members": {
        "Codec": {},
        "SampleRate": {},
        "BitRate": {},
        "Channels": {},
        "AudioPackingMode": {},
        "CodecOptions": {
          "type": "structure",
          "members": {
            "Profile": {},
            "BitDepth": {},
            "BitOrder": {},
            "Signed": {}
          }
        }
      }
    },
    "S3i": {
      "type": "structure",
      "members": {
        "Format": {},
        "Interval": {},
        "Resolution": {},
        "AspectRatio": {},
        "MaxWidth": {},
        "MaxHeight": {},
        "SizingPolicy": {},
        "PaddingPolicy": {}
      }
    },
    "S3m": {
      "type": "structure",
      "members": {
        "Id": {},
        "Arn": {},
        "Name": {},
        "Description": {},
        "Container": {},
        "Audio": {
          "shape": "S37"
        },
        "Video": {
          "shape": "S2r"
        },
        "Thumbnails": {
          "shape": "S3i"
        },
        "Type": {}
      }
    },
    "S3v": {
      "type": "list",
      "member": {
        "shape": "S1y"
      }
    }
  }
}
},{}],73:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListJobsByPipeline": {
      "input_token": "PageToken",
      "output_token": "NextPageToken",
      "result_key": "Jobs"
    },
    "ListJobsByStatus": {
      "input_token": "PageToken",
      "output_token": "NextPageToken",
      "result_key": "Jobs"
    },
    "ListPipelines": {
      "input_token": "PageToken",
      "output_token": "NextPageToken",
      "result_key": "Pipelines"
    },
    "ListPresets": {
      "input_token": "PageToken",
      "output_token": "NextPageToken",
      "result_key": "Presets"
    }
  }
}

},{}],74:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "JobComplete": {
      "delay": 30,
      "operation": "ReadJob",
      "maxAttempts": 120,
      "acceptors": [
        {
          "expected": "Complete",
          "matcher": "path",
          "state": "success",
          "argument": "Job.Status"
        },
        {
          "expected": "Canceled",
          "matcher": "path",
          "state": "failure",
          "argument": "Job.Status"
        },
        {
          "expected": "Error",
          "matcher": "path",
          "state": "failure",
          "argument": "Job.Status"
        }
      ]
    }
  }
}

},{}],75:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2010-12-01",
    "endpointPrefix": "email",
    "protocol": "query",
    "serviceAbbreviation": "Amazon SES",
    "serviceFullName": "Amazon Simple Email Service",
    "serviceId": "SES",
    "signatureVersion": "v4",
    "signingName": "ses",
    "uid": "email-2010-12-01",
    "xmlNamespace": "http://ses.amazonaws.com/doc/2010-12-01/"
  },
  "operations": {
    "CloneReceiptRuleSet": {
      "input": {
        "type": "structure",
        "required": [
          "RuleSetName",
          "OriginalRuleSetName"
        ],
        "members": {
          "RuleSetName": {},
          "OriginalRuleSetName": {}
        }
      },
      "output": {
        "resultWrapper": "CloneReceiptRuleSetResult",
        "type": "structure",
        "members": {}
      }
    },
    "CreateConfigurationSet": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigurationSet"
        ],
        "members": {
          "ConfigurationSet": {
            "shape": "S5"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateConfigurationSetResult",
        "type": "structure",
        "members": {}
      }
    },
    "CreateConfigurationSetEventDestination": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigurationSetName",
          "EventDestination"
        ],
        "members": {
          "ConfigurationSetName": {},
          "EventDestination": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateConfigurationSetEventDestinationResult",
        "type": "structure",
        "members": {}
      }
    },
    "CreateConfigurationSetTrackingOptions": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigurationSetName",
          "TrackingOptions"
        ],
        "members": {
          "ConfigurationSetName": {},
          "TrackingOptions": {
            "shape": "Sp"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateConfigurationSetTrackingOptionsResult",
        "type": "structure",
        "members": {}
      }
    },
    "CreateCustomVerificationEmailTemplate": {
      "input": {
        "type": "structure",
        "required": [
          "TemplateName",
          "FromEmailAddress",
          "TemplateSubject",
          "TemplateContent",
          "SuccessRedirectionURL",
          "FailureRedirectionURL"
        ],
        "members": {
          "TemplateName": {},
          "FromEmailAddress": {},
          "TemplateSubject": {},
          "TemplateContent": {},
          "SuccessRedirectionURL": {},
          "FailureRedirectionURL": {}
        }
      }
    },
    "CreateReceiptFilter": {
      "input": {
        "type": "structure",
        "required": [
          "Filter"
        ],
        "members": {
          "Filter": {
            "shape": "S10"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateReceiptFilterResult",
        "type": "structure",
        "members": {}
      }
    },
    "CreateReceiptRule": {
      "input": {
        "type": "structure",
        "required": [
          "RuleSetName",
          "Rule"
        ],
        "members": {
          "RuleSetName": {},
          "After": {},
          "Rule": {
            "shape": "S18"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateReceiptRuleResult",
        "type": "structure",
        "members": {}
      }
    },
    "CreateReceiptRuleSet": {
      "input": {
        "type": "structure",
        "required": [
          "RuleSetName"
        ],
        "members": {
          "RuleSetName": {}
        }
      },
      "output": {
        "resultWrapper": "CreateReceiptRuleSetResult",
        "type": "structure",
        "members": {}
      }
    },
    "CreateTemplate": {
      "input": {
        "type": "structure",
        "required": [
          "Template"
        ],
        "members": {
          "Template": {
            "shape": "S20"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateTemplateResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteConfigurationSet": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigurationSetName"
        ],
        "members": {
          "ConfigurationSetName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteConfigurationSetResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteConfigurationSetEventDestination": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigurationSetName",
          "EventDestinationName"
        ],
        "members": {
          "ConfigurationSetName": {},
          "EventDestinationName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteConfigurationSetEventDestinationResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteConfigurationSetTrackingOptions": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigurationSetName"
        ],
        "members": {
          "ConfigurationSetName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteConfigurationSetTrackingOptionsResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteCustomVerificationEmailTemplate": {
      "input": {
        "type": "structure",
        "required": [
          "TemplateName"
        ],
        "members": {
          "TemplateName": {}
        }
      }
    },
    "DeleteIdentity": {
      "input": {
        "type": "structure",
        "required": [
          "Identity"
        ],
        "members": {
          "Identity": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteIdentityResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteIdentityPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "Identity",
          "PolicyName"
        ],
        "members": {
          "Identity": {},
          "PolicyName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteIdentityPolicyResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteReceiptFilter": {
      "input": {
        "type": "structure",
        "required": [
          "FilterName"
        ],
        "members": {
          "FilterName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteReceiptFilterResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteReceiptRule": {
      "input": {
        "type": "structure",
        "required": [
          "RuleSetName",
          "RuleName"
        ],
        "members": {
          "RuleSetName": {},
          "RuleName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteReceiptRuleResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteReceiptRuleSet": {
      "input": {
        "type": "structure",
        "required": [
          "RuleSetName"
        ],
        "members": {
          "RuleSetName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteReceiptRuleSetResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteTemplate": {
      "input": {
        "type": "structure",
        "required": [
          "TemplateName"
        ],
        "members": {
          "TemplateName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteTemplateResult",
        "type": "structure",
        "members": {}
      }
    },
    "DeleteVerifiedEmailAddress": {
      "input": {
        "type": "structure",
        "required": [
          "EmailAddress"
        ],
        "members": {
          "EmailAddress": {}
        }
      }
    },
    "DescribeActiveReceiptRuleSet": {
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "resultWrapper": "DescribeActiveReceiptRuleSetResult",
        "type": "structure",
        "members": {
          "Metadata": {
            "shape": "S2t"
          },
          "Rules": {
            "shape": "S2v"
          }
        }
      }
    },
    "DescribeConfigurationSet": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigurationSetName"
        ],
        "members": {
          "ConfigurationSetName": {},
          "ConfigurationSetAttributeNames": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeConfigurationSetResult",
        "type": "structure",
        "members": {
          "ConfigurationSet": {
            "shape": "S5"
          },
          "EventDestinations": {
            "type": "list",
            "member": {
              "shape": "S9"
            }
          },
          "TrackingOptions": {
            "shape": "Sp"
          },
          "ReputationOptions": {
            "type": "structure",
            "members": {
              "SendingEnabled": {
                "type": "boolean"
              },
              "ReputationMetricsEnabled": {
                "type": "boolean"
              },
              "LastFreshStart": {
                "type": "timestamp"
              }
            }
          }
        }
      }
    },
    "DescribeReceiptRule": {
      "input": {
        "type": "structure",
        "required": [
          "RuleSetName",
          "RuleName"
        ],
        "members": {
          "RuleSetName": {},
          "RuleName": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReceiptRuleResult",
        "type": "structure",
        "members": {
          "Rule": {
            "shape": "S18"
          }
        }
      }
    },
    "DescribeReceiptRuleSet": {
      "input": {
        "type": "structure",
        "required": [
          "RuleSetName"
        ],
        "members": {
          "RuleSetName": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReceiptRuleSetResult",
        "type": "structure",
        "members": {
          "Metadata": {
            "shape": "S2t"
          },
          "Rules": {
            "shape": "S2v"
          }
        }
      }
    },
    "GetAccountSendingEnabled": {
      "output": {
        "resultWrapper": "GetAccountSendingEnabledResult",
        "type": "structure",
        "members": {
          "Enabled": {
            "type": "boolean"
          }
        }
      }
    },
    "GetCustomVerificationEmailTemplate": {
      "input": {
        "type": "structure",
        "required": [
          "TemplateName"
        ],
        "members": {
          "TemplateName": {}
        }
      },
      "output": {
        "resultWrapper": "GetCustomVerificationEmailTemplateResult",
        "type": "structure",
        "members": {
          "TemplateName": {},
          "FromEmailAddress": {},
          "TemplateSubject": {},
          "TemplateContent": {},
          "SuccessRedirectionURL": {},
          "FailureRedirectionURL": {}
        }
      }
    },
    "GetIdentityDkimAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "Identities"
        ],
        "members": {
          "Identities": {
            "shape": "S3b"
          }
        }
      },
      "output": {
        "resultWrapper": "GetIdentityDkimAttributesResult",
        "type": "structure",
        "required": [
          "DkimAttributes"
        ],
        "members": {
          "DkimAttributes": {
            "type": "map",
            "key": {},
            "value": {
              "type": "structure",
              "required": [
                "DkimEnabled",
                "DkimVerificationStatus"
              ],
              "members": {
                "DkimEnabled": {
                  "type": "boolean"
                },
                "DkimVerificationStatus": {},
                "DkimTokens": {
                  "shape": "S3g"
                }
              }
            }
          }
        }
      }
    },
    "GetIdentityMailFromDomainAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "Identities"
        ],
        "members": {
          "Identities": {
            "shape": "S3b"
          }
        }
      },
      "output": {
        "resultWrapper": "GetIdentityMailFromDomainAttributesResult",
        "type": "structure",
        "required": [
          "MailFromDomainAttributes"
        ],
        "members": {
          "MailFromDomainAttributes": {
            "type": "map",
            "key": {},
            "value": {
              "type": "structure",
              "required": [
                "MailFromDomain",
                "MailFromDomainStatus",
                "BehaviorOnMXFailure"
              ],
              "members": {
                "MailFromDomain": {},
                "MailFromDomainStatus": {},
                "BehaviorOnMXFailure": {}
              }
            }
          }
        }
      }
    },
    "GetIdentityNotificationAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "Identities"
        ],
        "members": {
          "Identities": {
            "shape": "S3b"
          }
        }
      },
      "output": {
        "resultWrapper": "GetIdentityNotificationAttributesResult",
        "type": "structure",
        "required": [
          "NotificationAttributes"
        ],
        "members": {
          "NotificationAttributes": {
            "type": "map",
            "key": {},
            "value": {
              "type": "structure",
              "required": [
                "BounceTopic",
                "ComplaintTopic",
                "DeliveryTopic",
                "ForwardingEnabled"
              ],
              "members": {
                "BounceTopic": {},
                "ComplaintTopic": {},
                "DeliveryTopic": {},
                "ForwardingEnabled": {
                  "type": "boolean"
                },
                "HeadersInBounceNotificationsEnabled": {
                  "type": "boolean"
                },
                "HeadersInComplaintNotificationsEnabled": {
                  "type": "boolean"
                },
                "HeadersInDeliveryNotificationsEnabled": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      }
    },
    "GetIdentityPolicies": {
      "input": {
        "type": "structure",
        "required": [
          "Identity",
          "PolicyNames"
        ],
        "members": {
          "Identity": {},
          "PolicyNames": {
            "shape": "S3v"
          }
        }
      },
      "output": {
        "resultWrapper": "GetIdentityPoliciesResult",
        "type": "structure",
        "required": [
          "Policies"
        ],
        "members": {
          "Policies": {
            "type": "map",
            "key": {},
            "value": {}
          }
        }
      }
    },
    "GetIdentityVerificationAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "Identities"
        ],
        "members": {
          "Identities": {
            "shape": "S3b"
          }
        }
      },
      "output": {
        "resultWrapper": "GetIdentityVerificationAttributesResult",
        "type": "structure",
        "required": [
          "VerificationAttributes"
        ],
        "members": {
          "VerificationAttributes": {
            "type": "map",
            "key": {},
            "value": {
              "type": "structure",
              "required": [
                "VerificationStatus"
              ],
              "members": {
                "VerificationStatus": {},
                "VerificationToken": {}
              }
            }
          }
        }
      }
    },
    "GetSendQuota": {
      "output": {
        "resultWrapper": "GetSendQuotaResult",
        "type": "structure",
        "members": {
          "Max24HourSend": {
            "type": "double"
          },
          "MaxSendRate": {
            "type": "double"
          },
          "SentLast24Hours": {
            "type": "double"
          }
        }
      }
    },
    "GetSendStatistics": {
      "output": {
        "resultWrapper": "GetSendStatisticsResult",
        "type": "structure",
        "members": {
          "SendDataPoints": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Timestamp": {
                  "type": "timestamp"
                },
                "DeliveryAttempts": {
                  "type": "long"
                },
                "Bounces": {
                  "type": "long"
                },
                "Complaints": {
                  "type": "long"
                },
                "Rejects": {
                  "type": "long"
                }
              }
            }
          }
        }
      }
    },
    "GetTemplate": {
      "input": {
        "type": "structure",
        "required": [
          "TemplateName"
        ],
        "members": {
          "TemplateName": {}
        }
      },
      "output": {
        "resultWrapper": "GetTemplateResult",
        "type": "structure",
        "members": {
          "Template": {
            "shape": "S20"
          }
        }
      }
    },
    "ListConfigurationSets": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "MaxItems": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "ListConfigurationSetsResult",
        "type": "structure",
        "members": {
          "ConfigurationSets": {
            "type": "list",
            "member": {
              "shape": "S5"
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListCustomVerificationEmailTemplates": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "ListCustomVerificationEmailTemplatesResult",
        "type": "structure",
        "members": {
          "CustomVerificationEmailTemplates": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "TemplateName": {},
                "FromEmailAddress": {},
                "TemplateSubject": {},
                "SuccessRedirectionURL": {},
                "FailureRedirectionURL": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListIdentities": {
      "input": {
        "type": "structure",
        "members": {
          "IdentityType": {},
          "NextToken": {},
          "MaxItems": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "ListIdentitiesResult",
        "type": "structure",
        "required": [
          "Identities"
        ],
        "members": {
          "Identities": {
            "shape": "S3b"
          },
          "NextToken": {}
        }
      }
    },
    "ListIdentityPolicies": {
      "input": {
        "type": "structure",
        "required": [
          "Identity"
        ],
        "members": {
          "Identity": {}
        }
      },
      "output": {
        "resultWrapper": "ListIdentityPoliciesResult",
        "type": "structure",
        "required": [
          "PolicyNames"
        ],
        "members": {
          "PolicyNames": {
            "shape": "S3v"
          }
        }
      }
    },
    "ListReceiptFilters": {
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "resultWrapper": "ListReceiptFiltersResult",
        "type": "structure",
        "members": {
          "Filters": {
            "type": "list",
            "member": {
              "shape": "S10"
            }
          }
        }
      }
    },
    "ListReceiptRuleSets": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "ListReceiptRuleSetsResult",
        "type": "structure",
        "members": {
          "RuleSets": {
            "type": "list",
            "member": {
              "shape": "S2t"
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListTemplates": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "MaxItems": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "ListTemplatesResult",
        "type": "structure",
        "members": {
          "TemplatesMetadata": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "CreatedTimestamp": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListVerifiedEmailAddresses": {
      "output": {
        "resultWrapper": "ListVerifiedEmailAddressesResult",
        "type": "structure",
        "members": {
          "VerifiedEmailAddresses": {
            "shape": "S53"
          }
        }
      }
    },
    "PutIdentityPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "Identity",
          "PolicyName",
          "Policy"
        ],
        "members": {
          "Identity": {},
          "PolicyName": {},
          "Policy": {}
        }
      },
      "output": {
        "resultWrapper": "PutIdentityPolicyResult",
        "type": "structure",
        "members": {}
      }
    },
    "ReorderReceiptRuleSet": {
      "input": {
        "type": "structure",
        "required": [
          "RuleSetName",
          "RuleNames"
        ],
        "members": {
          "RuleSetName": {},
          "RuleNames": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "resultWrapper": "ReorderReceiptRuleSetResult",
        "type": "structure",
        "members": {}
      }
    },
    "SendBounce": {
      "input": {
        "type": "structure",
        "required": [
          "OriginalMessageId",
          "BounceSender",
          "BouncedRecipientInfoList"
        ],
        "members": {
          "OriginalMessageId": {},
          "BounceSender": {},
          "Explanation": {},
          "MessageDsn": {
            "type": "structure",
            "required": [
              "ReportingMta"
            ],
            "members": {
              "ReportingMta": {},
              "ArrivalDate": {
                "type": "timestamp"
              },
              "ExtensionFields": {
                "shape": "S5f"
              }
            }
          },
          "BouncedRecipientInfoList": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Recipient"
              ],
              "members": {
                "Recipient": {},
                "RecipientArn": {},
                "BounceType": {},
                "RecipientDsnFields": {
                  "type": "structure",
                  "required": [
                    "Action",
                    "Status"
                  ],
                  "members": {
                    "FinalRecipient": {},
                    "Action": {},
                    "RemoteMta": {},
                    "Status": {},
                    "DiagnosticCode": {},
                    "LastAttemptDate": {
                      "type": "timestamp"
                    },
                    "ExtensionFields": {
                      "shape": "S5f"
                    }
                  }
                }
              }
            }
          },
          "BounceSenderArn": {}
        }
      },
      "output": {
        "resultWrapper": "SendBounceResult",
        "type": "structure",
        "members": {
          "MessageId": {}
        }
      }
    },
    "SendBulkTemplatedEmail": {
      "input": {
        "type": "structure",
        "required": [
          "Source",
          "Template",
          "Destinations"
        ],
        "members": {
          "Source": {},
          "SourceArn": {},
          "ReplyToAddresses": {
            "shape": "S53"
          },
          "ReturnPath": {},
          "ReturnPathArn": {},
          "ConfigurationSetName": {},
          "DefaultTags": {
            "shape": "S5u"
          },
          "Template": {},
          "TemplateArn": {},
          "DefaultTemplateData": {},
          "Destinations": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Destination"
              ],
              "members": {
                "Destination": {
                  "shape": "S61"
                },
                "ReplacementTags": {
                  "shape": "S5u"
                },
                "ReplacementTemplateData": {}
              }
            }
          }
        }
      },
      "output": {
        "resultWrapper": "SendBulkTemplatedEmailResult",
        "type": "structure",
        "required": [
          "Status"
        ],
        "members": {
          "Status": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Status": {},
                "Error": {},
                "MessageId": {}
              }
            }
          }
        }
      }
    },
    "SendCustomVerificationEmail": {
      "input": {
        "type": "structure",
        "required": [
          "EmailAddress",
          "TemplateName"
        ],
        "members": {
          "EmailAddress": {},
          "TemplateName": {},
          "ConfigurationSetName": {}
        }
      },
      "output": {
        "resultWrapper": "SendCustomVerificationEmailResult",
        "type": "structure",
        "members": {
          "MessageId": {}
        }
      }
    },
    "SendEmail": {
      "input": {
        "type": "structure",
        "required": [
          "Source",
          "Destination",
          "Message"
        ],
        "members": {
          "Source": {},
          "Destination": {
            "shape": "S61"
          },
          "Message": {
            "type": "structure",
            "required": [
              "Subject",
              "Body"
            ],
            "members": {
              "Subject": {
                "shape": "S6b"
              },
              "Body": {
                "type": "structure",
                "members": {
                  "Text": {
                    "shape": "S6b"
                  },
                  "Html": {
                    "shape": "S6b"
                  }
                }
              }
            }
          },
          "ReplyToAddresses": {
            "shape": "S53"
          },
          "ReturnPath": {},
          "SourceArn": {},
          "ReturnPathArn": {},
          "Tags": {
            "shape": "S5u"
          },
          "ConfigurationSetName": {}
        }
      },
      "output": {
        "resultWrapper": "SendEmailResult",
        "type": "structure",
        "required": [
          "MessageId"
        ],
        "members": {
          "MessageId": {}
        }
      }
    },
    "SendRawEmail": {
      "input": {
        "type": "structure",
        "required": [
          "RawMessage"
        ],
        "members": {
          "Source": {},
          "Destinations": {
            "shape": "S53"
          },
          "RawMessage": {
            "type": "structure",
            "required": [
              "Data"
            ],
            "members": {
              "Data": {
                "type": "blob"
              }
            }
          },
          "FromArn": {},
          "SourceArn": {},
          "ReturnPathArn": {},
          "Tags": {
            "shape": "S5u"
          },
          "ConfigurationSetName": {}
        }
      },
      "output": {
        "resultWrapper": "SendRawEmailResult",
        "type": "structure",
        "required": [
          "MessageId"
        ],
        "members": {
          "MessageId": {}
        }
      }
    },
    "SendTemplatedEmail": {
      "input": {
        "type": "structure",
        "required": [
          "Source",
          "Destination",
          "Template",
          "TemplateData"
        ],
        "members": {
          "Source": {},
          "Destination": {
            "shape": "S61"
          },
          "ReplyToAddresses": {
            "shape": "S53"
          },
          "ReturnPath": {},
          "SourceArn": {},
          "ReturnPathArn": {},
          "Tags": {
            "shape": "S5u"
          },
          "ConfigurationSetName": {},
          "Template": {},
          "TemplateArn": {},
          "TemplateData": {}
        }
      },
      "output": {
        "resultWrapper": "SendTemplatedEmailResult",
        "type": "structure",
        "required": [
          "MessageId"
        ],
        "members": {
          "MessageId": {}
        }
      }
    },
    "SetActiveReceiptRuleSet": {
      "input": {
        "type": "structure",
        "members": {
          "RuleSetName": {}
        }
      },
      "output": {
        "resultWrapper": "SetActiveReceiptRuleSetResult",
        "type": "structure",
        "members": {}
      }
    },
    "SetIdentityDkimEnabled": {
      "input": {
        "type": "structure",
        "required": [
          "Identity",
          "DkimEnabled"
        ],
        "members": {
          "Identity": {},
          "DkimEnabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "SetIdentityDkimEnabledResult",
        "type": "structure",
        "members": {}
      }
    },
    "SetIdentityFeedbackForwardingEnabled": {
      "input": {
        "type": "structure",
        "required": [
          "Identity",
          "ForwardingEnabled"
        ],
        "members": {
          "Identity": {},
          "ForwardingEnabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "SetIdentityFeedbackForwardingEnabledResult",
        "type": "structure",
        "members": {}
      }
    },
    "SetIdentityHeadersInNotificationsEnabled": {
      "input": {
        "type": "structure",
        "required": [
          "Identity",
          "NotificationType",
          "Enabled"
        ],
        "members": {
          "Identity": {},
          "NotificationType": {},
          "Enabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "SetIdentityHeadersInNotificationsEnabledResult",
        "type": "structure",
        "members": {}
      }
    },
    "SetIdentityMailFromDomain": {
      "input": {
        "type": "structure",
        "required": [
          "Identity"
        ],
        "members": {
          "Identity": {},
          "MailFromDomain": {},
          "BehaviorOnMXFailure": {}
        }
      },
      "output": {
        "resultWrapper": "SetIdentityMailFromDomainResult",
        "type": "structure",
        "members": {}
      }
    },
    "SetIdentityNotificationTopic": {
      "input": {
        "type": "structure",
        "required": [
          "Identity",
          "NotificationType"
        ],
        "members": {
          "Identity": {},
          "NotificationType": {},
          "SnsTopic": {}
        }
      },
      "output": {
        "resultWrapper": "SetIdentityNotificationTopicResult",
        "type": "structure",
        "members": {}
      }
    },
    "SetReceiptRulePosition": {
      "input": {
        "type": "structure",
        "required": [
          "RuleSetName",
          "RuleName"
        ],
        "members": {
          "RuleSetName": {},
          "RuleName": {},
          "After": {}
        }
      },
      "output": {
        "resultWrapper": "SetReceiptRulePositionResult",
        "type": "structure",
        "members": {}
      }
    },
    "TestRenderTemplate": {
      "input": {
        "type": "structure",
        "required": [
          "TemplateName",
          "TemplateData"
        ],
        "members": {
          "TemplateName": {},
          "TemplateData": {}
        }
      },
      "output": {
        "resultWrapper": "TestRenderTemplateResult",
        "type": "structure",
        "members": {
          "RenderedTemplate": {}
        }
      }
    },
    "UpdateAccountSendingEnabled": {
      "input": {
        "type": "structure",
        "members": {
          "Enabled": {
            "type": "boolean"
          }
        }
      }
    },
    "UpdateConfigurationSetEventDestination": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigurationSetName",
          "EventDestination"
        ],
        "members": {
          "ConfigurationSetName": {},
          "EventDestination": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "UpdateConfigurationSetEventDestinationResult",
        "type": "structure",
        "members": {}
      }
    },
    "UpdateConfigurationSetReputationMetricsEnabled": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigurationSetName",
          "Enabled"
        ],
        "members": {
          "ConfigurationSetName": {},
          "Enabled": {
            "type": "boolean"
          }
        }
      }
    },
    "UpdateConfigurationSetSendingEnabled": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigurationSetName",
          "Enabled"
        ],
        "members": {
          "ConfigurationSetName": {},
          "Enabled": {
            "type": "boolean"
          }
        }
      }
    },
    "UpdateConfigurationSetTrackingOptions": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigurationSetName",
          "TrackingOptions"
        ],
        "members": {
          "ConfigurationSetName": {},
          "TrackingOptions": {
            "shape": "Sp"
          }
        }
      },
      "output": {
        "resultWrapper": "UpdateConfigurationSetTrackingOptionsResult",
        "type": "structure",
        "members": {}
      }
    },
    "UpdateCustomVerificationEmailTemplate": {
      "input": {
        "type": "structure",
        "required": [
          "TemplateName"
        ],
        "members": {
          "TemplateName": {},
          "FromEmailAddress": {},
          "TemplateSubject": {},
          "TemplateContent": {},
          "SuccessRedirectionURL": {},
          "FailureRedirectionURL": {}
        }
      }
    },
    "UpdateReceiptRule": {
      "input": {
        "type": "structure",
        "required": [
          "RuleSetName",
          "Rule"
        ],
        "members": {
          "RuleSetName": {},
          "Rule": {
            "shape": "S18"
          }
        }
      },
      "output": {
        "resultWrapper": "UpdateReceiptRuleResult",
        "type": "structure",
        "members": {}
      }
    },
    "UpdateTemplate": {
      "input": {
        "type": "structure",
        "required": [
          "Template"
        ],
        "members": {
          "Template": {
            "shape": "S20"
          }
        }
      },
      "output": {
        "resultWrapper": "UpdateTemplateResult",
        "type": "structure",
        "members": {}
      }
    },
    "VerifyDomainDkim": {
      "input": {
        "type": "structure",
        "required": [
          "Domain"
        ],
        "members": {
          "Domain": {}
        }
      },
      "output": {
        "resultWrapper": "VerifyDomainDkimResult",
        "type": "structure",
        "required": [
          "DkimTokens"
        ],
        "members": {
          "DkimTokens": {
            "shape": "S3g"
          }
        }
      }
    },
    "VerifyDomainIdentity": {
      "input": {
        "type": "structure",
        "required": [
          "Domain"
        ],
        "members": {
          "Domain": {}
        }
      },
      "output": {
        "resultWrapper": "VerifyDomainIdentityResult",
        "type": "structure",
        "required": [
          "VerificationToken"
        ],
        "members": {
          "VerificationToken": {}
        }
      }
    },
    "VerifyEmailAddress": {
      "input": {
        "type": "structure",
        "required": [
          "EmailAddress"
        ],
        "members": {
          "EmailAddress": {}
        }
      }
    },
    "VerifyEmailIdentity": {
      "input": {
        "type": "structure",
        "required": [
          "EmailAddress"
        ],
        "members": {
          "EmailAddress": {}
        }
      },
      "output": {
        "resultWrapper": "VerifyEmailIdentityResult",
        "type": "structure",
        "members": {}
      }
    }
  },
  "shapes": {
    "S5": {
      "type": "structure",
      "required": [
        "Name"
      ],
      "members": {
        "Name": {}
      }
    },
    "S9": {
      "type": "structure",
      "required": [
        "Name",
        "MatchingEventTypes"
      ],
      "members": {
        "Name": {},
        "Enabled": {
          "type": "boolean"
        },
        "MatchingEventTypes": {
          "type": "list",
          "member": {}
        },
        "KinesisFirehoseDestination": {
          "type": "structure",
          "required": [
            "IAMRoleARN",
            "DeliveryStreamARN"
          ],
          "members": {
            "IAMRoleARN": {},
            "DeliveryStreamARN": {}
          }
        },
        "CloudWatchDestination": {
          "type": "structure",
          "required": [
            "DimensionConfigurations"
          ],
          "members": {
            "DimensionConfigurations": {
              "type": "list",
              "member": {
                "type": "structure",
                "required": [
                  "DimensionName",
                  "DimensionValueSource",
                  "DefaultDimensionValue"
                ],
                "members": {
                  "DimensionName": {},
                  "DimensionValueSource": {},
                  "DefaultDimensionValue": {}
                }
              }
            }
          }
        },
        "SNSDestination": {
          "type": "structure",
          "required": [
            "TopicARN"
          ],
          "members": {
            "TopicARN": {}
          }
        }
      }
    },
    "Sp": {
      "type": "structure",
      "members": {
        "CustomRedirectDomain": {}
      }
    },
    "S10": {
      "type": "structure",
      "required": [
        "Name",
        "IpFilter"
      ],
      "members": {
        "Name": {},
        "IpFilter": {
          "type": "structure",
          "required": [
            "Policy",
            "Cidr"
          ],
          "members": {
            "Policy": {},
            "Cidr": {}
          }
        }
      }
    },
    "S18": {
      "type": "structure",
      "required": [
        "Name"
      ],
      "members": {
        "Name": {},
        "Enabled": {
          "type": "boolean"
        },
        "TlsPolicy": {},
        "Recipients": {
          "type": "list",
          "member": {}
        },
        "Actions": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "S3Action": {
                "type": "structure",
                "required": [
                  "BucketName"
                ],
                "members": {
                  "TopicArn": {},
                  "BucketName": {},
                  "ObjectKeyPrefix": {},
                  "KmsKeyArn": {}
                }
              },
              "BounceAction": {
                "type": "structure",
                "required": [
                  "SmtpReplyCode",
                  "Message",
                  "Sender"
                ],
                "members": {
                  "TopicArn": {},
                  "SmtpReplyCode": {},
                  "StatusCode": {},
                  "Message": {},
                  "Sender": {}
                }
              },
              "WorkmailAction": {
                "type": "structure",
                "required": [
                  "OrganizationArn"
                ],
                "members": {
                  "TopicArn": {},
                  "OrganizationArn": {}
                }
              },
              "LambdaAction": {
                "type": "structure",
                "required": [
                  "FunctionArn"
                ],
                "members": {
                  "TopicArn": {},
                  "FunctionArn": {},
                  "InvocationType": {}
                }
              },
              "StopAction": {
                "type": "structure",
                "required": [
                  "Scope"
                ],
                "members": {
                  "Scope": {},
                  "TopicArn": {}
                }
              },
              "AddHeaderAction": {
                "type": "structure",
                "required": [
                  "HeaderName",
                  "HeaderValue"
                ],
                "members": {
                  "HeaderName": {},
                  "HeaderValue": {}
                }
              },
              "SNSAction": {
                "type": "structure",
                "required": [
                  "TopicArn"
                ],
                "members": {
                  "TopicArn": {},
                  "Encoding": {}
                }
              }
            }
          }
        },
        "ScanEnabled": {
          "type": "boolean"
        }
      }
    },
    "S20": {
      "type": "structure",
      "required": [
        "TemplateName"
      ],
      "members": {
        "TemplateName": {},
        "SubjectPart": {},
        "TextPart": {},
        "HtmlPart": {}
      }
    },
    "S2t": {
      "type": "structure",
      "members": {
        "Name": {},
        "CreatedTimestamp": {
          "type": "timestamp"
        }
      }
    },
    "S2v": {
      "type": "list",
      "member": {
        "shape": "S18"
      }
    },
    "S3b": {
      "type": "list",
      "member": {}
    },
    "S3g": {
      "type": "list",
      "member": {}
    },
    "S3v": {
      "type": "list",
      "member": {}
    },
    "S53": {
      "type": "list",
      "member": {}
    },
    "S5f": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Name",
          "Value"
        ],
        "members": {
          "Name": {},
          "Value": {}
        }
      }
    },
    "S5u": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Name",
          "Value"
        ],
        "members": {
          "Name": {},
          "Value": {}
        }
      }
    },
    "S61": {
      "type": "structure",
      "members": {
        "ToAddresses": {
          "shape": "S53"
        },
        "CcAddresses": {
          "shape": "S53"
        },
        "BccAddresses": {
          "shape": "S53"
        }
      }
    },
    "S6b": {
      "type": "structure",
      "required": [
        "Data"
      ],
      "members": {
        "Data": {},
        "Charset": {}
      }
    }
  }
}
},{}],76:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListCustomVerificationEmailTemplates": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken"
    },
    "ListIdentities": {
      "input_token": "NextToken",
      "limit_key": "MaxItems",
      "output_token": "NextToken",
      "result_key": "Identities"
    },
    "ListVerifiedEmailAddresses": {
      "result_key": "VerifiedEmailAddresses"
    }
  }
}
},{}],77:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "IdentityExists": {
      "delay": 3,
      "operation": "GetIdentityVerificationAttributes",
      "maxAttempts": 20,
      "acceptors": [
        {
          "expected": "Success",
          "matcher": "pathAll",
          "state": "success",
          "argument": "VerificationAttributes.*.VerificationStatus"
        }
      ]
    }
  }
}

},{}],78:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-10-07",
    "endpointPrefix": "events",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceFullName": "Amazon CloudWatch Events",
    "signatureVersion": "v4",
    "targetPrefix": "AWSEvents",
    "uid": "events-2015-10-07"
  },
  "operations": {
    "DeleteRule": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      }
    },
    "DescribeEventBus": {
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "members": {
          "Name": {},
          "Arn": {},
          "Policy": {}
        }
      }
    },
    "DescribeRule": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Name": {},
          "Arn": {},
          "EventPattern": {},
          "ScheduleExpression": {},
          "State": {},
          "Description": {},
          "RoleArn": {}
        }
      }
    },
    "DisableRule": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      }
    },
    "EnableRule": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      }
    },
    "ListRuleNamesByTarget": {
      "input": {
        "type": "structure",
        "required": [
          "TargetArn"
        ],
        "members": {
          "TargetArn": {},
          "NextToken": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RuleNames": {
            "type": "list",
            "member": {}
          },
          "NextToken": {}
        }
      }
    },
    "ListRules": {
      "input": {
        "type": "structure",
        "members": {
          "NamePrefix": {},
          "NextToken": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Rules": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "Arn": {},
                "EventPattern": {},
                "State": {},
                "Description": {},
                "ScheduleExpression": {},
                "RoleArn": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListTargetsByRule": {
      "input": {
        "type": "structure",
        "required": [
          "Rule"
        ],
        "members": {
          "Rule": {},
          "NextToken": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Targets": {
            "shape": "Ss"
          },
          "NextToken": {}
        }
      }
    },
    "PutEvents": {
      "input": {
        "type": "structure",
        "required": [
          "Entries"
        ],
        "members": {
          "Entries": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Time": {
                  "type": "timestamp"
                },
                "Source": {},
                "Resources": {
                  "type": "list",
                  "member": {}
                },
                "DetailType": {},
                "Detail": {}
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FailedEntryCount": {
            "type": "integer"
          },
          "Entries": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "EventId": {},
                "ErrorCode": {},
                "ErrorMessage": {}
              }
            }
          }
        }
      }
    },
    "PutPermission": {
      "input": {
        "type": "structure",
        "required": [
          "Action",
          "Principal",
          "StatementId"
        ],
        "members": {
          "Action": {},
          "Principal": {},
          "StatementId": {}
        }
      }
    },
    "PutRule": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {},
          "ScheduleExpression": {},
          "EventPattern": {},
          "State": {},
          "Description": {},
          "RoleArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RuleArn": {}
        }
      }
    },
    "PutTargets": {
      "input": {
        "type": "structure",
        "required": [
          "Rule",
          "Targets"
        ],
        "members": {
          "Rule": {},
          "Targets": {
            "shape": "Ss"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FailedEntryCount": {
            "type": "integer"
          },
          "FailedEntries": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "TargetId": {},
                "ErrorCode": {},
                "ErrorMessage": {}
              }
            }
          }
        }
      }
    },
    "RemovePermission": {
      "input": {
        "type": "structure",
        "required": [
          "StatementId"
        ],
        "members": {
          "StatementId": {}
        }
      }
    },
    "RemoveTargets": {
      "input": {
        "type": "structure",
        "required": [
          "Rule",
          "Ids"
        ],
        "members": {
          "Rule": {},
          "Ids": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FailedEntryCount": {
            "type": "integer"
          },
          "FailedEntries": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "TargetId": {},
                "ErrorCode": {},
                "ErrorMessage": {}
              }
            }
          }
        }
      }
    },
    "TestEventPattern": {
      "input": {
        "type": "structure",
        "required": [
          "EventPattern",
          "Event"
        ],
        "members": {
          "EventPattern": {},
          "Event": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Result": {
            "type": "boolean"
          }
        }
      }
    }
  },
  "shapes": {
    "Ss": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Id",
          "Arn"
        ],
        "members": {
          "Id": {},
          "Arn": {},
          "RoleArn": {},
          "Input": {},
          "InputPath": {},
          "InputTransformer": {
            "type": "structure",
            "required": [
              "InputTemplate"
            ],
            "members": {
              "InputPathsMap": {
                "type": "map",
                "key": {},
                "value": {}
              },
              "InputTemplate": {}
            }
          },
          "KinesisParameters": {
            "type": "structure",
            "required": [
              "PartitionKeyPath"
            ],
            "members": {
              "PartitionKeyPath": {}
            }
          },
          "RunCommandParameters": {
            "type": "structure",
            "required": [
              "RunCommandTargets"
            ],
            "members": {
              "RunCommandTargets": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "required": [
                    "Key",
                    "Values"
                  ],
                  "members": {
                    "Key": {},
                    "Values": {
                      "type": "list",
                      "member": {}
                    }
                  }
                }
              }
            }
          },
          "EcsParameters": {
            "type": "structure",
            "required": [
              "TaskDefinitionArn"
            ],
            "members": {
              "TaskDefinitionArn": {},
              "TaskCount": {
                "type": "integer"
              }
            }
          }
        }
      }
    }
  }
}
},{}],79:[function(require,module,exports){
arguments[4][19][0].apply(exports,arguments)
},{"dup":19}],80:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-08-04",
    "endpointPrefix": "firehose",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "Firehose",
    "serviceFullName": "Amazon Kinesis Firehose",
    "serviceId": "Firehose",
    "signatureVersion": "v4",
    "targetPrefix": "Firehose_20150804",
    "uid": "firehose-2015-08-04"
  },
  "operations": {
    "CreateDeliveryStream": {
      "input": {
        "type": "structure",
        "required": [
          "DeliveryStreamName"
        ],
        "members": {
          "DeliveryStreamName": {},
          "DeliveryStreamType": {},
          "KinesisStreamSourceConfiguration": {
            "type": "structure",
            "required": [
              "KinesisStreamARN",
              "RoleARN"
            ],
            "members": {
              "KinesisStreamARN": {},
              "RoleARN": {}
            }
          },
          "S3DestinationConfiguration": {
            "shape": "S7",
            "deprecated": true
          },
          "ExtendedS3DestinationConfiguration": {
            "type": "structure",
            "required": [
              "RoleARN",
              "BucketARN"
            ],
            "members": {
              "RoleARN": {},
              "BucketARN": {},
              "Prefix": {},
              "BufferingHints": {
                "shape": "Sa"
              },
              "CompressionFormat": {},
              "EncryptionConfiguration": {
                "shape": "Se"
              },
              "CloudWatchLoggingOptions": {
                "shape": "Si"
              },
              "ProcessingConfiguration": {
                "shape": "Sn"
              },
              "S3BackupMode": {},
              "S3BackupConfiguration": {
                "shape": "S7"
              }
            }
          },
          "RedshiftDestinationConfiguration": {
            "type": "structure",
            "required": [
              "RoleARN",
              "ClusterJDBCURL",
              "CopyCommand",
              "Username",
              "Password",
              "S3Configuration"
            ],
            "members": {
              "RoleARN": {},
              "ClusterJDBCURL": {},
              "CopyCommand": {
                "shape": "Sy"
              },
              "Username": {
                "shape": "S12"
              },
              "Password": {
                "shape": "S13"
              },
              "RetryOptions": {
                "shape": "S14"
              },
              "S3Configuration": {
                "shape": "S7"
              },
              "ProcessingConfiguration": {
                "shape": "Sn"
              },
              "S3BackupMode": {},
              "S3BackupConfiguration": {
                "shape": "S7"
              },
              "CloudWatchLoggingOptions": {
                "shape": "Si"
              }
            }
          },
          "ElasticsearchDestinationConfiguration": {
            "type": "structure",
            "required": [
              "RoleARN",
              "DomainARN",
              "IndexName",
              "TypeName",
              "S3Configuration"
            ],
            "members": {
              "RoleARN": {},
              "DomainARN": {},
              "IndexName": {},
              "TypeName": {},
              "IndexRotationPeriod": {},
              "BufferingHints": {
                "shape": "S1c"
              },
              "RetryOptions": {
                "shape": "S1f"
              },
              "S3BackupMode": {},
              "S3Configuration": {
                "shape": "S7"
              },
              "ProcessingConfiguration": {
                "shape": "Sn"
              },
              "CloudWatchLoggingOptions": {
                "shape": "Si"
              }
            }
          },
          "SplunkDestinationConfiguration": {
            "type": "structure",
            "required": [
              "HECEndpoint",
              "HECEndpointType",
              "HECToken",
              "S3Configuration"
            ],
            "members": {
              "HECEndpoint": {},
              "HECEndpointType": {},
              "HECToken": {},
              "HECAcknowledgmentTimeoutInSeconds": {
                "type": "integer"
              },
              "RetryOptions": {
                "shape": "S1n"
              },
              "S3BackupMode": {},
              "S3Configuration": {
                "shape": "S7"
              },
              "ProcessingConfiguration": {
                "shape": "Sn"
              },
              "CloudWatchLoggingOptions": {
                "shape": "Si"
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DeliveryStreamARN": {}
        }
      }
    },
    "DeleteDeliveryStream": {
      "input": {
        "type": "structure",
        "required": [
          "DeliveryStreamName"
        ],
        "members": {
          "DeliveryStreamName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DescribeDeliveryStream": {
      "input": {
        "type": "structure",
        "required": [
          "DeliveryStreamName"
        ],
        "members": {
          "DeliveryStreamName": {},
          "Limit": {
            "type": "integer"
          },
          "ExclusiveStartDestinationId": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "DeliveryStreamDescription"
        ],
        "members": {
          "DeliveryStreamDescription": {
            "type": "structure",
            "required": [
              "DeliveryStreamName",
              "DeliveryStreamARN",
              "DeliveryStreamStatus",
              "DeliveryStreamType",
              "VersionId",
              "Destinations",
              "HasMoreDestinations"
            ],
            "members": {
              "DeliveryStreamName": {},
              "DeliveryStreamARN": {},
              "DeliveryStreamStatus": {},
              "DeliveryStreamType": {},
              "VersionId": {},
              "CreateTimestamp": {
                "type": "timestamp"
              },
              "LastUpdateTimestamp": {
                "type": "timestamp"
              },
              "Source": {
                "type": "structure",
                "members": {
                  "KinesisStreamSourceDescription": {
                    "type": "structure",
                    "members": {
                      "KinesisStreamARN": {},
                      "RoleARN": {},
                      "DeliveryStartTimestamp": {
                        "type": "timestamp"
                      }
                    }
                  }
                }
              },
              "Destinations": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "required": [
                    "DestinationId"
                  ],
                  "members": {
                    "DestinationId": {},
                    "S3DestinationDescription": {
                      "shape": "S27"
                    },
                    "ExtendedS3DestinationDescription": {
                      "type": "structure",
                      "required": [
                        "RoleARN",
                        "BucketARN",
                        "BufferingHints",
                        "CompressionFormat",
                        "EncryptionConfiguration"
                      ],
                      "members": {
                        "RoleARN": {},
                        "BucketARN": {},
                        "Prefix": {},
                        "BufferingHints": {
                          "shape": "Sa"
                        },
                        "CompressionFormat": {},
                        "EncryptionConfiguration": {
                          "shape": "Se"
                        },
                        "CloudWatchLoggingOptions": {
                          "shape": "Si"
                        },
                        "ProcessingConfiguration": {
                          "shape": "Sn"
                        },
                        "S3BackupMode": {},
                        "S3BackupDescription": {
                          "shape": "S27"
                        }
                      }
                    },
                    "RedshiftDestinationDescription": {
                      "type": "structure",
                      "required": [
                        "RoleARN",
                        "ClusterJDBCURL",
                        "CopyCommand",
                        "Username",
                        "S3DestinationDescription"
                      ],
                      "members": {
                        "RoleARN": {},
                        "ClusterJDBCURL": {},
                        "CopyCommand": {
                          "shape": "Sy"
                        },
                        "Username": {
                          "shape": "S12"
                        },
                        "RetryOptions": {
                          "shape": "S14"
                        },
                        "S3DestinationDescription": {
                          "shape": "S27"
                        },
                        "ProcessingConfiguration": {
                          "shape": "Sn"
                        },
                        "S3BackupMode": {},
                        "S3BackupDescription": {
                          "shape": "S27"
                        },
                        "CloudWatchLoggingOptions": {
                          "shape": "Si"
                        }
                      }
                    },
                    "ElasticsearchDestinationDescription": {
                      "type": "structure",
                      "members": {
                        "RoleARN": {},
                        "DomainARN": {},
                        "IndexName": {},
                        "TypeName": {},
                        "IndexRotationPeriod": {},
                        "BufferingHints": {
                          "shape": "S1c"
                        },
                        "RetryOptions": {
                          "shape": "S1f"
                        },
                        "S3BackupMode": {},
                        "S3DestinationDescription": {
                          "shape": "S27"
                        },
                        "ProcessingConfiguration": {
                          "shape": "Sn"
                        },
                        "CloudWatchLoggingOptions": {
                          "shape": "Si"
                        }
                      }
                    },
                    "SplunkDestinationDescription": {
                      "type": "structure",
                      "members": {
                        "HECEndpoint": {},
                        "HECEndpointType": {},
                        "HECToken": {},
                        "HECAcknowledgmentTimeoutInSeconds": {
                          "type": "integer"
                        },
                        "RetryOptions": {
                          "shape": "S1n"
                        },
                        "S3BackupMode": {},
                        "S3DestinationDescription": {
                          "shape": "S27"
                        },
                        "ProcessingConfiguration": {
                          "shape": "Sn"
                        },
                        "CloudWatchLoggingOptions": {
                          "shape": "Si"
                        }
                      }
                    }
                  }
                }
              },
              "HasMoreDestinations": {
                "type": "boolean"
              }
            }
          }
        }
      }
    },
    "ListDeliveryStreams": {
      "input": {
        "type": "structure",
        "members": {
          "Limit": {
            "type": "integer"
          },
          "DeliveryStreamType": {},
          "ExclusiveStartDeliveryStreamName": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "DeliveryStreamNames",
          "HasMoreDeliveryStreams"
        ],
        "members": {
          "DeliveryStreamNames": {
            "type": "list",
            "member": {}
          },
          "HasMoreDeliveryStreams": {
            "type": "boolean"
          }
        }
      }
    },
    "PutRecord": {
      "input": {
        "type": "structure",
        "required": [
          "DeliveryStreamName",
          "Record"
        ],
        "members": {
          "DeliveryStreamName": {},
          "Record": {
            "shape": "S2h"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "RecordId"
        ],
        "members": {
          "RecordId": {}
        }
      }
    },
    "PutRecordBatch": {
      "input": {
        "type": "structure",
        "required": [
          "DeliveryStreamName",
          "Records"
        ],
        "members": {
          "DeliveryStreamName": {},
          "Records": {
            "type": "list",
            "member": {
              "shape": "S2h"
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "FailedPutCount",
          "RequestResponses"
        ],
        "members": {
          "FailedPutCount": {
            "type": "integer"
          },
          "RequestResponses": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "RecordId": {},
                "ErrorCode": {},
                "ErrorMessage": {}
              }
            }
          }
        }
      }
    },
    "UpdateDestination": {
      "input": {
        "type": "structure",
        "required": [
          "DeliveryStreamName",
          "CurrentDeliveryStreamVersionId",
          "DestinationId"
        ],
        "members": {
          "DeliveryStreamName": {},
          "CurrentDeliveryStreamVersionId": {},
          "DestinationId": {},
          "S3DestinationUpdate": {
            "shape": "S2u",
            "deprecated": true
          },
          "ExtendedS3DestinationUpdate": {
            "type": "structure",
            "members": {
              "RoleARN": {},
              "BucketARN": {},
              "Prefix": {},
              "BufferingHints": {
                "shape": "Sa"
              },
              "CompressionFormat": {},
              "EncryptionConfiguration": {
                "shape": "Se"
              },
              "CloudWatchLoggingOptions": {
                "shape": "Si"
              },
              "ProcessingConfiguration": {
                "shape": "Sn"
              },
              "S3BackupMode": {},
              "S3BackupUpdate": {
                "shape": "S2u"
              }
            }
          },
          "RedshiftDestinationUpdate": {
            "type": "structure",
            "members": {
              "RoleARN": {},
              "ClusterJDBCURL": {},
              "CopyCommand": {
                "shape": "Sy"
              },
              "Username": {
                "shape": "S12"
              },
              "Password": {
                "shape": "S13"
              },
              "RetryOptions": {
                "shape": "S14"
              },
              "S3Update": {
                "shape": "S2u"
              },
              "ProcessingConfiguration": {
                "shape": "Sn"
              },
              "S3BackupMode": {},
              "S3BackupUpdate": {
                "shape": "S2u"
              },
              "CloudWatchLoggingOptions": {
                "shape": "Si"
              }
            }
          },
          "ElasticsearchDestinationUpdate": {
            "type": "structure",
            "members": {
              "RoleARN": {},
              "DomainARN": {},
              "IndexName": {},
              "TypeName": {},
              "IndexRotationPeriod": {},
              "BufferingHints": {
                "shape": "S1c"
              },
              "RetryOptions": {
                "shape": "S1f"
              },
              "S3Update": {
                "shape": "S2u"
              },
              "ProcessingConfiguration": {
                "shape": "Sn"
              },
              "CloudWatchLoggingOptions": {
                "shape": "Si"
              }
            }
          },
          "SplunkDestinationUpdate": {
            "type": "structure",
            "members": {
              "HECEndpoint": {},
              "HECEndpointType": {},
              "HECToken": {},
              "HECAcknowledgmentTimeoutInSeconds": {
                "type": "integer"
              },
              "RetryOptions": {
                "shape": "S1n"
              },
              "S3BackupMode": {},
              "S3Update": {
                "shape": "S2u"
              },
              "ProcessingConfiguration": {
                "shape": "Sn"
              },
              "CloudWatchLoggingOptions": {
                "shape": "Si"
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    }
  },
  "shapes": {
    "S7": {
      "type": "structure",
      "required": [
        "RoleARN",
        "BucketARN"
      ],
      "members": {
        "RoleARN": {},
        "BucketARN": {},
        "Prefix": {},
        "BufferingHints": {
          "shape": "Sa"
        },
        "CompressionFormat": {},
        "EncryptionConfiguration": {
          "shape": "Se"
        },
        "CloudWatchLoggingOptions": {
          "shape": "Si"
        }
      }
    },
    "Sa": {
      "type": "structure",
      "members": {
        "SizeInMBs": {
          "type": "integer"
        },
        "IntervalInSeconds": {
          "type": "integer"
        }
      }
    },
    "Se": {
      "type": "structure",
      "members": {
        "NoEncryptionConfig": {},
        "KMSEncryptionConfig": {
          "type": "structure",
          "required": [
            "AWSKMSKeyARN"
          ],
          "members": {
            "AWSKMSKeyARN": {}
          }
        }
      }
    },
    "Si": {
      "type": "structure",
      "members": {
        "Enabled": {
          "type": "boolean"
        },
        "LogGroupName": {},
        "LogStreamName": {}
      }
    },
    "Sn": {
      "type": "structure",
      "members": {
        "Enabled": {
          "type": "boolean"
        },
        "Processors": {
          "type": "list",
          "member": {
            "type": "structure",
            "required": [
              "Type"
            ],
            "members": {
              "Type": {},
              "Parameters": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "required": [
                    "ParameterName",
                    "ParameterValue"
                  ],
                  "members": {
                    "ParameterName": {},
                    "ParameterValue": {}
                  }
                }
              }
            }
          }
        }
      }
    },
    "Sy": {
      "type": "structure",
      "required": [
        "DataTableName"
      ],
      "members": {
        "DataTableName": {},
        "DataTableColumns": {},
        "CopyOptions": {}
      }
    },
    "S12": {
      "type": "string",
      "sensitive": true
    },
    "S13": {
      "type": "string",
      "sensitive": true
    },
    "S14": {
      "type": "structure",
      "members": {
        "DurationInSeconds": {
          "type": "integer"
        }
      }
    },
    "S1c": {
      "type": "structure",
      "members": {
        "IntervalInSeconds": {
          "type": "integer"
        },
        "SizeInMBs": {
          "type": "integer"
        }
      }
    },
    "S1f": {
      "type": "structure",
      "members": {
        "DurationInSeconds": {
          "type": "integer"
        }
      }
    },
    "S1n": {
      "type": "structure",
      "members": {
        "DurationInSeconds": {
          "type": "integer"
        }
      }
    },
    "S27": {
      "type": "structure",
      "required": [
        "RoleARN",
        "BucketARN",
        "BufferingHints",
        "CompressionFormat",
        "EncryptionConfiguration"
      ],
      "members": {
        "RoleARN": {},
        "BucketARN": {},
        "Prefix": {},
        "BufferingHints": {
          "shape": "Sa"
        },
        "CompressionFormat": {},
        "EncryptionConfiguration": {
          "shape": "Se"
        },
        "CloudWatchLoggingOptions": {
          "shape": "Si"
        }
      }
    },
    "S2h": {
      "type": "structure",
      "required": [
        "Data"
      ],
      "members": {
        "Data": {
          "type": "blob"
        }
      }
    },
    "S2u": {
      "type": "structure",
      "members": {
        "RoleARN": {},
        "BucketARN": {},
        "Prefix": {},
        "BufferingHints": {
          "shape": "Sa"
        },
        "CompressionFormat": {},
        "EncryptionConfiguration": {
          "shape": "Se"
        },
        "CloudWatchLoggingOptions": {
          "shape": "Si"
        }
      }
    }
  }
}
},{}],81:[function(require,module,exports){
arguments[4][19][0].apply(exports,arguments)
},{"dup":19}],82:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-10-01",
    "endpointPrefix": "gamelift",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceFullName": "Amazon GameLift",
    "signatureVersion": "v4",
    "targetPrefix": "GameLift",
    "uid": "gamelift-2015-10-01"
  },
  "operations": {
    "AcceptMatch": {
      "input": {
        "type": "structure",
        "required": [
          "TicketId",
          "PlayerIds",
          "AcceptanceType"
        ],
        "members": {
          "TicketId": {},
          "PlayerIds": {
            "type": "list",
            "member": {}
          },
          "AcceptanceType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "CreateAlias": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "RoutingStrategy"
        ],
        "members": {
          "Name": {},
          "Description": {},
          "RoutingStrategy": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Alias": {
            "shape": "Sf"
          }
        }
      }
    },
    "CreateBuild": {
      "input": {
        "type": "structure",
        "members": {
          "Name": {},
          "Version": {},
          "StorageLocation": {
            "shape": "Sk"
          },
          "OperatingSystem": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Build": {
            "shape": "So"
          },
          "UploadCredentials": {
            "shape": "Ss"
          },
          "StorageLocation": {
            "shape": "Sk"
          }
        }
      }
    },
    "CreateFleet": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "BuildId",
          "EC2InstanceType"
        ],
        "members": {
          "Name": {},
          "Description": {},
          "BuildId": {},
          "ServerLaunchPath": {},
          "ServerLaunchParameters": {},
          "LogPaths": {
            "shape": "Su"
          },
          "EC2InstanceType": {},
          "EC2InboundPermissions": {
            "shape": "Sw"
          },
          "NewGameSessionProtectionPolicy": {},
          "RuntimeConfiguration": {
            "shape": "S12"
          },
          "ResourceCreationLimitPolicy": {
            "shape": "S18"
          },
          "MetricGroups": {
            "shape": "S1a"
          },
          "PeerVpcAwsAccountId": {},
          "PeerVpcId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FleetAttributes": {
            "shape": "S1d"
          }
        }
      }
    },
    "CreateGameSession": {
      "input": {
        "type": "structure",
        "required": [
          "MaximumPlayerSessionCount"
        ],
        "members": {
          "FleetId": {},
          "AliasId": {},
          "MaximumPlayerSessionCount": {
            "type": "integer"
          },
          "Name": {},
          "GameProperties": {
            "shape": "S1g"
          },
          "CreatorId": {},
          "GameSessionId": {},
          "IdempotencyToken": {},
          "GameSessionData": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GameSession": {
            "shape": "S1n"
          }
        }
      }
    },
    "CreateGameSessionQueue": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {},
          "TimeoutInSeconds": {
            "type": "integer"
          },
          "PlayerLatencyPolicies": {
            "shape": "S1t"
          },
          "Destinations": {
            "shape": "S1v"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GameSessionQueue": {
            "shape": "S1y"
          }
        }
      }
    },
    "CreateMatchmakingConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "GameSessionQueueArns",
          "RequestTimeoutSeconds",
          "AcceptanceRequired",
          "RuleSetName"
        ],
        "members": {
          "Name": {},
          "Description": {},
          "GameSessionQueueArns": {
            "shape": "S20"
          },
          "RequestTimeoutSeconds": {
            "type": "integer"
          },
          "AcceptanceTimeoutSeconds": {
            "type": "integer"
          },
          "AcceptanceRequired": {
            "type": "boolean"
          },
          "RuleSetName": {},
          "NotificationTarget": {},
          "AdditionalPlayerCount": {
            "type": "integer"
          },
          "CustomEventData": {},
          "GameProperties": {
            "shape": "S1g"
          },
          "GameSessionData": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Configuration": {
            "shape": "S27"
          }
        }
      }
    },
    "CreateMatchmakingRuleSet": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "RuleSetBody"
        ],
        "members": {
          "Name": {},
          "RuleSetBody": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "RuleSet"
        ],
        "members": {
          "RuleSet": {
            "shape": "S2b"
          }
        }
      }
    },
    "CreatePlayerSession": {
      "input": {
        "type": "structure",
        "required": [
          "GameSessionId",
          "PlayerId"
        ],
        "members": {
          "GameSessionId": {},
          "PlayerId": {},
          "PlayerData": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "PlayerSession": {
            "shape": "S2f"
          }
        }
      }
    },
    "CreatePlayerSessions": {
      "input": {
        "type": "structure",
        "required": [
          "GameSessionId",
          "PlayerIds"
        ],
        "members": {
          "GameSessionId": {},
          "PlayerIds": {
            "type": "list",
            "member": {}
          },
          "PlayerDataMap": {
            "type": "map",
            "key": {},
            "value": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "PlayerSessions": {
            "shape": "S2m"
          }
        }
      }
    },
    "CreateVpcPeeringAuthorization": {
      "input": {
        "type": "structure",
        "required": [
          "GameLiftAwsAccountId",
          "PeerVpcId"
        ],
        "members": {
          "GameLiftAwsAccountId": {},
          "PeerVpcId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VpcPeeringAuthorization": {
            "shape": "S2p"
          }
        }
      }
    },
    "CreateVpcPeeringConnection": {
      "input": {
        "type": "structure",
        "required": [
          "FleetId",
          "PeerVpcAwsAccountId",
          "PeerVpcId"
        ],
        "members": {
          "FleetId": {},
          "PeerVpcAwsAccountId": {},
          "PeerVpcId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteAlias": {
      "input": {
        "type": "structure",
        "required": [
          "AliasId"
        ],
        "members": {
          "AliasId": {}
        }
      }
    },
    "DeleteBuild": {
      "input": {
        "type": "structure",
        "required": [
          "BuildId"
        ],
        "members": {
          "BuildId": {}
        }
      }
    },
    "DeleteFleet": {
      "input": {
        "type": "structure",
        "required": [
          "FleetId"
        ],
        "members": {
          "FleetId": {}
        }
      }
    },
    "DeleteGameSessionQueue": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteMatchmakingConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteScalingPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "FleetId"
        ],
        "members": {
          "Name": {},
          "FleetId": {}
        }
      }
    },
    "DeleteVpcPeeringAuthorization": {
      "input": {
        "type": "structure",
        "required": [
          "GameLiftAwsAccountId",
          "PeerVpcId"
        ],
        "members": {
          "GameLiftAwsAccountId": {},
          "PeerVpcId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteVpcPeeringConnection": {
      "input": {
        "type": "structure",
        "required": [
          "FleetId",
          "VpcPeeringConnectionId"
        ],
        "members": {
          "FleetId": {},
          "VpcPeeringConnectionId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DescribeAlias": {
      "input": {
        "type": "structure",
        "required": [
          "AliasId"
        ],
        "members": {
          "AliasId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Alias": {
            "shape": "Sf"
          }
        }
      }
    },
    "DescribeBuild": {
      "input": {
        "type": "structure",
        "required": [
          "BuildId"
        ],
        "members": {
          "BuildId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Build": {
            "shape": "So"
          }
        }
      }
    },
    "DescribeEC2InstanceLimits": {
      "input": {
        "type": "structure",
        "members": {
          "EC2InstanceType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "EC2InstanceLimits": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "EC2InstanceType": {},
                "CurrentInstances": {
                  "type": "integer"
                },
                "InstanceLimit": {
                  "type": "integer"
                }
              }
            }
          }
        }
      }
    },
    "DescribeFleetAttributes": {
      "input": {
        "type": "structure",
        "members": {
          "FleetIds": {
            "shape": "S3d"
          },
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FleetAttributes": {
            "type": "list",
            "member": {
              "shape": "S1d"
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeFleetCapacity": {
      "input": {
        "type": "structure",
        "members": {
          "FleetIds": {
            "shape": "S3d"
          },
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FleetCapacity": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "FleetId": {},
                "InstanceType": {},
                "InstanceCounts": {
                  "type": "structure",
                  "members": {
                    "DESIRED": {
                      "type": "integer"
                    },
                    "MINIMUM": {
                      "type": "integer"
                    },
                    "MAXIMUM": {
                      "type": "integer"
                    },
                    "PENDING": {
                      "type": "integer"
                    },
                    "ACTIVE": {
                      "type": "integer"
                    },
                    "IDLE": {
                      "type": "integer"
                    },
                    "TERMINATING": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeFleetEvents": {
      "input": {
        "type": "structure",
        "required": [
          "FleetId"
        ],
        "members": {
          "FleetId": {},
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Events": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "EventId": {},
                "ResourceId": {},
                "EventCode": {},
                "Message": {},
                "EventTime": {
                  "type": "timestamp"
                },
                "PreSignedLogUrl": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeFleetPortSettings": {
      "input": {
        "type": "structure",
        "required": [
          "FleetId"
        ],
        "members": {
          "FleetId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InboundPermissions": {
            "shape": "Sw"
          }
        }
      }
    },
    "DescribeFleetUtilization": {
      "input": {
        "type": "structure",
        "members": {
          "FleetIds": {
            "shape": "S3d"
          },
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FleetUtilization": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "FleetId": {},
                "ActiveServerProcessCount": {
                  "type": "integer"
                },
                "ActiveGameSessionCount": {
                  "type": "integer"
                },
                "CurrentPlayerSessionCount": {
                  "type": "integer"
                },
                "MaximumPlayerSessionCount": {
                  "type": "integer"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeGameSessionDetails": {
      "input": {
        "type": "structure",
        "members": {
          "FleetId": {},
          "GameSessionId": {},
          "AliasId": {},
          "StatusFilter": {},
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GameSessionDetails": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "GameSession": {
                  "shape": "S1n"
                },
                "ProtectionPolicy": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeGameSessionPlacement": {
      "input": {
        "type": "structure",
        "required": [
          "PlacementId"
        ],
        "members": {
          "PlacementId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GameSessionPlacement": {
            "shape": "S42"
          }
        }
      }
    },
    "DescribeGameSessionQueues": {
      "input": {
        "type": "structure",
        "members": {
          "Names": {
            "type": "list",
            "member": {}
          },
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GameSessionQueues": {
            "type": "list",
            "member": {
              "shape": "S1y"
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeGameSessions": {
      "input": {
        "type": "structure",
        "members": {
          "FleetId": {},
          "GameSessionId": {},
          "AliasId": {},
          "StatusFilter": {},
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GameSessions": {
            "shape": "S4f"
          },
          "NextToken": {}
        }
      }
    },
    "DescribeInstances": {
      "input": {
        "type": "structure",
        "required": [
          "FleetId"
        ],
        "members": {
          "FleetId": {},
          "InstanceId": {},
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Instances": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "FleetId": {},
                "InstanceId": {},
                "IpAddress": {},
                "OperatingSystem": {},
                "Type": {},
                "Status": {},
                "CreationTime": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeMatchmaking": {
      "input": {
        "type": "structure",
        "required": [
          "TicketIds"
        ],
        "members": {
          "TicketIds": {
            "shape": "S4n"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TicketList": {
            "type": "list",
            "member": {
              "shape": "S4q"
            }
          }
        }
      }
    },
    "DescribeMatchmakingConfigurations": {
      "input": {
        "type": "structure",
        "members": {
          "Names": {
            "shape": "S4n"
          },
          "RuleSetName": {},
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Configurations": {
            "type": "list",
            "member": {
              "shape": "S27"
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeMatchmakingRuleSets": {
      "input": {
        "type": "structure",
        "members": {
          "Names": {
            "type": "list",
            "member": {}
          },
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "RuleSets"
        ],
        "members": {
          "RuleSets": {
            "type": "list",
            "member": {
              "shape": "S2b"
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribePlayerSessions": {
      "input": {
        "type": "structure",
        "members": {
          "GameSessionId": {},
          "PlayerId": {},
          "PlayerSessionId": {},
          "PlayerSessionStatusFilter": {},
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "PlayerSessions": {
            "shape": "S2m"
          },
          "NextToken": {}
        }
      }
    },
    "DescribeRuntimeConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "FleetId"
        ],
        "members": {
          "FleetId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RuntimeConfiguration": {
            "shape": "S12"
          }
        }
      }
    },
    "DescribeScalingPolicies": {
      "input": {
        "type": "structure",
        "required": [
          "FleetId"
        ],
        "members": {
          "FleetId": {},
          "StatusFilter": {},
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ScalingPolicies": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "FleetId": {},
                "Name": {},
                "Status": {},
                "ScalingAdjustment": {
                  "type": "integer"
                },
                "ScalingAdjustmentType": {},
                "ComparisonOperator": {},
                "Threshold": {
                  "type": "double"
                },
                "EvaluationPeriods": {
                  "type": "integer"
                },
                "MetricName": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeVpcPeeringAuthorizations": {
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "members": {
          "VpcPeeringAuthorizations": {
            "type": "list",
            "member": {
              "shape": "S2p"
            }
          }
        }
      }
    },
    "DescribeVpcPeeringConnections": {
      "input": {
        "type": "structure",
        "members": {
          "FleetId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VpcPeeringConnections": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "FleetId": {},
                "IpV4CidrBlock": {},
                "VpcPeeringConnectionId": {},
                "Status": {
                  "type": "structure",
                  "members": {
                    "Code": {},
                    "Message": {}
                  }
                },
                "PeerVpcId": {},
                "GameLiftVpcId": {}
              }
            }
          }
        }
      }
    },
    "GetGameSessionLogUrl": {
      "input": {
        "type": "structure",
        "required": [
          "GameSessionId"
        ],
        "members": {
          "GameSessionId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "PreSignedUrl": {}
        }
      }
    },
    "GetInstanceAccess": {
      "input": {
        "type": "structure",
        "required": [
          "FleetId",
          "InstanceId"
        ],
        "members": {
          "FleetId": {},
          "InstanceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstanceAccess": {
            "type": "structure",
            "members": {
              "FleetId": {},
              "InstanceId": {},
              "IpAddress": {},
              "OperatingSystem": {},
              "Credentials": {
                "type": "structure",
                "members": {
                  "UserName": {},
                  "Secret": {}
                },
                "sensitive": true
              }
            }
          }
        }
      }
    },
    "ListAliases": {
      "input": {
        "type": "structure",
        "members": {
          "RoutingStrategyType": {},
          "Name": {},
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Aliases": {
            "type": "list",
            "member": {
              "shape": "Sf"
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListBuilds": {
      "input": {
        "type": "structure",
        "members": {
          "Status": {},
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Builds": {
            "type": "list",
            "member": {
              "shape": "So"
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListFleets": {
      "input": {
        "type": "structure",
        "members": {
          "BuildId": {},
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FleetIds": {
            "shape": "S3d"
          },
          "NextToken": {}
        }
      }
    },
    "PutScalingPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "FleetId",
          "ScalingAdjustment",
          "ScalingAdjustmentType",
          "Threshold",
          "ComparisonOperator",
          "EvaluationPeriods",
          "MetricName"
        ],
        "members": {
          "Name": {},
          "FleetId": {},
          "ScalingAdjustment": {
            "type": "integer"
          },
          "ScalingAdjustmentType": {},
          "Threshold": {
            "type": "double"
          },
          "ComparisonOperator": {},
          "EvaluationPeriods": {
            "type": "integer"
          },
          "MetricName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Name": {}
        }
      }
    },
    "RequestUploadCredentials": {
      "input": {
        "type": "structure",
        "required": [
          "BuildId"
        ],
        "members": {
          "BuildId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UploadCredentials": {
            "shape": "Ss"
          },
          "StorageLocation": {
            "shape": "Sk"
          }
        }
      }
    },
    "ResolveAlias": {
      "input": {
        "type": "structure",
        "required": [
          "AliasId"
        ],
        "members": {
          "AliasId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FleetId": {}
        }
      }
    },
    "SearchGameSessions": {
      "input": {
        "type": "structure",
        "members": {
          "FleetId": {},
          "AliasId": {},
          "FilterExpression": {},
          "SortExpression": {},
          "Limit": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GameSessions": {
            "shape": "S4f"
          },
          "NextToken": {}
        }
      }
    },
    "StartGameSessionPlacement": {
      "input": {
        "type": "structure",
        "required": [
          "PlacementId",
          "GameSessionQueueName",
          "MaximumPlayerSessionCount"
        ],
        "members": {
          "PlacementId": {},
          "GameSessionQueueName": {},
          "GameProperties": {
            "shape": "S1g"
          },
          "MaximumPlayerSessionCount": {
            "type": "integer"
          },
          "GameSessionName": {},
          "PlayerLatencies": {
            "shape": "S44"
          },
          "DesiredPlayerSessions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "PlayerId": {},
                "PlayerData": {}
              }
            }
          },
          "GameSessionData": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GameSessionPlacement": {
            "shape": "S42"
          }
        }
      }
    },
    "StartMatchmaking": {
      "input": {
        "type": "structure",
        "required": [
          "ConfigurationName",
          "Players"
        ],
        "members": {
          "TicketId": {},
          "ConfigurationName": {},
          "Players": {
            "shape": "S4t"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "MatchmakingTicket": {
            "shape": "S4q"
          }
        }
      }
    },
    "StopGameSessionPlacement": {
      "input": {
        "type": "structure",
        "required": [
          "PlacementId"
        ],
        "members": {
          "PlacementId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GameSessionPlacement": {
            "shape": "S42"
          }
        }
      }
    },
    "StopMatchmaking": {
      "input": {
        "type": "structure",
        "required": [
          "TicketId"
        ],
        "members": {
          "TicketId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UpdateAlias": {
      "input": {
        "type": "structure",
        "required": [
          "AliasId"
        ],
        "members": {
          "AliasId": {},
          "Name": {},
          "Description": {},
          "RoutingStrategy": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Alias": {
            "shape": "Sf"
          }
        }
      }
    },
    "UpdateBuild": {
      "input": {
        "type": "structure",
        "required": [
          "BuildId"
        ],
        "members": {
          "BuildId": {},
          "Name": {},
          "Version": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Build": {
            "shape": "So"
          }
        }
      }
    },
    "UpdateFleetAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "FleetId"
        ],
        "members": {
          "FleetId": {},
          "Name": {},
          "Description": {},
          "NewGameSessionProtectionPolicy": {},
          "ResourceCreationLimitPolicy": {
            "shape": "S18"
          },
          "MetricGroups": {
            "shape": "S1a"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FleetId": {}
        }
      }
    },
    "UpdateFleetCapacity": {
      "input": {
        "type": "structure",
        "required": [
          "FleetId"
        ],
        "members": {
          "FleetId": {},
          "DesiredInstances": {
            "type": "integer"
          },
          "MinSize": {
            "type": "integer"
          },
          "MaxSize": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FleetId": {}
        }
      }
    },
    "UpdateFleetPortSettings": {
      "input": {
        "type": "structure",
        "required": [
          "FleetId"
        ],
        "members": {
          "FleetId": {},
          "InboundPermissionAuthorizations": {
            "shape": "Sw"
          },
          "InboundPermissionRevocations": {
            "shape": "Sw"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FleetId": {}
        }
      }
    },
    "UpdateGameSession": {
      "input": {
        "type": "structure",
        "required": [
          "GameSessionId"
        ],
        "members": {
          "GameSessionId": {},
          "MaximumPlayerSessionCount": {
            "type": "integer"
          },
          "Name": {},
          "PlayerSessionCreationPolicy": {},
          "ProtectionPolicy": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GameSession": {
            "shape": "S1n"
          }
        }
      }
    },
    "UpdateGameSessionQueue": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {},
          "TimeoutInSeconds": {
            "type": "integer"
          },
          "PlayerLatencyPolicies": {
            "shape": "S1t"
          },
          "Destinations": {
            "shape": "S1v"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GameSessionQueue": {
            "shape": "S1y"
          }
        }
      }
    },
    "UpdateMatchmakingConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {},
          "Description": {},
          "GameSessionQueueArns": {
            "shape": "S20"
          },
          "RequestTimeoutSeconds": {
            "type": "integer"
          },
          "AcceptanceTimeoutSeconds": {
            "type": "integer"
          },
          "AcceptanceRequired": {
            "type": "boolean"
          },
          "RuleSetName": {},
          "NotificationTarget": {},
          "AdditionalPlayerCount": {
            "type": "integer"
          },
          "CustomEventData": {},
          "GameProperties": {
            "shape": "S1g"
          },
          "GameSessionData": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Configuration": {
            "shape": "S27"
          }
        }
      }
    },
    "UpdateRuntimeConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "FleetId",
          "RuntimeConfiguration"
        ],
        "members": {
          "FleetId": {},
          "RuntimeConfiguration": {
            "shape": "S12"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RuntimeConfiguration": {
            "shape": "S12"
          }
        }
      }
    },
    "ValidateMatchmakingRuleSet": {
      "input": {
        "type": "structure",
        "required": [
          "RuleSetBody"
        ],
        "members": {
          "RuleSetBody": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Valid": {
            "type": "boolean"
          }
        }
      }
    }
  },
  "shapes": {
    "Sa": {
      "type": "structure",
      "members": {
        "Type": {},
        "FleetId": {},
        "Message": {}
      }
    },
    "Sf": {
      "type": "structure",
      "members": {
        "AliasId": {},
        "Name": {},
        "AliasArn": {},
        "Description": {},
        "RoutingStrategy": {
          "shape": "Sa"
        },
        "CreationTime": {
          "type": "timestamp"
        },
        "LastUpdatedTime": {
          "type": "timestamp"
        }
      }
    },
    "Sk": {
      "type": "structure",
      "members": {
        "Bucket": {},
        "Key": {},
        "RoleArn": {}
      }
    },
    "So": {
      "type": "structure",
      "members": {
        "BuildId": {},
        "Name": {},
        "Version": {},
        "Status": {},
        "SizeOnDisk": {
          "type": "long"
        },
        "OperatingSystem": {},
        "CreationTime": {
          "type": "timestamp"
        }
      }
    },
    "Ss": {
      "type": "structure",
      "members": {
        "AccessKeyId": {},
        "SecretAccessKey": {},
        "SessionToken": {}
      },
      "sensitive": true
    },
    "Su": {
      "type": "list",
      "member": {}
    },
    "Sw": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "FromPort",
          "ToPort",
          "IpRange",
          "Protocol"
        ],
        "members": {
          "FromPort": {
            "type": "integer"
          },
          "ToPort": {
            "type": "integer"
          },
          "IpRange": {},
          "Protocol": {}
        }
      }
    },
    "S12": {
      "type": "structure",
      "members": {
        "ServerProcesses": {
          "type": "list",
          "member": {
            "type": "structure",
            "required": [
              "LaunchPath",
              "ConcurrentExecutions"
            ],
            "members": {
              "LaunchPath": {},
              "Parameters": {},
              "ConcurrentExecutions": {
                "type": "integer"
              }
            }
          }
        },
        "MaxConcurrentGameSessionActivations": {
          "type": "integer"
        },
        "GameSessionActivationTimeoutSeconds": {
          "type": "integer"
        }
      }
    },
    "S18": {
      "type": "structure",
      "members": {
        "NewGameSessionsPerCreator": {
          "type": "integer"
        },
        "PolicyPeriodInMinutes": {
          "type": "integer"
        }
      }
    },
    "S1a": {
      "type": "list",
      "member": {}
    },
    "S1d": {
      "type": "structure",
      "members": {
        "FleetId": {},
        "FleetArn": {},
        "Description": {},
        "Name": {},
        "CreationTime": {
          "type": "timestamp"
        },
        "TerminationTime": {
          "type": "timestamp"
        },
        "Status": {},
        "BuildId": {},
        "ServerLaunchPath": {},
        "ServerLaunchParameters": {},
        "LogPaths": {
          "shape": "Su"
        },
        "NewGameSessionProtectionPolicy": {},
        "OperatingSystem": {},
        "ResourceCreationLimitPolicy": {
          "shape": "S18"
        },
        "MetricGroups": {
          "shape": "S1a"
        }
      }
    },
    "S1g": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Key",
          "Value"
        ],
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "S1n": {
      "type": "structure",
      "members": {
        "GameSessionId": {},
        "Name": {},
        "FleetId": {},
        "CreationTime": {
          "type": "timestamp"
        },
        "TerminationTime": {
          "type": "timestamp"
        },
        "CurrentPlayerSessionCount": {
          "type": "integer"
        },
        "MaximumPlayerSessionCount": {
          "type": "integer"
        },
        "Status": {},
        "GameProperties": {
          "shape": "S1g"
        },
        "IpAddress": {},
        "Port": {
          "type": "integer"
        },
        "PlayerSessionCreationPolicy": {},
        "CreatorId": {},
        "GameSessionData": {}
      }
    },
    "S1t": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "MaximumIndividualPlayerLatencyMilliseconds": {
            "type": "integer"
          },
          "PolicyDurationSeconds": {
            "type": "integer"
          }
        }
      }
    },
    "S1v": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "DestinationArn": {}
        }
      }
    },
    "S1y": {
      "type": "structure",
      "members": {
        "Name": {},
        "GameSessionQueueArn": {},
        "TimeoutInSeconds": {
          "type": "integer"
        },
        "PlayerLatencyPolicies": {
          "shape": "S1t"
        },
        "Destinations": {
          "shape": "S1v"
        }
      }
    },
    "S20": {
      "type": "list",
      "member": {}
    },
    "S27": {
      "type": "structure",
      "members": {
        "Name": {},
        "Description": {},
        "GameSessionQueueArns": {
          "shape": "S20"
        },
        "RequestTimeoutSeconds": {
          "type": "integer"
        },
        "AcceptanceTimeoutSeconds": {
          "type": "integer"
        },
        "AcceptanceRequired": {
          "type": "boolean"
        },
        "RuleSetName": {},
        "NotificationTarget": {},
        "AdditionalPlayerCount": {
          "type": "integer"
        },
        "CustomEventData": {},
        "CreationTime": {
          "type": "timestamp"
        },
        "GameProperties": {
          "shape": "S1g"
        },
        "GameSessionData": {}
      }
    },
    "S2b": {
      "type": "structure",
      "required": [
        "RuleSetBody"
      ],
      "members": {
        "RuleSetName": {},
        "RuleSetBody": {},
        "CreationTime": {
          "type": "timestamp"
        }
      }
    },
    "S2f": {
      "type": "structure",
      "members": {
        "PlayerSessionId": {},
        "PlayerId": {},
        "GameSessionId": {},
        "FleetId": {},
        "CreationTime": {
          "type": "timestamp"
        },
        "TerminationTime": {
          "type": "timestamp"
        },
        "Status": {},
        "IpAddress": {},
        "Port": {
          "type": "integer"
        },
        "PlayerData": {}
      }
    },
    "S2m": {
      "type": "list",
      "member": {
        "shape": "S2f"
      }
    },
    "S2p": {
      "type": "structure",
      "members": {
        "GameLiftAwsAccountId": {},
        "PeerVpcAwsAccountId": {},
        "PeerVpcId": {},
        "CreationTime": {
          "type": "timestamp"
        },
        "ExpirationTime": {
          "type": "timestamp"
        }
      }
    },
    "S3d": {
      "type": "list",
      "member": {}
    },
    "S42": {
      "type": "structure",
      "members": {
        "PlacementId": {},
        "GameSessionQueueName": {},
        "Status": {},
        "GameProperties": {
          "shape": "S1g"
        },
        "MaximumPlayerSessionCount": {
          "type": "integer"
        },
        "GameSessionName": {},
        "GameSessionId": {},
        "GameSessionArn": {},
        "GameSessionRegion": {},
        "PlayerLatencies": {
          "shape": "S44"
        },
        "StartTime": {
          "type": "timestamp"
        },
        "EndTime": {
          "type": "timestamp"
        },
        "IpAddress": {},
        "Port": {
          "type": "integer"
        },
        "PlacedPlayerSessions": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "PlayerId": {},
              "PlayerSessionId": {}
            }
          }
        },
        "GameSessionData": {}
      }
    },
    "S44": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "PlayerId": {},
          "RegionIdentifier": {},
          "LatencyInMilliseconds": {
            "type": "float"
          }
        }
      }
    },
    "S4f": {
      "type": "list",
      "member": {
        "shape": "S1n"
      }
    },
    "S4n": {
      "type": "list",
      "member": {}
    },
    "S4q": {
      "type": "structure",
      "members": {
        "TicketId": {},
        "ConfigurationName": {},
        "Status": {},
        "StatusReason": {},
        "StatusMessage": {},
        "StartTime": {
          "type": "timestamp"
        },
        "EndTime": {
          "type": "timestamp"
        },
        "Players": {
          "shape": "S4t"
        },
        "GameSessionConnectionInfo": {
          "type": "structure",
          "members": {
            "GameSessionArn": {},
            "IpAddress": {},
            "Port": {
              "type": "integer"
            },
            "MatchedPlayerSessions": {
              "type": "list",
              "member": {
                "type": "structure",
                "members": {
                  "PlayerId": {},
                  "PlayerSessionId": {}
                }
              }
            }
          }
        },
        "EstimatedWaitTime": {
          "type": "integer"
        }
      }
    },
    "S4t": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "PlayerId": {},
          "PlayerAttributes": {
            "type": "map",
            "key": {},
            "value": {
              "type": "structure",
              "members": {
                "S": {},
                "N": {
                  "type": "double"
                },
                "SL": {
                  "shape": "Su"
                },
                "SDM": {
                  "type": "map",
                  "key": {},
                  "value": {
                    "type": "double"
                  }
                }
              }
            }
          },
          "Team": {},
          "LatencyInMs": {
            "type": "map",
            "key": {},
            "value": {
              "type": "integer"
            }
          }
        }
      }
    }
  }
}
},{}],83:[function(require,module,exports){
arguments[4][19][0].apply(exports,arguments)
},{"dup":19}],84:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2016-02-16",
    "endpointPrefix": "inspector",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceFullName": "Amazon Inspector",
    "signatureVersion": "v4",
    "targetPrefix": "InspectorService",
    "uid": "inspector-2016-02-16"
  },
  "operations": {
    "AddAttributesToFindings": {
      "input": {
        "type": "structure",
        "required": [
          "findingArns",
          "attributes"
        ],
        "members": {
          "findingArns": {
            "shape": "S2"
          },
          "attributes": {
            "shape": "S4"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "failedItems"
        ],
        "members": {
          "failedItems": {
            "shape": "S9"
          }
        }
      }
    },
    "CreateAssessmentTarget": {
      "input": {
        "type": "structure",
        "required": [
          "assessmentTargetName",
          "resourceGroupArn"
        ],
        "members": {
          "assessmentTargetName": {},
          "resourceGroupArn": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "assessmentTargetArn"
        ],
        "members": {
          "assessmentTargetArn": {}
        }
      }
    },
    "CreateAssessmentTemplate": {
      "input": {
        "type": "structure",
        "required": [
          "assessmentTargetArn",
          "assessmentTemplateName",
          "durationInSeconds",
          "rulesPackageArns"
        ],
        "members": {
          "assessmentTargetArn": {},
          "assessmentTemplateName": {},
          "durationInSeconds": {
            "type": "integer"
          },
          "rulesPackageArns": {
            "shape": "Sj"
          },
          "userAttributesForFindings": {
            "shape": "S4"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "assessmentTemplateArn"
        ],
        "members": {
          "assessmentTemplateArn": {}
        }
      }
    },
    "CreateResourceGroup": {
      "input": {
        "type": "structure",
        "required": [
          "resourceGroupTags"
        ],
        "members": {
          "resourceGroupTags": {
            "shape": "Sm"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "resourceGroupArn"
        ],
        "members": {
          "resourceGroupArn": {}
        }
      }
    },
    "DeleteAssessmentRun": {
      "input": {
        "type": "structure",
        "required": [
          "assessmentRunArn"
        ],
        "members": {
          "assessmentRunArn": {}
        }
      }
    },
    "DeleteAssessmentTarget": {
      "input": {
        "type": "structure",
        "required": [
          "assessmentTargetArn"
        ],
        "members": {
          "assessmentTargetArn": {}
        }
      }
    },
    "DeleteAssessmentTemplate": {
      "input": {
        "type": "structure",
        "required": [
          "assessmentTemplateArn"
        ],
        "members": {
          "assessmentTemplateArn": {}
        }
      }
    },
    "DescribeAssessmentRuns": {
      "input": {
        "type": "structure",
        "required": [
          "assessmentRunArns"
        ],
        "members": {
          "assessmentRunArns": {
            "shape": "Sv"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "assessmentRuns",
          "failedItems"
        ],
        "members": {
          "assessmentRuns": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "arn",
                "name",
                "assessmentTemplateArn",
                "state",
                "durationInSeconds",
                "rulesPackageArns",
                "userAttributesForFindings",
                "createdAt",
                "stateChangedAt",
                "dataCollected",
                "stateChanges",
                "notifications",
                "findingCounts"
              ],
              "members": {
                "arn": {},
                "name": {},
                "assessmentTemplateArn": {},
                "state": {},
                "durationInSeconds": {
                  "type": "integer"
                },
                "rulesPackageArns": {
                  "type": "list",
                  "member": {}
                },
                "userAttributesForFindings": {
                  "shape": "S4"
                },
                "createdAt": {
                  "type": "timestamp"
                },
                "startedAt": {
                  "type": "timestamp"
                },
                "completedAt": {
                  "type": "timestamp"
                },
                "stateChangedAt": {
                  "type": "timestamp"
                },
                "dataCollected": {
                  "type": "boolean"
                },
                "stateChanges": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "required": [
                      "stateChangedAt",
                      "state"
                    ],
                    "members": {
                      "stateChangedAt": {
                        "type": "timestamp"
                      },
                      "state": {}
                    }
                  }
                },
                "notifications": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "required": [
                      "date",
                      "event",
                      "error"
                    ],
                    "members": {
                      "date": {
                        "type": "timestamp"
                      },
                      "event": {},
                      "message": {},
                      "error": {
                        "type": "boolean"
                      },
                      "snsTopicArn": {},
                      "snsPublishStatusCode": {}
                    }
                  }
                },
                "findingCounts": {
                  "type": "map",
                  "key": {},
                  "value": {
                    "type": "integer"
                  }
                }
              }
            }
          },
          "failedItems": {
            "shape": "S9"
          }
        }
      }
    },
    "DescribeAssessmentTargets": {
      "input": {
        "type": "structure",
        "required": [
          "assessmentTargetArns"
        ],
        "members": {
          "assessmentTargetArns": {
            "shape": "Sv"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "assessmentTargets",
          "failedItems"
        ],
        "members": {
          "assessmentTargets": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "arn",
                "name",
                "resourceGroupArn",
                "createdAt",
                "updatedAt"
              ],
              "members": {
                "arn": {},
                "name": {},
                "resourceGroupArn": {},
                "createdAt": {
                  "type": "timestamp"
                },
                "updatedAt": {
                  "type": "timestamp"
                }
              }
            }
          },
          "failedItems": {
            "shape": "S9"
          }
        }
      }
    },
    "DescribeAssessmentTemplates": {
      "input": {
        "type": "structure",
        "required": [
          "assessmentTemplateArns"
        ],
        "members": {
          "assessmentTemplateArns": {
            "shape": "Sv"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "assessmentTemplates",
          "failedItems"
        ],
        "members": {
          "assessmentTemplates": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "arn",
                "name",
                "assessmentTargetArn",
                "durationInSeconds",
                "rulesPackageArns",
                "userAttributesForFindings",
                "assessmentRunCount",
                "createdAt"
              ],
              "members": {
                "arn": {},
                "name": {},
                "assessmentTargetArn": {},
                "durationInSeconds": {
                  "type": "integer"
                },
                "rulesPackageArns": {
                  "shape": "Sj"
                },
                "userAttributesForFindings": {
                  "shape": "S4"
                },
                "lastAssessmentRunArn": {},
                "assessmentRunCount": {
                  "type": "integer"
                },
                "createdAt": {
                  "type": "timestamp"
                }
              }
            }
          },
          "failedItems": {
            "shape": "S9"
          }
        }
      }
    },
    "DescribeCrossAccountAccessRole": {
      "output": {
        "type": "structure",
        "required": [
          "roleArn",
          "valid",
          "registeredAt"
        ],
        "members": {
          "roleArn": {},
          "valid": {
            "type": "boolean"
          },
          "registeredAt": {
            "type": "timestamp"
          }
        }
      }
    },
    "DescribeFindings": {
      "input": {
        "type": "structure",
        "required": [
          "findingArns"
        ],
        "members": {
          "findingArns": {
            "shape": "Sv"
          },
          "locale": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "findings",
          "failedItems"
        ],
        "members": {
          "findings": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "arn",
                "attributes",
                "userAttributes",
                "createdAt",
                "updatedAt"
              ],
              "members": {
                "arn": {},
                "schemaVersion": {
                  "type": "integer"
                },
                "service": {},
                "serviceAttributes": {
                  "type": "structure",
                  "required": [
                    "schemaVersion"
                  ],
                  "members": {
                    "schemaVersion": {
                      "type": "integer"
                    },
                    "assessmentRunArn": {},
                    "rulesPackageArn": {}
                  }
                },
                "assetType": {},
                "assetAttributes": {
                  "type": "structure",
                  "required": [
                    "schemaVersion"
                  ],
                  "members": {
                    "schemaVersion": {
                      "type": "integer"
                    },
                    "agentId": {},
                    "autoScalingGroup": {},
                    "amiId": {},
                    "hostname": {},
                    "ipv4Addresses": {
                      "type": "list",
                      "member": {}
                    }
                  }
                },
                "id": {},
                "title": {},
                "description": {},
                "recommendation": {},
                "severity": {},
                "numericSeverity": {
                  "type": "double"
                },
                "confidence": {
                  "type": "integer"
                },
                "indicatorOfCompromise": {
                  "type": "boolean"
                },
                "attributes": {
                  "shape": "S27"
                },
                "userAttributes": {
                  "shape": "S4"
                },
                "createdAt": {
                  "type": "timestamp"
                },
                "updatedAt": {
                  "type": "timestamp"
                }
              }
            }
          },
          "failedItems": {
            "shape": "S9"
          }
        }
      }
    },
    "DescribeResourceGroups": {
      "input": {
        "type": "structure",
        "required": [
          "resourceGroupArns"
        ],
        "members": {
          "resourceGroupArns": {
            "shape": "Sv"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "resourceGroups",
          "failedItems"
        ],
        "members": {
          "resourceGroups": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "arn",
                "tags",
                "createdAt"
              ],
              "members": {
                "arn": {},
                "tags": {
                  "shape": "Sm"
                },
                "createdAt": {
                  "type": "timestamp"
                }
              }
            }
          },
          "failedItems": {
            "shape": "S9"
          }
        }
      }
    },
    "DescribeRulesPackages": {
      "input": {
        "type": "structure",
        "required": [
          "rulesPackageArns"
        ],
        "members": {
          "rulesPackageArns": {
            "shape": "Sv"
          },
          "locale": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "rulesPackages",
          "failedItems"
        ],
        "members": {
          "rulesPackages": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "arn",
                "name",
                "version",
                "provider"
              ],
              "members": {
                "arn": {},
                "name": {},
                "version": {},
                "provider": {},
                "description": {}
              }
            }
          },
          "failedItems": {
            "shape": "S9"
          }
        }
      }
    },
    "GetAssessmentReport": {
      "input": {
        "type": "structure",
        "required": [
          "assessmentRunArn",
          "reportFileFormat",
          "reportType"
        ],
        "members": {
          "assessmentRunArn": {},
          "reportFileFormat": {},
          "reportType": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "status"
        ],
        "members": {
          "status": {},
          "url": {}
        }
      }
    },
    "GetTelemetryMetadata": {
      "input": {
        "type": "structure",
        "required": [
          "assessmentRunArn"
        ],
        "members": {
          "assessmentRunArn": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "telemetryMetadata"
        ],
        "members": {
          "telemetryMetadata": {
            "shape": "S2r"
          }
        }
      }
    },
    "ListAssessmentRunAgents": {
      "input": {
        "type": "structure",
        "required": [
          "assessmentRunArn"
        ],
        "members": {
          "assessmentRunArn": {},
          "filter": {
            "type": "structure",
            "required": [
              "agentHealths",
              "agentHealthCodes"
            ],
            "members": {
              "agentHealths": {
                "type": "list",
                "member": {}
              },
              "agentHealthCodes": {
                "type": "list",
                "member": {}
              }
            }
          },
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "assessmentRunAgents"
        ],
        "members": {
          "assessmentRunAgents": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "agentId",
                "assessmentRunArn",
                "agentHealth",
                "agentHealthCode",
                "telemetryMetadata"
              ],
              "members": {
                "agentId": {},
                "assessmentRunArn": {},
                "agentHealth": {},
                "agentHealthCode": {},
                "agentHealthDetails": {},
                "autoScalingGroup": {},
                "telemetryMetadata": {
                  "shape": "S2r"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListAssessmentRuns": {
      "input": {
        "type": "structure",
        "members": {
          "assessmentTemplateArns": {
            "shape": "S37"
          },
          "filter": {
            "type": "structure",
            "members": {
              "namePattern": {},
              "states": {
                "type": "list",
                "member": {}
              },
              "durationRange": {
                "shape": "S3b"
              },
              "rulesPackageArns": {
                "shape": "S3c"
              },
              "startTimeRange": {
                "shape": "S3d"
              },
              "completionTimeRange": {
                "shape": "S3d"
              },
              "stateChangeTimeRange": {
                "shape": "S3d"
              }
            }
          },
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "assessmentRunArns"
        ],
        "members": {
          "assessmentRunArns": {
            "shape": "S3f"
          },
          "nextToken": {}
        }
      }
    },
    "ListAssessmentTargets": {
      "input": {
        "type": "structure",
        "members": {
          "filter": {
            "type": "structure",
            "members": {
              "assessmentTargetNamePattern": {}
            }
          },
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "assessmentTargetArns"
        ],
        "members": {
          "assessmentTargetArns": {
            "shape": "S3f"
          },
          "nextToken": {}
        }
      }
    },
    "ListAssessmentTemplates": {
      "input": {
        "type": "structure",
        "members": {
          "assessmentTargetArns": {
            "shape": "S37"
          },
          "filter": {
            "type": "structure",
            "members": {
              "namePattern": {},
              "durationRange": {
                "shape": "S3b"
              },
              "rulesPackageArns": {
                "shape": "S3c"
              }
            }
          },
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "assessmentTemplateArns"
        ],
        "members": {
          "assessmentTemplateArns": {
            "shape": "S3f"
          },
          "nextToken": {}
        }
      }
    },
    "ListEventSubscriptions": {
      "input": {
        "type": "structure",
        "members": {
          "resourceArn": {},
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "subscriptions"
        ],
        "members": {
          "subscriptions": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "resourceArn",
                "topicArn",
                "eventSubscriptions"
              ],
              "members": {
                "resourceArn": {},
                "topicArn": {},
                "eventSubscriptions": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "required": [
                      "event",
                      "subscribedAt"
                    ],
                    "members": {
                      "event": {},
                      "subscribedAt": {
                        "type": "timestamp"
                      }
                    }
                  }
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListFindings": {
      "input": {
        "type": "structure",
        "members": {
          "assessmentRunArns": {
            "shape": "S37"
          },
          "filter": {
            "type": "structure",
            "members": {
              "agentIds": {
                "type": "list",
                "member": {}
              },
              "autoScalingGroups": {
                "type": "list",
                "member": {}
              },
              "ruleNames": {
                "type": "list",
                "member": {}
              },
              "severities": {
                "type": "list",
                "member": {}
              },
              "rulesPackageArns": {
                "shape": "S3c"
              },
              "attributes": {
                "shape": "S27"
              },
              "userAttributes": {
                "shape": "S27"
              },
              "creationTimeRange": {
                "shape": "S3d"
              }
            }
          },
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "findingArns"
        ],
        "members": {
          "findingArns": {
            "shape": "S3f"
          },
          "nextToken": {}
        }
      }
    },
    "ListRulesPackages": {
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "rulesPackageArns"
        ],
        "members": {
          "rulesPackageArns": {
            "shape": "S3f"
          },
          "nextToken": {}
        }
      }
    },
    "ListTagsForResource": {
      "input": {
        "type": "structure",
        "required": [
          "resourceArn"
        ],
        "members": {
          "resourceArn": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "tags"
        ],
        "members": {
          "tags": {
            "shape": "S45"
          }
        }
      }
    },
    "PreviewAgents": {
      "input": {
        "type": "structure",
        "required": [
          "previewAgentsArn"
        ],
        "members": {
          "previewAgentsArn": {},
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "agentPreviews"
        ],
        "members": {
          "agentPreviews": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "agentId"
              ],
              "members": {
                "hostname": {},
                "agentId": {},
                "autoScalingGroup": {},
                "agentHealth": {},
                "agentVersion": {},
                "operatingSystem": {},
                "kernelVersion": {},
                "ipv4Address": {}
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "RegisterCrossAccountAccessRole": {
      "input": {
        "type": "structure",
        "required": [
          "roleArn"
        ],
        "members": {
          "roleArn": {}
        }
      }
    },
    "RemoveAttributesFromFindings": {
      "input": {
        "type": "structure",
        "required": [
          "findingArns",
          "attributeKeys"
        ],
        "members": {
          "findingArns": {
            "shape": "S2"
          },
          "attributeKeys": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "failedItems"
        ],
        "members": {
          "failedItems": {
            "shape": "S9"
          }
        }
      }
    },
    "SetTagsForResource": {
      "input": {
        "type": "structure",
        "required": [
          "resourceArn"
        ],
        "members": {
          "resourceArn": {},
          "tags": {
            "shape": "S45"
          }
        }
      }
    },
    "StartAssessmentRun": {
      "input": {
        "type": "structure",
        "required": [
          "assessmentTemplateArn"
        ],
        "members": {
          "assessmentTemplateArn": {},
          "assessmentRunName": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "assessmentRunArn"
        ],
        "members": {
          "assessmentRunArn": {}
        }
      }
    },
    "StopAssessmentRun": {
      "input": {
        "type": "structure",
        "required": [
          "assessmentRunArn"
        ],
        "members": {
          "assessmentRunArn": {},
          "stopAction": {}
        }
      }
    },
    "SubscribeToEvent": {
      "input": {
        "type": "structure",
        "required": [
          "resourceArn",
          "event",
          "topicArn"
        ],
        "members": {
          "resourceArn": {},
          "event": {},
          "topicArn": {}
        }
      }
    },
    "UnsubscribeFromEvent": {
      "input": {
        "type": "structure",
        "required": [
          "resourceArn",
          "event",
          "topicArn"
        ],
        "members": {
          "resourceArn": {},
          "event": {},
          "topicArn": {}
        }
      }
    },
    "UpdateAssessmentTarget": {
      "input": {
        "type": "structure",
        "required": [
          "assessmentTargetArn",
          "assessmentTargetName",
          "resourceGroupArn"
        ],
        "members": {
          "assessmentTargetArn": {},
          "assessmentTargetName": {},
          "resourceGroupArn": {}
        }
      }
    }
  },
  "shapes": {
    "S2": {
      "type": "list",
      "member": {}
    },
    "S4": {
      "type": "list",
      "member": {
        "shape": "S5"
      }
    },
    "S5": {
      "type": "structure",
      "required": [
        "key"
      ],
      "members": {
        "key": {},
        "value": {}
      }
    },
    "S9": {
      "type": "map",
      "key": {},
      "value": {
        "type": "structure",
        "required": [
          "failureCode",
          "retryable"
        ],
        "members": {
          "failureCode": {},
          "retryable": {
            "type": "boolean"
          }
        }
      }
    },
    "Sj": {
      "type": "list",
      "member": {}
    },
    "Sm": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "key"
        ],
        "members": {
          "key": {},
          "value": {}
        }
      }
    },
    "Sv": {
      "type": "list",
      "member": {}
    },
    "S27": {
      "type": "list",
      "member": {
        "shape": "S5"
      }
    },
    "S2r": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "messageType",
          "count"
        ],
        "members": {
          "messageType": {},
          "count": {
            "type": "long"
          },
          "dataSize": {
            "type": "long"
          }
        }
      }
    },
    "S37": {
      "type": "list",
      "member": {}
    },
    "S3b": {
      "type": "structure",
      "members": {
        "minSeconds": {
          "type": "integer"
        },
        "maxSeconds": {
          "type": "integer"
        }
      }
    },
    "S3c": {
      "type": "list",
      "member": {}
    },
    "S3d": {
      "type": "structure",
      "members": {
        "beginDate": {
          "type": "timestamp"
        },
        "endDate": {
          "type": "timestamp"
        }
      }
    },
    "S3f": {
      "type": "list",
      "member": {}
    },
    "S45": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "key"
        ],
        "members": {
          "key": {},
          "value": {}
        }
      }
    }
  }
}
},{}],85:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListAssessmentRunAgents": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    },
    "ListAssessmentRuns": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    },
    "ListAssessmentTargets": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    },
    "ListAssessmentTemplates": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    },
    "ListEventSubscriptions": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    },
    "ListFindings": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    },
    "ListRulesPackages": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    },
    "PreviewAgents": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    }
  }
}

},{}],86:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-05-28",
    "endpointPrefix": "iot",
    "protocol": "rest-json",
    "serviceFullName": "AWS IoT",
    "serviceId": "IoT",
    "signatureVersion": "v4",
    "signingName": "execute-api",
    "uid": "iot-2015-05-28"
  },
  "operations": {
    "AcceptCertificateTransfer": {
      "http": {
        "method": "PATCH",
        "requestUri": "/accept-certificate-transfer/{certificateId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "certificateId"
        ],
        "members": {
          "certificateId": {
            "location": "uri",
            "locationName": "certificateId"
          },
          "setAsActive": {
            "location": "querystring",
            "locationName": "setAsActive",
            "type": "boolean"
          }
        }
      }
    },
    "AddThingToThingGroup": {
      "http": {
        "method": "PUT",
        "requestUri": "/thing-groups/addThingToThingGroup"
      },
      "input": {
        "type": "structure",
        "members": {
          "thingGroupName": {},
          "thingGroupArn": {},
          "thingName": {},
          "thingArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AssociateTargetsWithJob": {
      "http": {
        "requestUri": "/jobs/{jobId}/targets"
      },
      "input": {
        "type": "structure",
        "required": [
          "targets",
          "jobId"
        ],
        "members": {
          "targets": {
            "shape": "Sb"
          },
          "jobId": {
            "location": "uri",
            "locationName": "jobId"
          },
          "comment": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "jobArn": {},
          "jobId": {},
          "description": {}
        }
      }
    },
    "AttachPolicy": {
      "http": {
        "method": "PUT",
        "requestUri": "/target-policies/{policyName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "policyName",
          "target"
        ],
        "members": {
          "policyName": {
            "location": "uri",
            "locationName": "policyName"
          },
          "target": {}
        }
      }
    },
    "AttachPrincipalPolicy": {
      "http": {
        "method": "PUT",
        "requestUri": "/principal-policies/{policyName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "policyName",
          "principal"
        ],
        "members": {
          "policyName": {
            "location": "uri",
            "locationName": "policyName"
          },
          "principal": {
            "location": "header",
            "locationName": "x-amzn-iot-principal"
          }
        }
      },
      "deprecated": true
    },
    "AttachThingPrincipal": {
      "http": {
        "method": "PUT",
        "requestUri": "/things/{thingName}/principals"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingName",
          "principal"
        ],
        "members": {
          "thingName": {
            "location": "uri",
            "locationName": "thingName"
          },
          "principal": {
            "location": "header",
            "locationName": "x-amzn-principal"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "CancelCertificateTransfer": {
      "http": {
        "method": "PATCH",
        "requestUri": "/cancel-certificate-transfer/{certificateId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "certificateId"
        ],
        "members": {
          "certificateId": {
            "location": "uri",
            "locationName": "certificateId"
          }
        }
      }
    },
    "CancelJob": {
      "http": {
        "method": "PUT",
        "requestUri": "/jobs/{jobId}/cancel"
      },
      "input": {
        "type": "structure",
        "required": [
          "jobId"
        ],
        "members": {
          "jobId": {
            "location": "uri",
            "locationName": "jobId"
          },
          "comment": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "jobArn": {},
          "jobId": {},
          "description": {}
        }
      }
    },
    "ClearDefaultAuthorizer": {
      "http": {
        "method": "DELETE",
        "requestUri": "/default-authorizer"
      },
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "CreateAuthorizer": {
      "http": {
        "requestUri": "/authorizer/{authorizerName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "authorizerName",
          "authorizerFunctionArn",
          "tokenKeyName",
          "tokenSigningPublicKeys"
        ],
        "members": {
          "authorizerName": {
            "location": "uri",
            "locationName": "authorizerName"
          },
          "authorizerFunctionArn": {},
          "tokenKeyName": {},
          "tokenSigningPublicKeys": {
            "shape": "Sy"
          },
          "status": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "authorizerName": {},
          "authorizerArn": {}
        }
      }
    },
    "CreateCertificateFromCsr": {
      "http": {
        "requestUri": "/certificates"
      },
      "input": {
        "type": "structure",
        "required": [
          "certificateSigningRequest"
        ],
        "members": {
          "certificateSigningRequest": {},
          "setAsActive": {
            "location": "querystring",
            "locationName": "setAsActive",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "certificateArn": {},
          "certificateId": {},
          "certificatePem": {}
        }
      }
    },
    "CreateJob": {
      "http": {
        "method": "PUT",
        "requestUri": "/jobs/{jobId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "jobId",
          "targets"
        ],
        "members": {
          "jobId": {
            "location": "uri",
            "locationName": "jobId"
          },
          "targets": {
            "shape": "Sb"
          },
          "documentSource": {},
          "document": {},
          "description": {},
          "presignedUrlConfig": {
            "shape": "S1c"
          },
          "targetSelection": {},
          "jobExecutionsRolloutConfig": {
            "shape": "S1g"
          },
          "documentParameters": {
            "shape": "S1i"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "jobArn": {},
          "jobId": {},
          "description": {}
        }
      }
    },
    "CreateKeysAndCertificate": {
      "http": {
        "requestUri": "/keys-and-certificate"
      },
      "input": {
        "type": "structure",
        "members": {
          "setAsActive": {
            "location": "querystring",
            "locationName": "setAsActive",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "certificateArn": {},
          "certificateId": {},
          "certificatePem": {},
          "keyPair": {
            "type": "structure",
            "members": {
              "PublicKey": {},
              "PrivateKey": {
                "type": "string",
                "sensitive": true
              }
            }
          }
        }
      }
    },
    "CreateOTAUpdate": {
      "http": {
        "requestUri": "/otaUpdates/{otaUpdateId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "otaUpdateId",
          "targets",
          "files",
          "roleArn"
        ],
        "members": {
          "otaUpdateId": {
            "location": "uri",
            "locationName": "otaUpdateId"
          },
          "description": {},
          "targets": {
            "shape": "S1u"
          },
          "targetSelection": {},
          "files": {
            "shape": "S1w"
          },
          "roleArn": {},
          "additionalParameters": {
            "shape": "S2g"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "otaUpdateId": {},
          "awsIotJobId": {},
          "otaUpdateArn": {},
          "awsIotJobArn": {},
          "otaUpdateStatus": {}
        }
      }
    },
    "CreatePolicy": {
      "http": {
        "requestUri": "/policies/{policyName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "policyName",
          "policyDocument"
        ],
        "members": {
          "policyName": {
            "location": "uri",
            "locationName": "policyName"
          },
          "policyDocument": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "policyName": {},
          "policyArn": {},
          "policyDocument": {},
          "policyVersionId": {}
        }
      }
    },
    "CreatePolicyVersion": {
      "http": {
        "requestUri": "/policies/{policyName}/version"
      },
      "input": {
        "type": "structure",
        "required": [
          "policyName",
          "policyDocument"
        ],
        "members": {
          "policyName": {
            "location": "uri",
            "locationName": "policyName"
          },
          "policyDocument": {},
          "setAsDefault": {
            "location": "querystring",
            "locationName": "setAsDefault",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "policyArn": {},
          "policyDocument": {},
          "policyVersionId": {},
          "isDefaultVersion": {
            "type": "boolean"
          }
        }
      }
    },
    "CreateRoleAlias": {
      "http": {
        "requestUri": "/role-aliases/{roleAlias}"
      },
      "input": {
        "type": "structure",
        "required": [
          "roleAlias",
          "roleArn"
        ],
        "members": {
          "roleAlias": {
            "location": "uri",
            "locationName": "roleAlias"
          },
          "roleArn": {},
          "credentialDurationSeconds": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "roleAlias": {},
          "roleAliasArn": {}
        }
      }
    },
    "CreateStream": {
      "http": {
        "requestUri": "/streams/{streamId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "streamId",
          "files",
          "roleArn"
        ],
        "members": {
          "streamId": {
            "location": "uri",
            "locationName": "streamId"
          },
          "description": {},
          "files": {
            "shape": "S32"
          },
          "roleArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "streamId": {},
          "streamArn": {},
          "description": {},
          "streamVersion": {
            "type": "integer"
          }
        }
      }
    },
    "CreateThing": {
      "http": {
        "requestUri": "/things/{thingName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingName"
        ],
        "members": {
          "thingName": {
            "location": "uri",
            "locationName": "thingName"
          },
          "thingTypeName": {},
          "attributePayload": {
            "shape": "S3d"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "thingName": {},
          "thingArn": {},
          "thingId": {}
        }
      }
    },
    "CreateThingGroup": {
      "http": {
        "requestUri": "/thing-groups/{thingGroupName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingGroupName"
        ],
        "members": {
          "thingGroupName": {
            "location": "uri",
            "locationName": "thingGroupName"
          },
          "parentGroupName": {},
          "thingGroupProperties": {
            "shape": "S3l"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "thingGroupName": {},
          "thingGroupArn": {},
          "thingGroupId": {}
        }
      }
    },
    "CreateThingType": {
      "http": {
        "requestUri": "/thing-types/{thingTypeName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingTypeName"
        ],
        "members": {
          "thingTypeName": {
            "location": "uri",
            "locationName": "thingTypeName"
          },
          "thingTypeProperties": {
            "shape": "S3q"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "thingTypeName": {},
          "thingTypeArn": {},
          "thingTypeId": {}
        }
      }
    },
    "CreateTopicRule": {
      "http": {
        "requestUri": "/rules/{ruleName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "ruleName",
          "topicRulePayload"
        ],
        "members": {
          "ruleName": {
            "location": "uri",
            "locationName": "ruleName"
          },
          "topicRulePayload": {
            "shape": "S3y"
          }
        },
        "payload": "topicRulePayload"
      }
    },
    "DeleteAuthorizer": {
      "http": {
        "method": "DELETE",
        "requestUri": "/authorizer/{authorizerName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "authorizerName"
        ],
        "members": {
          "authorizerName": {
            "location": "uri",
            "locationName": "authorizerName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteCACertificate": {
      "http": {
        "method": "DELETE",
        "requestUri": "/cacertificate/{caCertificateId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "certificateId"
        ],
        "members": {
          "certificateId": {
            "location": "uri",
            "locationName": "caCertificateId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteCertificate": {
      "http": {
        "method": "DELETE",
        "requestUri": "/certificates/{certificateId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "certificateId"
        ],
        "members": {
          "certificateId": {
            "location": "uri",
            "locationName": "certificateId"
          },
          "forceDelete": {
            "location": "querystring",
            "locationName": "forceDelete",
            "type": "boolean"
          }
        }
      }
    },
    "DeleteOTAUpdate": {
      "http": {
        "method": "DELETE",
        "requestUri": "/otaUpdates/{otaUpdateId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "otaUpdateId"
        ],
        "members": {
          "otaUpdateId": {
            "location": "uri",
            "locationName": "otaUpdateId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeletePolicy": {
      "http": {
        "method": "DELETE",
        "requestUri": "/policies/{policyName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "policyName"
        ],
        "members": {
          "policyName": {
            "location": "uri",
            "locationName": "policyName"
          }
        }
      }
    },
    "DeletePolicyVersion": {
      "http": {
        "method": "DELETE",
        "requestUri": "/policies/{policyName}/version/{policyVersionId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "policyName",
          "policyVersionId"
        ],
        "members": {
          "policyName": {
            "location": "uri",
            "locationName": "policyName"
          },
          "policyVersionId": {
            "location": "uri",
            "locationName": "policyVersionId"
          }
        }
      }
    },
    "DeleteRegistrationCode": {
      "http": {
        "method": "DELETE",
        "requestUri": "/registrationcode"
      },
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteRoleAlias": {
      "http": {
        "method": "DELETE",
        "requestUri": "/role-aliases/{roleAlias}"
      },
      "input": {
        "type": "structure",
        "required": [
          "roleAlias"
        ],
        "members": {
          "roleAlias": {
            "location": "uri",
            "locationName": "roleAlias"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteStream": {
      "http": {
        "method": "DELETE",
        "requestUri": "/streams/{streamId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "streamId"
        ],
        "members": {
          "streamId": {
            "location": "uri",
            "locationName": "streamId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteThing": {
      "http": {
        "method": "DELETE",
        "requestUri": "/things/{thingName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingName"
        ],
        "members": {
          "thingName": {
            "location": "uri",
            "locationName": "thingName"
          },
          "expectedVersion": {
            "location": "querystring",
            "locationName": "expectedVersion",
            "type": "long"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteThingGroup": {
      "http": {
        "method": "DELETE",
        "requestUri": "/thing-groups/{thingGroupName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingGroupName"
        ],
        "members": {
          "thingGroupName": {
            "location": "uri",
            "locationName": "thingGroupName"
          },
          "expectedVersion": {
            "location": "querystring",
            "locationName": "expectedVersion",
            "type": "long"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteThingType": {
      "http": {
        "method": "DELETE",
        "requestUri": "/thing-types/{thingTypeName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingTypeName"
        ],
        "members": {
          "thingTypeName": {
            "location": "uri",
            "locationName": "thingTypeName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteTopicRule": {
      "http": {
        "method": "DELETE",
        "requestUri": "/rules/{ruleName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "ruleName"
        ],
        "members": {
          "ruleName": {
            "location": "uri",
            "locationName": "ruleName"
          }
        }
      }
    },
    "DeleteV2LoggingLevel": {
      "http": {
        "method": "DELETE",
        "requestUri": "/v2LoggingLevel"
      },
      "input": {
        "type": "structure",
        "required": [
          "targetType",
          "targetName"
        ],
        "members": {
          "targetType": {
            "location": "querystring",
            "locationName": "targetType"
          },
          "targetName": {
            "location": "querystring",
            "locationName": "targetName"
          }
        }
      }
    },
    "DeprecateThingType": {
      "http": {
        "requestUri": "/thing-types/{thingTypeName}/deprecate"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingTypeName"
        ],
        "members": {
          "thingTypeName": {
            "location": "uri",
            "locationName": "thingTypeName"
          },
          "undoDeprecate": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DescribeAuthorizer": {
      "http": {
        "method": "GET",
        "requestUri": "/authorizer/{authorizerName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "authorizerName"
        ],
        "members": {
          "authorizerName": {
            "location": "uri",
            "locationName": "authorizerName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "authorizerDescription": {
            "shape": "S6d"
          }
        }
      }
    },
    "DescribeCACertificate": {
      "http": {
        "method": "GET",
        "requestUri": "/cacertificate/{caCertificateId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "certificateId"
        ],
        "members": {
          "certificateId": {
            "location": "uri",
            "locationName": "caCertificateId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "certificateDescription": {
            "type": "structure",
            "members": {
              "certificateArn": {},
              "certificateId": {},
              "status": {},
              "certificatePem": {},
              "ownedBy": {},
              "creationDate": {
                "type": "timestamp"
              },
              "autoRegistrationStatus": {}
            }
          },
          "registrationConfig": {
            "shape": "S6l"
          }
        }
      }
    },
    "DescribeCertificate": {
      "http": {
        "method": "GET",
        "requestUri": "/certificates/{certificateId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "certificateId"
        ],
        "members": {
          "certificateId": {
            "location": "uri",
            "locationName": "certificateId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "certificateDescription": {
            "type": "structure",
            "members": {
              "certificateArn": {},
              "certificateId": {},
              "caCertificateId": {},
              "status": {},
              "certificatePem": {},
              "ownedBy": {},
              "previousOwnedBy": {},
              "creationDate": {
                "type": "timestamp"
              },
              "lastModifiedDate": {
                "type": "timestamp"
              },
              "transferData": {
                "type": "structure",
                "members": {
                  "transferMessage": {},
                  "rejectReason": {},
                  "transferDate": {
                    "type": "timestamp"
                  },
                  "acceptDate": {
                    "type": "timestamp"
                  },
                  "rejectDate": {
                    "type": "timestamp"
                  }
                }
              }
            }
          }
        }
      }
    },
    "DescribeDefaultAuthorizer": {
      "http": {
        "method": "GET",
        "requestUri": "/default-authorizer"
      },
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "members": {
          "authorizerDescription": {
            "shape": "S6d"
          }
        }
      }
    },
    "DescribeEndpoint": {
      "http": {
        "method": "GET",
        "requestUri": "/endpoint"
      },
      "input": {
        "type": "structure",
        "members": {
          "endpointType": {
            "location": "querystring",
            "locationName": "endpointType"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "endpointAddress": {}
        }
      }
    },
    "DescribeEventConfigurations": {
      "http": {
        "method": "GET",
        "requestUri": "/event-configurations"
      },
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "members": {
          "eventConfigurations": {
            "shape": "S71"
          },
          "creationDate": {
            "type": "timestamp"
          },
          "lastModifiedDate": {
            "type": "timestamp"
          }
        }
      }
    },
    "DescribeIndex": {
      "http": {
        "method": "GET",
        "requestUri": "/indices/{indexName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "indexName"
        ],
        "members": {
          "indexName": {
            "location": "uri",
            "locationName": "indexName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "indexName": {},
          "indexStatus": {},
          "schema": {}
        }
      }
    },
    "DescribeJob": {
      "http": {
        "method": "GET",
        "requestUri": "/jobs/{jobId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "jobId"
        ],
        "members": {
          "jobId": {
            "location": "uri",
            "locationName": "jobId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "documentSource": {},
          "job": {
            "type": "structure",
            "members": {
              "jobArn": {},
              "jobId": {},
              "targetSelection": {},
              "status": {},
              "comment": {},
              "targets": {
                "shape": "Sb"
              },
              "description": {},
              "presignedUrlConfig": {
                "shape": "S1c"
              },
              "jobExecutionsRolloutConfig": {
                "shape": "S1g"
              },
              "createdAt": {
                "type": "timestamp"
              },
              "lastUpdatedAt": {
                "type": "timestamp"
              },
              "completedAt": {
                "type": "timestamp"
              },
              "jobProcessDetails": {
                "type": "structure",
                "members": {
                  "processingTargets": {
                    "type": "list",
                    "member": {}
                  },
                  "numberOfCanceledThings": {
                    "type": "integer"
                  },
                  "numberOfSucceededThings": {
                    "type": "integer"
                  },
                  "numberOfFailedThings": {
                    "type": "integer"
                  },
                  "numberOfRejectedThings": {
                    "type": "integer"
                  },
                  "numberOfQueuedThings": {
                    "type": "integer"
                  },
                  "numberOfInProgressThings": {
                    "type": "integer"
                  },
                  "numberOfRemovedThings": {
                    "type": "integer"
                  }
                }
              },
              "documentParameters": {
                "shape": "S1i"
              }
            }
          }
        }
      }
    },
    "DescribeJobExecution": {
      "http": {
        "method": "GET",
        "requestUri": "/things/{thingName}/jobs/{jobId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "jobId",
          "thingName"
        ],
        "members": {
          "jobId": {
            "location": "uri",
            "locationName": "jobId"
          },
          "thingName": {
            "location": "uri",
            "locationName": "thingName"
          },
          "executionNumber": {
            "location": "querystring",
            "locationName": "executionNumber",
            "type": "long"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "execution": {
            "type": "structure",
            "members": {
              "jobId": {},
              "status": {},
              "statusDetails": {
                "type": "structure",
                "members": {
                  "detailsMap": {
                    "type": "map",
                    "key": {},
                    "value": {}
                  }
                }
              },
              "thingArn": {},
              "queuedAt": {
                "type": "timestamp"
              },
              "startedAt": {
                "type": "timestamp"
              },
              "lastUpdatedAt": {
                "type": "timestamp"
              },
              "executionNumber": {
                "type": "long"
              }
            }
          }
        }
      }
    },
    "DescribeRoleAlias": {
      "http": {
        "method": "GET",
        "requestUri": "/role-aliases/{roleAlias}"
      },
      "input": {
        "type": "structure",
        "required": [
          "roleAlias"
        ],
        "members": {
          "roleAlias": {
            "location": "uri",
            "locationName": "roleAlias"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "roleAliasDescription": {
            "type": "structure",
            "members": {
              "roleAlias": {},
              "roleArn": {},
              "owner": {},
              "credentialDurationSeconds": {
                "type": "integer"
              },
              "creationDate": {
                "type": "timestamp"
              },
              "lastModifiedDate": {
                "type": "timestamp"
              }
            }
          }
        }
      }
    },
    "DescribeStream": {
      "http": {
        "method": "GET",
        "requestUri": "/streams/{streamId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "streamId"
        ],
        "members": {
          "streamId": {
            "location": "uri",
            "locationName": "streamId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "streamInfo": {
            "type": "structure",
            "members": {
              "streamId": {},
              "streamArn": {},
              "streamVersion": {
                "type": "integer"
              },
              "description": {},
              "files": {
                "shape": "S32"
              },
              "createdAt": {
                "type": "timestamp"
              },
              "lastUpdatedAt": {
                "type": "timestamp"
              },
              "roleArn": {}
            }
          }
        }
      }
    },
    "DescribeThing": {
      "http": {
        "method": "GET",
        "requestUri": "/things/{thingName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingName"
        ],
        "members": {
          "thingName": {
            "location": "uri",
            "locationName": "thingName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "defaultClientId": {},
          "thingName": {},
          "thingId": {},
          "thingArn": {},
          "thingTypeName": {},
          "attributes": {
            "shape": "S3e"
          },
          "version": {
            "type": "long"
          }
        }
      }
    },
    "DescribeThingGroup": {
      "http": {
        "method": "GET",
        "requestUri": "/thing-groups/{thingGroupName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingGroupName"
        ],
        "members": {
          "thingGroupName": {
            "location": "uri",
            "locationName": "thingGroupName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "thingGroupName": {},
          "thingGroupId": {},
          "thingGroupArn": {},
          "version": {
            "type": "long"
          },
          "thingGroupProperties": {
            "shape": "S3l"
          },
          "thingGroupMetadata": {
            "type": "structure",
            "members": {
              "parentGroupName": {},
              "rootToParentThingGroups": {
                "shape": "S8c"
              },
              "creationDate": {
                "type": "timestamp"
              }
            }
          }
        }
      }
    },
    "DescribeThingRegistrationTask": {
      "http": {
        "method": "GET",
        "requestUri": "/thing-registration-tasks/{taskId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "taskId"
        ],
        "members": {
          "taskId": {
            "location": "uri",
            "locationName": "taskId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "taskId": {},
          "creationDate": {
            "type": "timestamp"
          },
          "lastModifiedDate": {
            "type": "timestamp"
          },
          "templateBody": {},
          "inputFileBucket": {},
          "inputFileKey": {},
          "roleArn": {},
          "status": {},
          "message": {},
          "successCount": {
            "type": "integer"
          },
          "failureCount": {
            "type": "integer"
          },
          "percentageProgress": {
            "type": "integer"
          }
        }
      }
    },
    "DescribeThingType": {
      "http": {
        "method": "GET",
        "requestUri": "/thing-types/{thingTypeName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingTypeName"
        ],
        "members": {
          "thingTypeName": {
            "location": "uri",
            "locationName": "thingTypeName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "thingTypeName": {},
          "thingTypeId": {},
          "thingTypeArn": {},
          "thingTypeProperties": {
            "shape": "S3q"
          },
          "thingTypeMetadata": {
            "shape": "S8p"
          }
        }
      }
    },
    "DetachPolicy": {
      "http": {
        "requestUri": "/target-policies/{policyName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "policyName",
          "target"
        ],
        "members": {
          "policyName": {
            "location": "uri",
            "locationName": "policyName"
          },
          "target": {}
        }
      }
    },
    "DetachPrincipalPolicy": {
      "http": {
        "method": "DELETE",
        "requestUri": "/principal-policies/{policyName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "policyName",
          "principal"
        ],
        "members": {
          "policyName": {
            "location": "uri",
            "locationName": "policyName"
          },
          "principal": {
            "location": "header",
            "locationName": "x-amzn-iot-principal"
          }
        }
      },
      "deprecated": true
    },
    "DetachThingPrincipal": {
      "http": {
        "method": "DELETE",
        "requestUri": "/things/{thingName}/principals"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingName",
          "principal"
        ],
        "members": {
          "thingName": {
            "location": "uri",
            "locationName": "thingName"
          },
          "principal": {
            "location": "header",
            "locationName": "x-amzn-principal"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DisableTopicRule": {
      "http": {
        "requestUri": "/rules/{ruleName}/disable"
      },
      "input": {
        "type": "structure",
        "required": [
          "ruleName"
        ],
        "members": {
          "ruleName": {
            "location": "uri",
            "locationName": "ruleName"
          }
        }
      }
    },
    "EnableTopicRule": {
      "http": {
        "requestUri": "/rules/{ruleName}/enable"
      },
      "input": {
        "type": "structure",
        "required": [
          "ruleName"
        ],
        "members": {
          "ruleName": {
            "location": "uri",
            "locationName": "ruleName"
          }
        }
      }
    },
    "GetEffectivePolicies": {
      "http": {
        "requestUri": "/effective-policies"
      },
      "input": {
        "type": "structure",
        "members": {
          "principal": {},
          "cognitoIdentityPoolId": {},
          "thingName": {
            "location": "querystring",
            "locationName": "thingName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "effectivePolicies": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "policyName": {},
                "policyArn": {},
                "policyDocument": {}
              }
            }
          }
        }
      }
    },
    "GetIndexingConfiguration": {
      "http": {
        "method": "GET",
        "requestUri": "/indexing/config"
      },
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "members": {
          "thingIndexingConfiguration": {
            "shape": "S95"
          }
        }
      }
    },
    "GetJobDocument": {
      "http": {
        "method": "GET",
        "requestUri": "/jobs/{jobId}/job-document"
      },
      "input": {
        "type": "structure",
        "required": [
          "jobId"
        ],
        "members": {
          "jobId": {
            "location": "uri",
            "locationName": "jobId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "document": {}
        }
      }
    },
    "GetLoggingOptions": {
      "http": {
        "method": "GET",
        "requestUri": "/loggingOptions"
      },
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "members": {
          "roleArn": {},
          "logLevel": {}
        }
      }
    },
    "GetOTAUpdate": {
      "http": {
        "method": "GET",
        "requestUri": "/otaUpdates/{otaUpdateId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "otaUpdateId"
        ],
        "members": {
          "otaUpdateId": {
            "location": "uri",
            "locationName": "otaUpdateId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "otaUpdateInfo": {
            "type": "structure",
            "members": {
              "otaUpdateId": {},
              "otaUpdateArn": {},
              "creationDate": {
                "type": "timestamp"
              },
              "lastModifiedDate": {
                "type": "timestamp"
              },
              "description": {},
              "targets": {
                "shape": "S1u"
              },
              "targetSelection": {},
              "otaUpdateFiles": {
                "shape": "S1w"
              },
              "otaUpdateStatus": {},
              "awsIotJobId": {},
              "awsIotJobArn": {},
              "errorInfo": {
                "type": "structure",
                "members": {
                  "code": {},
                  "message": {}
                }
              },
              "additionalParameters": {
                "shape": "S2g"
              }
            }
          }
        }
      }
    },
    "GetPolicy": {
      "http": {
        "method": "GET",
        "requestUri": "/policies/{policyName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "policyName"
        ],
        "members": {
          "policyName": {
            "location": "uri",
            "locationName": "policyName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "policyName": {},
          "policyArn": {},
          "policyDocument": {},
          "defaultVersionId": {}
        }
      }
    },
    "GetPolicyVersion": {
      "http": {
        "method": "GET",
        "requestUri": "/policies/{policyName}/version/{policyVersionId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "policyName",
          "policyVersionId"
        ],
        "members": {
          "policyName": {
            "location": "uri",
            "locationName": "policyName"
          },
          "policyVersionId": {
            "location": "uri",
            "locationName": "policyVersionId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "policyArn": {},
          "policyName": {},
          "policyDocument": {},
          "policyVersionId": {},
          "isDefaultVersion": {
            "type": "boolean"
          }
        }
      }
    },
    "GetRegistrationCode": {
      "http": {
        "method": "GET",
        "requestUri": "/registrationcode"
      },
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "members": {
          "registrationCode": {}
        }
      }
    },
    "GetTopicRule": {
      "http": {
        "method": "GET",
        "requestUri": "/rules/{ruleName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "ruleName"
        ],
        "members": {
          "ruleName": {
            "location": "uri",
            "locationName": "ruleName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ruleArn": {},
          "rule": {
            "type": "structure",
            "members": {
              "ruleName": {},
              "sql": {},
              "description": {},
              "createdAt": {
                "type": "timestamp"
              },
              "actions": {
                "shape": "S41"
              },
              "ruleDisabled": {
                "type": "boolean"
              },
              "awsIotSqlVersion": {},
              "errorAction": {
                "shape": "S42"
              }
            }
          }
        }
      }
    },
    "GetV2LoggingOptions": {
      "http": {
        "method": "GET",
        "requestUri": "/v2LoggingOptions"
      },
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "members": {
          "roleArn": {},
          "defaultLogLevel": {},
          "disableAllLogs": {
            "type": "boolean"
          }
        }
      }
    },
    "ListAttachedPolicies": {
      "http": {
        "requestUri": "/attached-policies/{target}"
      },
      "input": {
        "type": "structure",
        "required": [
          "target"
        ],
        "members": {
          "target": {
            "location": "uri",
            "locationName": "target"
          },
          "recursive": {
            "location": "querystring",
            "locationName": "recursive",
            "type": "boolean"
          },
          "marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "pageSize": {
            "location": "querystring",
            "locationName": "pageSize",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "policies": {
            "shape": "Sa2"
          },
          "nextMarker": {}
        }
      }
    },
    "ListAuthorizers": {
      "http": {
        "method": "GET",
        "requestUri": "/authorizers/"
      },
      "input": {
        "type": "structure",
        "members": {
          "pageSize": {
            "location": "querystring",
            "locationName": "pageSize",
            "type": "integer"
          },
          "marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "ascendingOrder": {
            "location": "querystring",
            "locationName": "isAscendingOrder",
            "type": "boolean"
          },
          "status": {
            "location": "querystring",
            "locationName": "status"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "authorizers": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "authorizerName": {},
                "authorizerArn": {}
              }
            }
          },
          "nextMarker": {}
        }
      }
    },
    "ListCACertificates": {
      "http": {
        "method": "GET",
        "requestUri": "/cacertificates"
      },
      "input": {
        "type": "structure",
        "members": {
          "pageSize": {
            "location": "querystring",
            "locationName": "pageSize",
            "type": "integer"
          },
          "marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "ascendingOrder": {
            "location": "querystring",
            "locationName": "isAscendingOrder",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "certificates": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "certificateArn": {},
                "certificateId": {},
                "status": {},
                "creationDate": {
                  "type": "timestamp"
                }
              }
            }
          },
          "nextMarker": {}
        }
      }
    },
    "ListCertificates": {
      "http": {
        "method": "GET",
        "requestUri": "/certificates"
      },
      "input": {
        "type": "structure",
        "members": {
          "pageSize": {
            "location": "querystring",
            "locationName": "pageSize",
            "type": "integer"
          },
          "marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "ascendingOrder": {
            "location": "querystring",
            "locationName": "isAscendingOrder",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "certificates": {
            "shape": "Saf"
          },
          "nextMarker": {}
        }
      }
    },
    "ListCertificatesByCA": {
      "http": {
        "method": "GET",
        "requestUri": "/certificates-by-ca/{caCertificateId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "caCertificateId"
        ],
        "members": {
          "caCertificateId": {
            "location": "uri",
            "locationName": "caCertificateId"
          },
          "pageSize": {
            "location": "querystring",
            "locationName": "pageSize",
            "type": "integer"
          },
          "marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "ascendingOrder": {
            "location": "querystring",
            "locationName": "isAscendingOrder",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "certificates": {
            "shape": "Saf"
          },
          "nextMarker": {}
        }
      }
    },
    "ListIndices": {
      "http": {
        "method": "GET",
        "requestUri": "/indices"
      },
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "indexNames": {
            "type": "list",
            "member": {}
          },
          "nextToken": {}
        }
      }
    },
    "ListJobExecutionsForJob": {
      "http": {
        "method": "GET",
        "requestUri": "/jobs/{jobId}/things"
      },
      "input": {
        "type": "structure",
        "required": [
          "jobId"
        ],
        "members": {
          "jobId": {
            "location": "uri",
            "locationName": "jobId"
          },
          "status": {
            "location": "querystring",
            "locationName": "status"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "executionSummaries": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "thingArn": {},
                "jobExecutionSummary": {
                  "shape": "Sat"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListJobExecutionsForThing": {
      "http": {
        "method": "GET",
        "requestUri": "/things/{thingName}/jobs"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingName"
        ],
        "members": {
          "thingName": {
            "location": "uri",
            "locationName": "thingName"
          },
          "status": {
            "location": "querystring",
            "locationName": "status"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "executionSummaries": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "jobId": {},
                "jobExecutionSummary": {
                  "shape": "Sat"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListJobs": {
      "http": {
        "method": "GET",
        "requestUri": "/jobs"
      },
      "input": {
        "type": "structure",
        "members": {
          "status": {
            "location": "querystring",
            "locationName": "status"
          },
          "targetSelection": {
            "location": "querystring",
            "locationName": "targetSelection"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "thingGroupName": {
            "location": "querystring",
            "locationName": "thingGroupName"
          },
          "thingGroupId": {
            "location": "querystring",
            "locationName": "thingGroupId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "jobs": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "jobArn": {},
                "jobId": {},
                "thingGroupId": {},
                "targetSelection": {},
                "status": {},
                "createdAt": {
                  "type": "timestamp"
                },
                "lastUpdatedAt": {
                  "type": "timestamp"
                },
                "completedAt": {
                  "type": "timestamp"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListOTAUpdates": {
      "http": {
        "method": "GET",
        "requestUri": "/otaUpdates"
      },
      "input": {
        "type": "structure",
        "members": {
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "otaUpdateStatus": {
            "location": "querystring",
            "locationName": "otaUpdateStatus"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "otaUpdates": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "otaUpdateId": {},
                "otaUpdateArn": {},
                "creationDate": {
                  "type": "timestamp"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListOutgoingCertificates": {
      "http": {
        "method": "GET",
        "requestUri": "/certificates-out-going"
      },
      "input": {
        "type": "structure",
        "members": {
          "pageSize": {
            "location": "querystring",
            "locationName": "pageSize",
            "type": "integer"
          },
          "marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "ascendingOrder": {
            "location": "querystring",
            "locationName": "isAscendingOrder",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "outgoingCertificates": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "certificateArn": {},
                "certificateId": {},
                "transferredTo": {},
                "transferDate": {
                  "type": "timestamp"
                },
                "transferMessage": {},
                "creationDate": {
                  "type": "timestamp"
                }
              }
            }
          },
          "nextMarker": {}
        }
      }
    },
    "ListPolicies": {
      "http": {
        "method": "GET",
        "requestUri": "/policies"
      },
      "input": {
        "type": "structure",
        "members": {
          "marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "pageSize": {
            "location": "querystring",
            "locationName": "pageSize",
            "type": "integer"
          },
          "ascendingOrder": {
            "location": "querystring",
            "locationName": "isAscendingOrder",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "policies": {
            "shape": "Sa2"
          },
          "nextMarker": {}
        }
      }
    },
    "ListPolicyPrincipals": {
      "http": {
        "method": "GET",
        "requestUri": "/policy-principals"
      },
      "input": {
        "type": "structure",
        "required": [
          "policyName"
        ],
        "members": {
          "policyName": {
            "location": "header",
            "locationName": "x-amzn-iot-policy"
          },
          "marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "pageSize": {
            "location": "querystring",
            "locationName": "pageSize",
            "type": "integer"
          },
          "ascendingOrder": {
            "location": "querystring",
            "locationName": "isAscendingOrder",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "principals": {
            "shape": "Sbf"
          },
          "nextMarker": {}
        }
      },
      "deprecated": true
    },
    "ListPolicyVersions": {
      "http": {
        "method": "GET",
        "requestUri": "/policies/{policyName}/version"
      },
      "input": {
        "type": "structure",
        "required": [
          "policyName"
        ],
        "members": {
          "policyName": {
            "location": "uri",
            "locationName": "policyName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "policyVersions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "versionId": {},
                "isDefaultVersion": {
                  "type": "boolean"
                },
                "createDate": {
                  "type": "timestamp"
                }
              }
            }
          }
        }
      }
    },
    "ListPrincipalPolicies": {
      "http": {
        "method": "GET",
        "requestUri": "/principal-policies"
      },
      "input": {
        "type": "structure",
        "required": [
          "principal"
        ],
        "members": {
          "principal": {
            "location": "header",
            "locationName": "x-amzn-iot-principal"
          },
          "marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "pageSize": {
            "location": "querystring",
            "locationName": "pageSize",
            "type": "integer"
          },
          "ascendingOrder": {
            "location": "querystring",
            "locationName": "isAscendingOrder",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "policies": {
            "shape": "Sa2"
          },
          "nextMarker": {}
        }
      },
      "deprecated": true
    },
    "ListPrincipalThings": {
      "http": {
        "method": "GET",
        "requestUri": "/principals/things"
      },
      "input": {
        "type": "structure",
        "required": [
          "principal"
        ],
        "members": {
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "principal": {
            "location": "header",
            "locationName": "x-amzn-principal"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "things": {
            "shape": "Sbq"
          },
          "nextToken": {}
        }
      }
    },
    "ListRoleAliases": {
      "http": {
        "method": "GET",
        "requestUri": "/role-aliases"
      },
      "input": {
        "type": "structure",
        "members": {
          "pageSize": {
            "location": "querystring",
            "locationName": "pageSize",
            "type": "integer"
          },
          "marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "ascendingOrder": {
            "location": "querystring",
            "locationName": "isAscendingOrder",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "roleAliases": {
            "type": "list",
            "member": {}
          },
          "nextMarker": {}
        }
      }
    },
    "ListStreams": {
      "http": {
        "method": "GET",
        "requestUri": "/streams"
      },
      "input": {
        "type": "structure",
        "members": {
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "ascendingOrder": {
            "location": "querystring",
            "locationName": "isAscendingOrder",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "streams": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "streamId": {},
                "streamArn": {},
                "streamVersion": {
                  "type": "integer"
                },
                "description": {}
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListTargetsForPolicy": {
      "http": {
        "requestUri": "/policy-targets/{policyName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "policyName"
        ],
        "members": {
          "policyName": {
            "location": "uri",
            "locationName": "policyName"
          },
          "marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "pageSize": {
            "location": "querystring",
            "locationName": "pageSize",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "targets": {
            "type": "list",
            "member": {}
          },
          "nextMarker": {}
        }
      }
    },
    "ListThingGroups": {
      "http": {
        "method": "GET",
        "requestUri": "/thing-groups"
      },
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "parentGroup": {
            "location": "querystring",
            "locationName": "parentGroup"
          },
          "namePrefixFilter": {
            "location": "querystring",
            "locationName": "namePrefixFilter"
          },
          "recursive": {
            "location": "querystring",
            "locationName": "recursive",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "thingGroups": {
            "shape": "S8c"
          },
          "nextToken": {}
        }
      }
    },
    "ListThingGroupsForThing": {
      "http": {
        "method": "GET",
        "requestUri": "/things/{thingName}/thing-groups"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingName"
        ],
        "members": {
          "thingName": {
            "location": "uri",
            "locationName": "thingName"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "thingGroups": {
            "shape": "S8c"
          },
          "nextToken": {}
        }
      }
    },
    "ListThingPrincipals": {
      "http": {
        "method": "GET",
        "requestUri": "/things/{thingName}/principals"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingName"
        ],
        "members": {
          "thingName": {
            "location": "uri",
            "locationName": "thingName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "principals": {
            "shape": "Sbf"
          }
        }
      }
    },
    "ListThingRegistrationTaskReports": {
      "http": {
        "method": "GET",
        "requestUri": "/thing-registration-tasks/{taskId}/reports"
      },
      "input": {
        "type": "structure",
        "required": [
          "taskId",
          "reportType"
        ],
        "members": {
          "taskId": {
            "location": "uri",
            "locationName": "taskId"
          },
          "reportType": {
            "location": "querystring",
            "locationName": "reportType"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "resourceLinks": {
            "type": "list",
            "member": {}
          },
          "reportType": {},
          "nextToken": {}
        }
      }
    },
    "ListThingRegistrationTasks": {
      "http": {
        "method": "GET",
        "requestUri": "/thing-registration-tasks"
      },
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "status": {
            "location": "querystring",
            "locationName": "status"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "taskIds": {
            "type": "list",
            "member": {}
          },
          "nextToken": {}
        }
      }
    },
    "ListThingTypes": {
      "http": {
        "method": "GET",
        "requestUri": "/thing-types"
      },
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "thingTypeName": {
            "location": "querystring",
            "locationName": "thingTypeName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "thingTypes": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "thingTypeName": {},
                "thingTypeArn": {},
                "thingTypeProperties": {
                  "shape": "S3q"
                },
                "thingTypeMetadata": {
                  "shape": "S8p"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListThings": {
      "http": {
        "method": "GET",
        "requestUri": "/things"
      },
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "attributeName": {
            "location": "querystring",
            "locationName": "attributeName"
          },
          "attributeValue": {
            "location": "querystring",
            "locationName": "attributeValue"
          },
          "thingTypeName": {
            "location": "querystring",
            "locationName": "thingTypeName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "things": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "thingName": {},
                "thingTypeName": {},
                "thingArn": {},
                "attributes": {
                  "shape": "S3e"
                },
                "version": {
                  "type": "long"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListThingsInThingGroup": {
      "http": {
        "method": "GET",
        "requestUri": "/thing-groups/{thingGroupName}/things"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingGroupName"
        ],
        "members": {
          "thingGroupName": {
            "location": "uri",
            "locationName": "thingGroupName"
          },
          "recursive": {
            "location": "querystring",
            "locationName": "recursive",
            "type": "boolean"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "things": {
            "shape": "Sbq"
          },
          "nextToken": {}
        }
      }
    },
    "ListTopicRules": {
      "http": {
        "method": "GET",
        "requestUri": "/rules"
      },
      "input": {
        "type": "structure",
        "members": {
          "topic": {
            "location": "querystring",
            "locationName": "topic"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "ruleDisabled": {
            "location": "querystring",
            "locationName": "ruleDisabled",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "rules": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ruleArn": {},
                "ruleName": {},
                "topicPattern": {},
                "createdAt": {
                  "type": "timestamp"
                },
                "ruleDisabled": {
                  "type": "boolean"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "ListV2LoggingLevels": {
      "http": {
        "method": "GET",
        "requestUri": "/v2LoggingLevel"
      },
      "input": {
        "type": "structure",
        "members": {
          "targetType": {
            "location": "querystring",
            "locationName": "targetType"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "logTargetConfigurations": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "logTarget": {
                  "shape": "Sd1"
                },
                "logLevel": {}
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "RegisterCACertificate": {
      "http": {
        "requestUri": "/cacertificate"
      },
      "input": {
        "type": "structure",
        "required": [
          "caCertificate",
          "verificationCertificate"
        ],
        "members": {
          "caCertificate": {},
          "verificationCertificate": {},
          "setAsActive": {
            "location": "querystring",
            "locationName": "setAsActive",
            "type": "boolean"
          },
          "allowAutoRegistration": {
            "location": "querystring",
            "locationName": "allowAutoRegistration",
            "type": "boolean"
          },
          "registrationConfig": {
            "shape": "S6l"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "certificateArn": {},
          "certificateId": {}
        }
      }
    },
    "RegisterCertificate": {
      "http": {
        "requestUri": "/certificate/register"
      },
      "input": {
        "type": "structure",
        "required": [
          "certificatePem"
        ],
        "members": {
          "certificatePem": {},
          "caCertificatePem": {},
          "setAsActive": {
            "deprecated": true,
            "location": "querystring",
            "locationName": "setAsActive",
            "type": "boolean"
          },
          "status": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "certificateArn": {},
          "certificateId": {}
        }
      }
    },
    "RegisterThing": {
      "http": {
        "requestUri": "/things"
      },
      "input": {
        "type": "structure",
        "required": [
          "templateBody"
        ],
        "members": {
          "templateBody": {},
          "parameters": {
            "type": "map",
            "key": {},
            "value": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "certificatePem": {},
          "resourceArns": {
            "type": "map",
            "key": {},
            "value": {}
          }
        }
      }
    },
    "RejectCertificateTransfer": {
      "http": {
        "method": "PATCH",
        "requestUri": "/reject-certificate-transfer/{certificateId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "certificateId"
        ],
        "members": {
          "certificateId": {
            "location": "uri",
            "locationName": "certificateId"
          },
          "rejectReason": {}
        }
      }
    },
    "RemoveThingFromThingGroup": {
      "http": {
        "method": "PUT",
        "requestUri": "/thing-groups/removeThingFromThingGroup"
      },
      "input": {
        "type": "structure",
        "members": {
          "thingGroupName": {},
          "thingGroupArn": {},
          "thingName": {},
          "thingArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "ReplaceTopicRule": {
      "http": {
        "method": "PATCH",
        "requestUri": "/rules/{ruleName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "ruleName",
          "topicRulePayload"
        ],
        "members": {
          "ruleName": {
            "location": "uri",
            "locationName": "ruleName"
          },
          "topicRulePayload": {
            "shape": "S3y"
          }
        },
        "payload": "topicRulePayload"
      }
    },
    "SearchIndex": {
      "http": {
        "requestUri": "/indices/search"
      },
      "input": {
        "type": "structure",
        "required": [
          "queryString"
        ],
        "members": {
          "indexName": {},
          "queryString": {},
          "nextToken": {},
          "maxResults": {
            "type": "integer"
          },
          "queryVersion": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "nextToken": {},
          "things": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "thingName": {},
                "thingId": {},
                "thingTypeName": {},
                "thingGroupNames": {
                  "type": "list",
                  "member": {}
                },
                "attributes": {
                  "shape": "S3e"
                },
                "shadow": {}
              }
            }
          }
        }
      }
    },
    "SetDefaultAuthorizer": {
      "http": {
        "requestUri": "/default-authorizer"
      },
      "input": {
        "type": "structure",
        "required": [
          "authorizerName"
        ],
        "members": {
          "authorizerName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "authorizerName": {},
          "authorizerArn": {}
        }
      }
    },
    "SetDefaultPolicyVersion": {
      "http": {
        "method": "PATCH",
        "requestUri": "/policies/{policyName}/version/{policyVersionId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "policyName",
          "policyVersionId"
        ],
        "members": {
          "policyName": {
            "location": "uri",
            "locationName": "policyName"
          },
          "policyVersionId": {
            "location": "uri",
            "locationName": "policyVersionId"
          }
        }
      }
    },
    "SetLoggingOptions": {
      "http": {
        "requestUri": "/loggingOptions"
      },
      "input": {
        "type": "structure",
        "required": [
          "loggingOptionsPayload"
        ],
        "members": {
          "loggingOptionsPayload": {
            "type": "structure",
            "required": [
              "roleArn"
            ],
            "members": {
              "roleArn": {},
              "logLevel": {}
            }
          }
        },
        "payload": "loggingOptionsPayload"
      }
    },
    "SetV2LoggingLevel": {
      "http": {
        "requestUri": "/v2LoggingLevel"
      },
      "input": {
        "type": "structure",
        "required": [
          "logTarget",
          "logLevel"
        ],
        "members": {
          "logTarget": {
            "shape": "Sd1"
          },
          "logLevel": {}
        }
      }
    },
    "SetV2LoggingOptions": {
      "http": {
        "requestUri": "/v2LoggingOptions"
      },
      "input": {
        "type": "structure",
        "members": {
          "roleArn": {},
          "defaultLogLevel": {},
          "disableAllLogs": {
            "type": "boolean"
          }
        }
      }
    },
    "StartThingRegistrationTask": {
      "http": {
        "requestUri": "/thing-registration-tasks"
      },
      "input": {
        "type": "structure",
        "required": [
          "templateBody",
          "inputFileBucket",
          "inputFileKey",
          "roleArn"
        ],
        "members": {
          "templateBody": {},
          "inputFileBucket": {},
          "inputFileKey": {},
          "roleArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "taskId": {}
        }
      }
    },
    "StopThingRegistrationTask": {
      "http": {
        "method": "PUT",
        "requestUri": "/thing-registration-tasks/{taskId}/cancel"
      },
      "input": {
        "type": "structure",
        "required": [
          "taskId"
        ],
        "members": {
          "taskId": {
            "location": "uri",
            "locationName": "taskId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "TestAuthorization": {
      "http": {
        "requestUri": "/test-authorization"
      },
      "input": {
        "type": "structure",
        "required": [
          "authInfos"
        ],
        "members": {
          "principal": {},
          "cognitoIdentityPoolId": {},
          "authInfos": {
            "type": "list",
            "member": {
              "shape": "Se4"
            }
          },
          "clientId": {
            "location": "querystring",
            "locationName": "clientId"
          },
          "policyNamesToAdd": {
            "shape": "Se8"
          },
          "policyNamesToSkip": {
            "shape": "Se8"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "authResults": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "authInfo": {
                  "shape": "Se4"
                },
                "allowed": {
                  "type": "structure",
                  "members": {
                    "policies": {
                      "shape": "Sa2"
                    }
                  }
                },
                "denied": {
                  "type": "structure",
                  "members": {
                    "implicitDeny": {
                      "type": "structure",
                      "members": {
                        "policies": {
                          "shape": "Sa2"
                        }
                      }
                    },
                    "explicitDeny": {
                      "type": "structure",
                      "members": {
                        "policies": {
                          "shape": "Sa2"
                        }
                      }
                    }
                  }
                },
                "authDecision": {},
                "missingContextValues": {
                  "type": "list",
                  "member": {}
                }
              }
            }
          }
        }
      }
    },
    "TestInvokeAuthorizer": {
      "http": {
        "requestUri": "/authorizer/{authorizerName}/test"
      },
      "input": {
        "type": "structure",
        "required": [
          "authorizerName",
          "token",
          "tokenSignature"
        ],
        "members": {
          "authorizerName": {
            "location": "uri",
            "locationName": "authorizerName"
          },
          "token": {},
          "tokenSignature": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "isAuthenticated": {
            "type": "boolean"
          },
          "principalId": {},
          "policyDocuments": {
            "type": "list",
            "member": {}
          },
          "refreshAfterInSeconds": {
            "type": "integer"
          },
          "disconnectAfterInSeconds": {
            "type": "integer"
          }
        }
      }
    },
    "TransferCertificate": {
      "http": {
        "method": "PATCH",
        "requestUri": "/transfer-certificate/{certificateId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "certificateId",
          "targetAwsAccount"
        ],
        "members": {
          "certificateId": {
            "location": "uri",
            "locationName": "certificateId"
          },
          "targetAwsAccount": {
            "location": "querystring",
            "locationName": "targetAwsAccount"
          },
          "transferMessage": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "transferredCertificateArn": {}
        }
      }
    },
    "UpdateAuthorizer": {
      "http": {
        "method": "PUT",
        "requestUri": "/authorizer/{authorizerName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "authorizerName"
        ],
        "members": {
          "authorizerName": {
            "location": "uri",
            "locationName": "authorizerName"
          },
          "authorizerFunctionArn": {},
          "tokenKeyName": {},
          "tokenSigningPublicKeys": {
            "shape": "Sy"
          },
          "status": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "authorizerName": {},
          "authorizerArn": {}
        }
      }
    },
    "UpdateCACertificate": {
      "http": {
        "method": "PUT",
        "requestUri": "/cacertificate/{caCertificateId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "certificateId"
        ],
        "members": {
          "certificateId": {
            "location": "uri",
            "locationName": "caCertificateId"
          },
          "newStatus": {
            "location": "querystring",
            "locationName": "newStatus"
          },
          "newAutoRegistrationStatus": {
            "location": "querystring",
            "locationName": "newAutoRegistrationStatus"
          },
          "registrationConfig": {
            "shape": "S6l"
          },
          "removeAutoRegistration": {
            "type": "boolean"
          }
        }
      }
    },
    "UpdateCertificate": {
      "http": {
        "method": "PUT",
        "requestUri": "/certificates/{certificateId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "certificateId",
          "newStatus"
        ],
        "members": {
          "certificateId": {
            "location": "uri",
            "locationName": "certificateId"
          },
          "newStatus": {
            "location": "querystring",
            "locationName": "newStatus"
          }
        }
      }
    },
    "UpdateEventConfigurations": {
      "http": {
        "method": "PATCH",
        "requestUri": "/event-configurations"
      },
      "input": {
        "type": "structure",
        "members": {
          "eventConfigurations": {
            "shape": "S71"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UpdateIndexingConfiguration": {
      "http": {
        "requestUri": "/indexing/config"
      },
      "input": {
        "type": "structure",
        "members": {
          "thingIndexingConfiguration": {
            "shape": "S95"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UpdateRoleAlias": {
      "http": {
        "method": "PUT",
        "requestUri": "/role-aliases/{roleAlias}"
      },
      "input": {
        "type": "structure",
        "required": [
          "roleAlias"
        ],
        "members": {
          "roleAlias": {
            "location": "uri",
            "locationName": "roleAlias"
          },
          "roleArn": {},
          "credentialDurationSeconds": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "roleAlias": {},
          "roleAliasArn": {}
        }
      }
    },
    "UpdateStream": {
      "http": {
        "method": "PUT",
        "requestUri": "/streams/{streamId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "streamId"
        ],
        "members": {
          "streamId": {
            "location": "uri",
            "locationName": "streamId"
          },
          "description": {},
          "files": {
            "shape": "S32"
          },
          "roleArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "streamId": {},
          "streamArn": {},
          "description": {},
          "streamVersion": {
            "type": "integer"
          }
        }
      }
    },
    "UpdateThing": {
      "http": {
        "method": "PATCH",
        "requestUri": "/things/{thingName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingName"
        ],
        "members": {
          "thingName": {
            "location": "uri",
            "locationName": "thingName"
          },
          "thingTypeName": {},
          "attributePayload": {
            "shape": "S3d"
          },
          "expectedVersion": {
            "type": "long"
          },
          "removeThingType": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UpdateThingGroup": {
      "http": {
        "method": "PATCH",
        "requestUri": "/thing-groups/{thingGroupName}"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingGroupName",
          "thingGroupProperties"
        ],
        "members": {
          "thingGroupName": {
            "location": "uri",
            "locationName": "thingGroupName"
          },
          "thingGroupProperties": {
            "shape": "S3l"
          },
          "expectedVersion": {
            "type": "long"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "version": {
            "type": "long"
          }
        }
      }
    },
    "UpdateThingGroupsForThing": {
      "http": {
        "method": "PUT",
        "requestUri": "/thing-groups/updateThingGroupsForThing"
      },
      "input": {
        "type": "structure",
        "members": {
          "thingName": {},
          "thingGroupsToAdd": {
            "shape": "Sfc"
          },
          "thingGroupsToRemove": {
            "shape": "Sfc"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    }
  },
  "shapes": {
    "Sb": {
      "type": "list",
      "member": {}
    },
    "Sy": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S1c": {
      "type": "structure",
      "members": {
        "roleArn": {},
        "expiresInSec": {
          "type": "long"
        }
      }
    },
    "S1g": {
      "type": "structure",
      "members": {
        "maximumPerMinute": {
          "type": "integer"
        }
      }
    },
    "S1i": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S1u": {
      "type": "list",
      "member": {}
    },
    "S1w": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "fileName": {},
          "fileVersion": {},
          "fileSource": {
            "shape": "S20"
          },
          "codeSigning": {
            "type": "structure",
            "members": {
              "awsSignerJobId": {},
              "customCodeSigning": {
                "type": "structure",
                "members": {
                  "signature": {
                    "type": "structure",
                    "members": {
                      "stream": {
                        "shape": "S20"
                      },
                      "inlineDocument": {
                        "type": "blob"
                      }
                    }
                  },
                  "certificateChain": {
                    "type": "structure",
                    "members": {
                      "stream": {
                        "shape": "S20"
                      },
                      "certificateName": {},
                      "inlineDocument": {}
                    }
                  },
                  "hashAlgorithm": {},
                  "signatureAlgorithm": {}
                }
              }
            }
          },
          "attributes": {
            "type": "map",
            "key": {},
            "value": {}
          }
        }
      }
    },
    "S20": {
      "type": "structure",
      "members": {
        "streamId": {},
        "fileId": {
          "type": "integer"
        }
      }
    },
    "S2g": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S32": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "fileId": {
            "type": "integer"
          },
          "s3Location": {
            "type": "structure",
            "required": [
              "bucket",
              "key"
            ],
            "members": {
              "bucket": {},
              "key": {},
              "version": {}
            }
          }
        }
      }
    },
    "S3d": {
      "type": "structure",
      "members": {
        "attributes": {
          "shape": "S3e"
        },
        "merge": {
          "type": "boolean"
        }
      }
    },
    "S3e": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S3l": {
      "type": "structure",
      "members": {
        "thingGroupDescription": {},
        "attributePayload": {
          "shape": "S3d"
        }
      }
    },
    "S3q": {
      "type": "structure",
      "members": {
        "thingTypeDescription": {},
        "searchableAttributes": {
          "type": "list",
          "member": {}
        }
      }
    },
    "S3y": {
      "type": "structure",
      "required": [
        "sql",
        "actions"
      ],
      "members": {
        "sql": {},
        "description": {},
        "actions": {
          "shape": "S41"
        },
        "ruleDisabled": {
          "type": "boolean"
        },
        "awsIotSqlVersion": {},
        "errorAction": {
          "shape": "S42"
        }
      }
    },
    "S41": {
      "type": "list",
      "member": {
        "shape": "S42"
      }
    },
    "S42": {
      "type": "structure",
      "members": {
        "dynamoDB": {
          "type": "structure",
          "required": [
            "tableName",
            "roleArn",
            "hashKeyField",
            "hashKeyValue"
          ],
          "members": {
            "tableName": {},
            "roleArn": {},
            "operation": {},
            "hashKeyField": {},
            "hashKeyValue": {},
            "hashKeyType": {},
            "rangeKeyField": {},
            "rangeKeyValue": {},
            "rangeKeyType": {},
            "payloadField": {}
          }
        },
        "dynamoDBv2": {
          "type": "structure",
          "members": {
            "roleArn": {},
            "putItem": {
              "type": "structure",
              "required": [
                "tableName"
              ],
              "members": {
                "tableName": {}
              }
            }
          }
        },
        "lambda": {
          "type": "structure",
          "required": [
            "functionArn"
          ],
          "members": {
            "functionArn": {}
          }
        },
        "sns": {
          "type": "structure",
          "required": [
            "targetArn",
            "roleArn"
          ],
          "members": {
            "targetArn": {},
            "roleArn": {},
            "messageFormat": {}
          }
        },
        "sqs": {
          "type": "structure",
          "required": [
            "roleArn",
            "queueUrl"
          ],
          "members": {
            "roleArn": {},
            "queueUrl": {},
            "useBase64": {
              "type": "boolean"
            }
          }
        },
        "kinesis": {
          "type": "structure",
          "required": [
            "roleArn",
            "streamName"
          ],
          "members": {
            "roleArn": {},
            "streamName": {},
            "partitionKey": {}
          }
        },
        "republish": {
          "type": "structure",
          "required": [
            "roleArn",
            "topic"
          ],
          "members": {
            "roleArn": {},
            "topic": {}
          }
        },
        "s3": {
          "type": "structure",
          "required": [
            "roleArn",
            "bucketName",
            "key"
          ],
          "members": {
            "roleArn": {},
            "bucketName": {},
            "key": {},
            "cannedAcl": {}
          }
        },
        "firehose": {
          "type": "structure",
          "required": [
            "roleArn",
            "deliveryStreamName"
          ],
          "members": {
            "roleArn": {},
            "deliveryStreamName": {},
            "separator": {}
          }
        },
        "cloudwatchMetric": {
          "type": "structure",
          "required": [
            "roleArn",
            "metricNamespace",
            "metricName",
            "metricValue",
            "metricUnit"
          ],
          "members": {
            "roleArn": {},
            "metricNamespace": {},
            "metricName": {},
            "metricValue": {},
            "metricUnit": {},
            "metricTimestamp": {}
          }
        },
        "cloudwatchAlarm": {
          "type": "structure",
          "required": [
            "roleArn",
            "alarmName",
            "stateReason",
            "stateValue"
          ],
          "members": {
            "roleArn": {},
            "alarmName": {},
            "stateReason": {},
            "stateValue": {}
          }
        },
        "elasticsearch": {
          "type": "structure",
          "required": [
            "roleArn",
            "endpoint",
            "index",
            "type",
            "id"
          ],
          "members": {
            "roleArn": {},
            "endpoint": {},
            "index": {},
            "type": {},
            "id": {}
          }
        },
        "salesforce": {
          "type": "structure",
          "required": [
            "token",
            "url"
          ],
          "members": {
            "token": {},
            "url": {}
          }
        }
      }
    },
    "S6d": {
      "type": "structure",
      "members": {
        "authorizerName": {},
        "authorizerArn": {},
        "authorizerFunctionArn": {},
        "tokenKeyName": {},
        "tokenSigningPublicKeys": {
          "shape": "Sy"
        },
        "status": {},
        "creationDate": {
          "type": "timestamp"
        },
        "lastModifiedDate": {
          "type": "timestamp"
        }
      }
    },
    "S6l": {
      "type": "structure",
      "members": {
        "templateBody": {},
        "roleArn": {}
      }
    },
    "S71": {
      "type": "map",
      "key": {},
      "value": {
        "type": "structure",
        "members": {
          "Enabled": {
            "type": "boolean"
          }
        }
      }
    },
    "S8c": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "groupName": {},
          "groupArn": {}
        }
      }
    },
    "S8p": {
      "type": "structure",
      "members": {
        "deprecated": {
          "type": "boolean"
        },
        "deprecationDate": {
          "type": "timestamp"
        },
        "creationDate": {
          "type": "timestamp"
        }
      }
    },
    "S95": {
      "type": "structure",
      "members": {
        "thingIndexingMode": {}
      }
    },
    "Sa2": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "policyName": {},
          "policyArn": {}
        }
      }
    },
    "Saf": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "certificateArn": {},
          "certificateId": {},
          "status": {},
          "creationDate": {
            "type": "timestamp"
          }
        }
      }
    },
    "Sat": {
      "type": "structure",
      "members": {
        "status": {},
        "queuedAt": {
          "type": "timestamp"
        },
        "startedAt": {
          "type": "timestamp"
        },
        "lastUpdatedAt": {
          "type": "timestamp"
        },
        "executionNumber": {
          "type": "long"
        }
      }
    },
    "Sbf": {
      "type": "list",
      "member": {}
    },
    "Sbq": {
      "type": "list",
      "member": {}
    },
    "Sd1": {
      "type": "structure",
      "required": [
        "targetType"
      ],
      "members": {
        "targetType": {},
        "targetName": {}
      }
    },
    "Se4": {
      "type": "structure",
      "members": {
        "actionType": {},
        "resources": {
          "type": "list",
          "member": {}
        }
      }
    },
    "Se8": {
      "type": "list",
      "member": {}
    },
    "Sfc": {
      "type": "list",
      "member": {}
    }
  }
}
},{}],87:[function(require,module,exports){
arguments[4][19][0].apply(exports,arguments)
},{"dup":19}],88:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "uid": "iot-data-2015-05-28",
    "apiVersion": "2015-05-28",
    "endpointPrefix": "data.iot",
    "protocol": "rest-json",
    "serviceFullName": "AWS IoT Data Plane",
    "signatureVersion": "v4",
    "signingName": "iotdata"
  },
  "operations": {
    "DeleteThingShadow": {
      "http": {
        "method": "DELETE",
        "requestUri": "/things/{thingName}/shadow"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingName"
        ],
        "members": {
          "thingName": {
            "location": "uri",
            "locationName": "thingName"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "payload"
        ],
        "members": {
          "payload": {
            "type": "blob"
          }
        },
        "payload": "payload"
      }
    },
    "GetThingShadow": {
      "http": {
        "method": "GET",
        "requestUri": "/things/{thingName}/shadow"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingName"
        ],
        "members": {
          "thingName": {
            "location": "uri",
            "locationName": "thingName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "payload": {
            "type": "blob"
          }
        },
        "payload": "payload"
      }
    },
    "Publish": {
      "http": {
        "requestUri": "/topics/{topic}"
      },
      "input": {
        "type": "structure",
        "required": [
          "topic"
        ],
        "members": {
          "topic": {
            "location": "uri",
            "locationName": "topic"
          },
          "qos": {
            "location": "querystring",
            "locationName": "qos",
            "type": "integer"
          },
          "payload": {
            "type": "blob"
          }
        },
        "payload": "payload"
      }
    },
    "UpdateThingShadow": {
      "http": {
        "requestUri": "/things/{thingName}/shadow"
      },
      "input": {
        "type": "structure",
        "required": [
          "thingName",
          "payload"
        ],
        "members": {
          "thingName": {
            "location": "uri",
            "locationName": "thingName"
          },
          "payload": {
            "type": "blob"
          }
        },
        "payload": "payload"
      },
      "output": {
        "type": "structure",
        "members": {
          "payload": {
            "type": "blob"
          }
        },
        "payload": "payload"
      }
    }
  },
  "shapes": {}
}
},{}],89:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2013-12-02",
    "endpointPrefix": "kinesis",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "Kinesis",
    "serviceFullName": "Amazon Kinesis",
    "serviceId": "Kinesis",
    "signatureVersion": "v4",
    "targetPrefix": "Kinesis_20131202",
    "uid": "kinesis-2013-12-02"
  },
  "operations": {
    "AddTagsToStream": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName",
          "Tags"
        ],
        "members": {
          "StreamName": {},
          "Tags": {
            "type": "map",
            "key": {},
            "value": {}
          }
        }
      }
    },
    "CreateStream": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName",
          "ShardCount"
        ],
        "members": {
          "StreamName": {},
          "ShardCount": {
            "type": "integer"
          }
        }
      }
    },
    "DecreaseStreamRetentionPeriod": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName",
          "RetentionPeriodHours"
        ],
        "members": {
          "StreamName": {},
          "RetentionPeriodHours": {
            "type": "integer"
          }
        }
      }
    },
    "DeleteStream": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName"
        ],
        "members": {
          "StreamName": {}
        }
      }
    },
    "DescribeLimits": {
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "required": [
          "ShardLimit",
          "OpenShardCount"
        ],
        "members": {
          "ShardLimit": {
            "type": "integer"
          },
          "OpenShardCount": {
            "type": "integer"
          }
        }
      }
    },
    "DescribeStream": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName"
        ],
        "members": {
          "StreamName": {},
          "Limit": {
            "type": "integer"
          },
          "ExclusiveStartShardId": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "StreamDescription"
        ],
        "members": {
          "StreamDescription": {
            "type": "structure",
            "required": [
              "StreamName",
              "StreamARN",
              "StreamStatus",
              "Shards",
              "HasMoreShards",
              "RetentionPeriodHours",
              "StreamCreationTimestamp",
              "EnhancedMonitoring"
            ],
            "members": {
              "StreamName": {},
              "StreamARN": {},
              "StreamStatus": {},
              "Shards": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "required": [
                    "ShardId",
                    "HashKeyRange",
                    "SequenceNumberRange"
                  ],
                  "members": {
                    "ShardId": {},
                    "ParentShardId": {},
                    "AdjacentParentShardId": {},
                    "HashKeyRange": {
                      "type": "structure",
                      "required": [
                        "StartingHashKey",
                        "EndingHashKey"
                      ],
                      "members": {
                        "StartingHashKey": {},
                        "EndingHashKey": {}
                      }
                    },
                    "SequenceNumberRange": {
                      "type": "structure",
                      "required": [
                        "StartingSequenceNumber"
                      ],
                      "members": {
                        "StartingSequenceNumber": {},
                        "EndingSequenceNumber": {}
                      }
                    }
                  }
                }
              },
              "HasMoreShards": {
                "type": "boolean"
              },
              "RetentionPeriodHours": {
                "type": "integer"
              },
              "StreamCreationTimestamp": {
                "type": "timestamp"
              },
              "EnhancedMonitoring": {
                "shape": "Ss"
              },
              "EncryptionType": {},
              "KeyId": {}
            }
          }
        }
      }
    },
    "DescribeStreamSummary": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName"
        ],
        "members": {
          "StreamName": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "StreamDescriptionSummary"
        ],
        "members": {
          "StreamDescriptionSummary": {
            "type": "structure",
            "required": [
              "StreamName",
              "StreamARN",
              "StreamStatus",
              "RetentionPeriodHours",
              "StreamCreationTimestamp",
              "EnhancedMonitoring",
              "OpenShardCount"
            ],
            "members": {
              "StreamName": {},
              "StreamARN": {},
              "StreamStatus": {},
              "RetentionPeriodHours": {
                "type": "integer"
              },
              "StreamCreationTimestamp": {
                "type": "timestamp"
              },
              "EnhancedMonitoring": {
                "shape": "Ss"
              },
              "EncryptionType": {},
              "KeyId": {},
              "OpenShardCount": {
                "type": "integer"
              }
            }
          }
        }
      }
    },
    "DisableEnhancedMonitoring": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName",
          "ShardLevelMetrics"
        ],
        "members": {
          "StreamName": {},
          "ShardLevelMetrics": {
            "shape": "Su"
          }
        }
      },
      "output": {
        "shape": "S12"
      }
    },
    "EnableEnhancedMonitoring": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName",
          "ShardLevelMetrics"
        ],
        "members": {
          "StreamName": {},
          "ShardLevelMetrics": {
            "shape": "Su"
          }
        }
      },
      "output": {
        "shape": "S12"
      }
    },
    "GetRecords": {
      "input": {
        "type": "structure",
        "required": [
          "ShardIterator"
        ],
        "members": {
          "ShardIterator": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Records"
        ],
        "members": {
          "Records": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "SequenceNumber",
                "Data",
                "PartitionKey"
              ],
              "members": {
                "SequenceNumber": {},
                "ApproximateArrivalTimestamp": {
                  "type": "timestamp"
                },
                "Data": {
                  "type": "blob"
                },
                "PartitionKey": {},
                "EncryptionType": {}
              }
            }
          },
          "NextShardIterator": {},
          "MillisBehindLatest": {
            "type": "long"
          }
        }
      }
    },
    "GetShardIterator": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName",
          "ShardId",
          "ShardIteratorType"
        ],
        "members": {
          "StreamName": {},
          "ShardId": {},
          "ShardIteratorType": {},
          "StartingSequenceNumber": {},
          "Timestamp": {
            "type": "timestamp"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ShardIterator": {}
        }
      }
    },
    "IncreaseStreamRetentionPeriod": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName",
          "RetentionPeriodHours"
        ],
        "members": {
          "StreamName": {},
          "RetentionPeriodHours": {
            "type": "integer"
          }
        }
      }
    },
    "ListStreams": {
      "input": {
        "type": "structure",
        "members": {
          "Limit": {
            "type": "integer"
          },
          "ExclusiveStartStreamName": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "StreamNames",
          "HasMoreStreams"
        ],
        "members": {
          "StreamNames": {
            "type": "list",
            "member": {}
          },
          "HasMoreStreams": {
            "type": "boolean"
          }
        }
      }
    },
    "ListTagsForStream": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName"
        ],
        "members": {
          "StreamName": {},
          "ExclusiveStartTagKey": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Tags",
          "HasMoreTags"
        ],
        "members": {
          "Tags": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Key"
              ],
              "members": {
                "Key": {},
                "Value": {}
              }
            }
          },
          "HasMoreTags": {
            "type": "boolean"
          }
        }
      }
    },
    "MergeShards": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName",
          "ShardToMerge",
          "AdjacentShardToMerge"
        ],
        "members": {
          "StreamName": {},
          "ShardToMerge": {},
          "AdjacentShardToMerge": {}
        }
      }
    },
    "PutRecord": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName",
          "Data",
          "PartitionKey"
        ],
        "members": {
          "StreamName": {},
          "Data": {
            "type": "blob"
          },
          "PartitionKey": {},
          "ExplicitHashKey": {},
          "SequenceNumberForOrdering": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "ShardId",
          "SequenceNumber"
        ],
        "members": {
          "ShardId": {},
          "SequenceNumber": {},
          "EncryptionType": {}
        }
      }
    },
    "PutRecords": {
      "input": {
        "type": "structure",
        "required": [
          "Records",
          "StreamName"
        ],
        "members": {
          "Records": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Data",
                "PartitionKey"
              ],
              "members": {
                "Data": {
                  "type": "blob"
                },
                "ExplicitHashKey": {},
                "PartitionKey": {}
              }
            }
          },
          "StreamName": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Records"
        ],
        "members": {
          "FailedRecordCount": {
            "type": "integer"
          },
          "Records": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "SequenceNumber": {},
                "ShardId": {},
                "ErrorCode": {},
                "ErrorMessage": {}
              }
            }
          },
          "EncryptionType": {}
        }
      }
    },
    "RemoveTagsFromStream": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName",
          "TagKeys"
        ],
        "members": {
          "StreamName": {},
          "TagKeys": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "SplitShard": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName",
          "ShardToSplit",
          "NewStartingHashKey"
        ],
        "members": {
          "StreamName": {},
          "ShardToSplit": {},
          "NewStartingHashKey": {}
        }
      }
    },
    "StartStreamEncryption": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName",
          "EncryptionType",
          "KeyId"
        ],
        "members": {
          "StreamName": {},
          "EncryptionType": {},
          "KeyId": {}
        }
      }
    },
    "StopStreamEncryption": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName",
          "EncryptionType",
          "KeyId"
        ],
        "members": {
          "StreamName": {},
          "EncryptionType": {},
          "KeyId": {}
        }
      }
    },
    "UpdateShardCount": {
      "input": {
        "type": "structure",
        "required": [
          "StreamName",
          "TargetShardCount",
          "ScalingType"
        ],
        "members": {
          "StreamName": {},
          "TargetShardCount": {
            "type": "integer"
          },
          "ScalingType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StreamName": {},
          "CurrentShardCount": {
            "type": "integer"
          },
          "TargetShardCount": {
            "type": "integer"
          }
        }
      }
    }
  },
  "shapes": {
    "Ss": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "ShardLevelMetrics": {
            "shape": "Su"
          }
        }
      }
    },
    "Su": {
      "type": "list",
      "member": {}
    },
    "S12": {
      "type": "structure",
      "members": {
        "StreamName": {},
        "CurrentShardLevelMetrics": {
          "shape": "Su"
        },
        "DesiredShardLevelMetrics": {
          "shape": "Su"
        }
      }
    }
  }
}
},{}],90:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeStream": {
      "input_token": "ExclusiveStartShardId",
      "limit_key": "Limit",
      "more_results": "StreamDescription.HasMoreShards",
      "output_token": "StreamDescription.Shards[-1].ShardId",
      "result_key": "StreamDescription.Shards"
    },
    "ListStreams": {
      "input_token": "ExclusiveStartStreamName",
      "limit_key": "Limit",
      "more_results": "HasMoreStreams",
      "output_token": "StreamNames[-1]",
      "result_key": "StreamNames"
    }
  }
}
},{}],91:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "StreamExists": {
      "delay": 10,
      "operation": "DescribeStream",
      "maxAttempts": 18,
      "acceptors": [
        {
          "expected": "ACTIVE",
          "matcher": "path",
          "state": "success",
          "argument": "StreamDescription.StreamStatus"
        }
      ]
    },
    "StreamNotExists": {
      "delay": 10,
      "operation": "DescribeStream",
      "maxAttempts": 18,
      "acceptors": [
        {
          "expected": "ResourceNotFoundException",
          "matcher": "error",
          "state": "success"
        }
      ]
    }
  }
}

},{}],92:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2014-11-01",
    "endpointPrefix": "kms",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "KMS",
    "serviceFullName": "AWS Key Management Service",
    "serviceId": "KMS",
    "signatureVersion": "v4",
    "targetPrefix": "TrentService",
    "uid": "kms-2014-11-01"
  },
  "operations": {
    "CancelKeyDeletion": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "KeyId": {}
        }
      }
    },
    "CreateAlias": {
      "input": {
        "type": "structure",
        "required": [
          "AliasName",
          "TargetKeyId"
        ],
        "members": {
          "AliasName": {},
          "TargetKeyId": {}
        }
      }
    },
    "CreateGrant": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId",
          "GranteePrincipal",
          "Operations"
        ],
        "members": {
          "KeyId": {},
          "GranteePrincipal": {},
          "RetiringPrincipal": {},
          "Operations": {
            "shape": "S8"
          },
          "Constraints": {
            "shape": "Sa"
          },
          "GrantTokens": {
            "shape": "Se"
          },
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GrantToken": {},
          "GrantId": {}
        }
      }
    },
    "CreateKey": {
      "input": {
        "type": "structure",
        "members": {
          "Policy": {},
          "Description": {},
          "KeyUsage": {},
          "Origin": {},
          "BypassPolicyLockoutSafetyCheck": {
            "type": "boolean"
          },
          "Tags": {
            "shape": "Sp"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "KeyMetadata": {
            "shape": "Su"
          }
        }
      }
    },
    "Decrypt": {
      "input": {
        "type": "structure",
        "required": [
          "CiphertextBlob"
        ],
        "members": {
          "CiphertextBlob": {
            "type": "blob"
          },
          "EncryptionContext": {
            "shape": "Sb"
          },
          "GrantTokens": {
            "shape": "Se"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "KeyId": {},
          "Plaintext": {
            "shape": "S14"
          }
        }
      }
    },
    "DeleteAlias": {
      "input": {
        "type": "structure",
        "required": [
          "AliasName"
        ],
        "members": {
          "AliasName": {}
        }
      }
    },
    "DeleteImportedKeyMaterial": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {}
        }
      }
    },
    "DescribeKey": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {},
          "GrantTokens": {
            "shape": "Se"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "KeyMetadata": {
            "shape": "Su"
          }
        }
      }
    },
    "DisableKey": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {}
        }
      }
    },
    "DisableKeyRotation": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {}
        }
      }
    },
    "EnableKey": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {}
        }
      }
    },
    "EnableKeyRotation": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {}
        }
      }
    },
    "Encrypt": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId",
          "Plaintext"
        ],
        "members": {
          "KeyId": {},
          "Plaintext": {
            "shape": "S14"
          },
          "EncryptionContext": {
            "shape": "Sb"
          },
          "GrantTokens": {
            "shape": "Se"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CiphertextBlob": {
            "type": "blob"
          },
          "KeyId": {}
        }
      }
    },
    "GenerateDataKey": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {},
          "EncryptionContext": {
            "shape": "Sb"
          },
          "NumberOfBytes": {
            "type": "integer"
          },
          "KeySpec": {},
          "GrantTokens": {
            "shape": "Se"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CiphertextBlob": {
            "type": "blob"
          },
          "Plaintext": {
            "shape": "S14"
          },
          "KeyId": {}
        }
      }
    },
    "GenerateDataKeyWithoutPlaintext": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {},
          "EncryptionContext": {
            "shape": "Sb"
          },
          "KeySpec": {},
          "NumberOfBytes": {
            "type": "integer"
          },
          "GrantTokens": {
            "shape": "Se"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CiphertextBlob": {
            "type": "blob"
          },
          "KeyId": {}
        }
      }
    },
    "GenerateRandom": {
      "input": {
        "type": "structure",
        "members": {
          "NumberOfBytes": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Plaintext": {
            "shape": "S14"
          }
        }
      }
    },
    "GetKeyPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId",
          "PolicyName"
        ],
        "members": {
          "KeyId": {},
          "PolicyName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Policy": {}
        }
      }
    },
    "GetKeyRotationStatus": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "KeyRotationEnabled": {
            "type": "boolean"
          }
        }
      }
    },
    "GetParametersForImport": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId",
          "WrappingAlgorithm",
          "WrappingKeySpec"
        ],
        "members": {
          "KeyId": {},
          "WrappingAlgorithm": {},
          "WrappingKeySpec": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "KeyId": {},
          "ImportToken": {
            "type": "blob"
          },
          "PublicKey": {
            "shape": "S14"
          },
          "ParametersValidTo": {
            "type": "timestamp"
          }
        }
      }
    },
    "ImportKeyMaterial": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId",
          "ImportToken",
          "EncryptedKeyMaterial"
        ],
        "members": {
          "KeyId": {},
          "ImportToken": {
            "type": "blob"
          },
          "EncryptedKeyMaterial": {
            "type": "blob"
          },
          "ValidTo": {
            "type": "timestamp"
          },
          "ExpirationModel": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "ListAliases": {
      "input": {
        "type": "structure",
        "members": {
          "Limit": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Aliases": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "AliasName": {},
                "AliasArn": {},
                "TargetKeyId": {}
              }
            }
          },
          "NextMarker": {},
          "Truncated": {
            "type": "boolean"
          }
        }
      }
    },
    "ListGrants": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "Limit": {
            "type": "integer"
          },
          "Marker": {},
          "KeyId": {}
        }
      },
      "output": {
        "shape": "S25"
      }
    },
    "ListKeyPolicies": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {},
          "Limit": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "PolicyNames": {
            "type": "list",
            "member": {}
          },
          "NextMarker": {},
          "Truncated": {
            "type": "boolean"
          }
        }
      }
    },
    "ListKeys": {
      "input": {
        "type": "structure",
        "members": {
          "Limit": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Keys": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "KeyId": {},
                "KeyArn": {}
              }
            }
          },
          "NextMarker": {},
          "Truncated": {
            "type": "boolean"
          }
        }
      }
    },
    "ListResourceTags": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {},
          "Limit": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Tags": {
            "shape": "Sp"
          },
          "NextMarker": {},
          "Truncated": {
            "type": "boolean"
          }
        }
      }
    },
    "ListRetirableGrants": {
      "input": {
        "type": "structure",
        "required": [
          "RetiringPrincipal"
        ],
        "members": {
          "Limit": {
            "type": "integer"
          },
          "Marker": {},
          "RetiringPrincipal": {}
        }
      },
      "output": {
        "shape": "S25"
      }
    },
    "PutKeyPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId",
          "PolicyName",
          "Policy"
        ],
        "members": {
          "KeyId": {},
          "PolicyName": {},
          "Policy": {},
          "BypassPolicyLockoutSafetyCheck": {
            "type": "boolean"
          }
        }
      }
    },
    "ReEncrypt": {
      "input": {
        "type": "structure",
        "required": [
          "CiphertextBlob",
          "DestinationKeyId"
        ],
        "members": {
          "CiphertextBlob": {
            "type": "blob"
          },
          "SourceEncryptionContext": {
            "shape": "Sb"
          },
          "DestinationKeyId": {},
          "DestinationEncryptionContext": {
            "shape": "Sb"
          },
          "GrantTokens": {
            "shape": "Se"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CiphertextBlob": {
            "type": "blob"
          },
          "SourceKeyId": {},
          "KeyId": {}
        }
      }
    },
    "RetireGrant": {
      "input": {
        "type": "structure",
        "members": {
          "GrantToken": {},
          "KeyId": {},
          "GrantId": {}
        }
      }
    },
    "RevokeGrant": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId",
          "GrantId"
        ],
        "members": {
          "KeyId": {},
          "GrantId": {}
        }
      }
    },
    "ScheduleKeyDeletion": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {},
          "PendingWindowInDays": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "KeyId": {},
          "DeletionDate": {
            "type": "timestamp"
          }
        }
      }
    },
    "TagResource": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId",
          "Tags"
        ],
        "members": {
          "KeyId": {},
          "Tags": {
            "shape": "Sp"
          }
        }
      }
    },
    "UntagResource": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId",
          "TagKeys"
        ],
        "members": {
          "KeyId": {},
          "TagKeys": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "UpdateAlias": {
      "input": {
        "type": "structure",
        "required": [
          "AliasName",
          "TargetKeyId"
        ],
        "members": {
          "AliasName": {},
          "TargetKeyId": {}
        }
      }
    },
    "UpdateKeyDescription": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId",
          "Description"
        ],
        "members": {
          "KeyId": {},
          "Description": {}
        }
      }
    }
  },
  "shapes": {
    "S8": {
      "type": "list",
      "member": {}
    },
    "Sa": {
      "type": "structure",
      "members": {
        "EncryptionContextSubset": {
          "shape": "Sb"
        },
        "EncryptionContextEquals": {
          "shape": "Sb"
        }
      }
    },
    "Sb": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "Se": {
      "type": "list",
      "member": {}
    },
    "Sp": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "TagKey",
          "TagValue"
        ],
        "members": {
          "TagKey": {},
          "TagValue": {}
        }
      }
    },
    "Su": {
      "type": "structure",
      "required": [
        "KeyId"
      ],
      "members": {
        "AWSAccountId": {},
        "KeyId": {},
        "Arn": {},
        "CreationDate": {
          "type": "timestamp"
        },
        "Enabled": {
          "type": "boolean"
        },
        "Description": {},
        "KeyUsage": {},
        "KeyState": {},
        "DeletionDate": {
          "type": "timestamp"
        },
        "ValidTo": {
          "type": "timestamp"
        },
        "Origin": {},
        "ExpirationModel": {},
        "KeyManager": {}
      }
    },
    "S14": {
      "type": "blob",
      "sensitive": true
    },
    "S25": {
      "type": "structure",
      "members": {
        "Grants": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "KeyId": {},
              "GrantId": {},
              "Name": {},
              "CreationDate": {
                "type": "timestamp"
              },
              "GranteePrincipal": {},
              "RetiringPrincipal": {},
              "IssuingAccount": {},
              "Operations": {
                "shape": "S8"
              },
              "Constraints": {
                "shape": "Sa"
              }
            }
          }
        },
        "NextMarker": {},
        "Truncated": {
          "type": "boolean"
        }
      }
    }
  }
}
},{}],93:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListAliases": {
      "input_token": "Marker",
      "limit_key": "Limit",
      "more_results": "Truncated",
      "output_token": "NextMarker",
      "result_key": "Aliases"
    },
    "ListGrants": {
      "input_token": "Marker",
      "limit_key": "Limit",
      "more_results": "Truncated",
      "output_token": "NextMarker",
      "result_key": "Grants"
    },
    "ListKeyPolicies": {
      "input_token": "Marker",
      "limit_key": "Limit",
      "more_results": "Truncated",
      "output_token": "NextMarker",
      "result_key": "PolicyNames"
    },
    "ListKeys": {
      "input_token": "Marker",
      "limit_key": "Limit",
      "more_results": "Truncated",
      "output_token": "NextMarker",
      "result_key": "Keys"
    }
  }
}
},{}],94:[function(require,module,exports){
module.exports={
  "metadata": {
    "apiVersion": "2014-11-11",
    "endpointPrefix": "lambda",
    "serviceFullName": "AWS Lambda",
    "signatureVersion": "v4",
    "protocol": "rest-json"
  },
  "operations": {
    "AddEventSource": {
      "http": {
        "requestUri": "/2014-11-13/event-source-mappings/"
      },
      "input": {
        "type": "structure",
        "required": [
          "EventSource",
          "FunctionName",
          "Role"
        ],
        "members": {
          "EventSource": {},
          "FunctionName": {},
          "Role": {},
          "BatchSize": {
            "type": "integer"
          },
          "Parameters": {
            "shape": "S6"
          }
        }
      },
      "output": {
        "shape": "S7"
      }
    },
    "DeleteFunction": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2014-11-13/functions/{FunctionName}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          }
        }
      }
    },
    "GetEventSource": {
      "http": {
        "method": "GET",
        "requestUri": "/2014-11-13/event-source-mappings/{UUID}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "UUID"
        ],
        "members": {
          "UUID": {
            "location": "uri",
            "locationName": "UUID"
          }
        }
      },
      "output": {
        "shape": "S7"
      }
    },
    "GetFunction": {
      "http": {
        "method": "GET",
        "requestUri": "/2014-11-13/functions/{FunctionName}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Configuration": {
            "shape": "Se"
          },
          "Code": {
            "type": "structure",
            "members": {
              "RepositoryType": {},
              "Location": {}
            }
          }
        }
      }
    },
    "GetFunctionConfiguration": {
      "http": {
        "method": "GET",
        "requestUri": "/2014-11-13/functions/{FunctionName}/configuration",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          }
        }
      },
      "output": {
        "shape": "Se"
      }
    },
    "InvokeAsync": {
      "http": {
        "requestUri": "/2014-11-13/functions/{FunctionName}/invoke-async/",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName",
          "InvokeArgs"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "InvokeArgs": {
            "shape": "Sq"
          }
        },
        "payload": "InvokeArgs"
      },
      "output": {
        "type": "structure",
        "members": {
          "Status": {
            "location": "statusCode",
            "type": "integer"
          }
        }
      }
    },
    "ListEventSources": {
      "http": {
        "method": "GET",
        "requestUri": "/2014-11-13/event-source-mappings/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "EventSourceArn": {
            "location": "querystring",
            "locationName": "EventSource"
          },
          "FunctionName": {
            "location": "querystring",
            "locationName": "FunctionName"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "EventSources": {
            "type": "list",
            "member": {
              "shape": "S7"
            }
          }
        }
      }
    },
    "ListFunctions": {
      "http": {
        "method": "GET",
        "requestUri": "/2014-11-13/functions/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Functions": {
            "type": "list",
            "member": {
              "shape": "Se"
            }
          }
        }
      }
    },
    "RemoveEventSource": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2014-11-13/event-source-mappings/{UUID}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "UUID"
        ],
        "members": {
          "UUID": {
            "location": "uri",
            "locationName": "UUID"
          }
        }
      }
    },
    "UpdateFunctionConfiguration": {
      "http": {
        "method": "PUT",
        "requestUri": "/2014-11-13/functions/{FunctionName}/configuration",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "Role": {
            "location": "querystring",
            "locationName": "Role"
          },
          "Handler": {
            "location": "querystring",
            "locationName": "Handler"
          },
          "Description": {
            "location": "querystring",
            "locationName": "Description"
          },
          "Timeout": {
            "location": "querystring",
            "locationName": "Timeout",
            "type": "integer"
          },
          "MemorySize": {
            "location": "querystring",
            "locationName": "MemorySize",
            "type": "integer"
          }
        }
      },
      "output": {
        "shape": "Se"
      }
    },
    "UploadFunction": {
      "http": {
        "method": "PUT",
        "requestUri": "/2014-11-13/functions/{FunctionName}",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName",
          "FunctionZip",
          "Runtime",
          "Role",
          "Handler",
          "Mode"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "FunctionZip": {
            "shape": "Sq"
          },
          "Runtime": {
            "location": "querystring",
            "locationName": "Runtime"
          },
          "Role": {
            "location": "querystring",
            "locationName": "Role"
          },
          "Handler": {
            "location": "querystring",
            "locationName": "Handler"
          },
          "Mode": {
            "location": "querystring",
            "locationName": "Mode"
          },
          "Description": {
            "location": "querystring",
            "locationName": "Description"
          },
          "Timeout": {
            "location": "querystring",
            "locationName": "Timeout",
            "type": "integer"
          },
          "MemorySize": {
            "location": "querystring",
            "locationName": "MemorySize",
            "type": "integer"
          }
        },
        "payload": "FunctionZip"
      },
      "output": {
        "shape": "Se"
      }
    }
  },
  "shapes": {
    "S6": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S7": {
      "type": "structure",
      "members": {
        "UUID": {},
        "BatchSize": {
          "type": "integer"
        },
        "EventSource": {},
        "FunctionName": {},
        "Parameters": {
          "shape": "S6"
        },
        "Role": {},
        "LastModified": {
          "type": "timestamp"
        },
        "IsActive": {
          "type": "boolean"
        },
        "Status": {}
      }
    },
    "Se": {
      "type": "structure",
      "members": {
        "FunctionName": {},
        "FunctionARN": {},
        "ConfigurationId": {},
        "Runtime": {},
        "Role": {},
        "Handler": {},
        "Mode": {},
        "CodeSize": {
          "type": "long"
        },
        "Description": {},
        "Timeout": {
          "type": "integer"
        },
        "MemorySize": {
          "type": "integer"
        },
        "LastModified": {
          "type": "timestamp"
        }
      }
    },
    "Sq": {
      "type": "blob",
      "streaming": true
    }
  }
}
},{}],95:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListEventSources": {
      "input_token": "Marker",
      "output_token": "NextMarker",
      "limit_key": "MaxItems",
      "result_key": "EventSources"
    },
    "ListFunctions": {
      "input_token": "Marker",
      "output_token": "NextMarker",
      "limit_key": "MaxItems",
      "result_key": "Functions"
    }
  }
}

},{}],96:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-03-31",
    "endpointPrefix": "lambda",
    "protocol": "rest-json",
    "serviceFullName": "AWS Lambda",
    "serviceId": "Lambda",
    "signatureVersion": "v4",
    "uid": "lambda-2015-03-31"
  },
  "operations": {
    "AddPermission": {
      "http": {
        "requestUri": "/2015-03-31/functions/{FunctionName}/policy",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName",
          "StatementId",
          "Action",
          "Principal"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "StatementId": {},
          "Action": {},
          "Principal": {},
          "SourceArn": {},
          "SourceAccount": {},
          "EventSourceToken": {},
          "Qualifier": {
            "location": "querystring",
            "locationName": "Qualifier"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Statement": {}
        }
      }
    },
    "CreateAlias": {
      "http": {
        "requestUri": "/2015-03-31/functions/{FunctionName}/aliases",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName",
          "Name",
          "FunctionVersion"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "Name": {},
          "FunctionVersion": {},
          "Description": {},
          "RoutingConfig": {
            "shape": "Sg"
          }
        }
      },
      "output": {
        "shape": "Sk"
      }
    },
    "CreateEventSourceMapping": {
      "http": {
        "requestUri": "/2015-03-31/event-source-mappings/",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "EventSourceArn",
          "FunctionName",
          "StartingPosition"
        ],
        "members": {
          "EventSourceArn": {},
          "FunctionName": {},
          "Enabled": {
            "type": "boolean"
          },
          "BatchSize": {
            "type": "integer"
          },
          "StartingPosition": {},
          "StartingPositionTimestamp": {
            "type": "timestamp"
          }
        }
      },
      "output": {
        "shape": "Sr"
      }
    },
    "CreateFunction": {
      "http": {
        "requestUri": "/2015-03-31/functions",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName",
          "Runtime",
          "Role",
          "Handler",
          "Code"
        ],
        "members": {
          "FunctionName": {},
          "Runtime": {},
          "Role": {},
          "Handler": {},
          "Code": {
            "type": "structure",
            "members": {
              "ZipFile": {
                "shape": "Sx"
              },
              "S3Bucket": {},
              "S3Key": {},
              "S3ObjectVersion": {}
            }
          },
          "Description": {},
          "Timeout": {
            "type": "integer"
          },
          "MemorySize": {
            "type": "integer"
          },
          "Publish": {
            "type": "boolean"
          },
          "VpcConfig": {
            "shape": "S14"
          },
          "DeadLetterConfig": {
            "shape": "S19"
          },
          "Environment": {
            "shape": "S1b"
          },
          "KMSKeyArn": {},
          "TracingConfig": {
            "shape": "S1g"
          },
          "Tags": {
            "shape": "S1i"
          }
        }
      },
      "output": {
        "shape": "S1l"
      }
    },
    "DeleteAlias": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName",
          "Name"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "Name": {
            "location": "uri",
            "locationName": "Name"
          }
        }
      }
    },
    "DeleteEventSourceMapping": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2015-03-31/event-source-mappings/{UUID}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "UUID"
        ],
        "members": {
          "UUID": {
            "location": "uri",
            "locationName": "UUID"
          }
        }
      },
      "output": {
        "shape": "Sr"
      }
    },
    "DeleteFunction": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2015-03-31/functions/{FunctionName}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "Qualifier": {
            "location": "querystring",
            "locationName": "Qualifier"
          }
        }
      }
    },
    "DeleteFunctionConcurrency": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2017-10-31/functions/{FunctionName}/concurrency",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          }
        }
      }
    },
    "GetAccountSettings": {
      "http": {
        "method": "GET",
        "requestUri": "/2016-08-19/account-settings/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "members": {
          "AccountLimit": {
            "type": "structure",
            "members": {
              "TotalCodeSize": {
                "type": "long"
              },
              "CodeSizeUnzipped": {
                "type": "long"
              },
              "CodeSizeZipped": {
                "type": "long"
              },
              "ConcurrentExecutions": {
                "type": "integer"
              },
              "UnreservedConcurrentExecutions": {
                "type": "integer"
              }
            }
          },
          "AccountUsage": {
            "type": "structure",
            "members": {
              "TotalCodeSize": {
                "type": "long"
              },
              "FunctionCount": {
                "type": "long"
              }
            }
          }
        }
      }
    },
    "GetAlias": {
      "http": {
        "method": "GET",
        "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName",
          "Name"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "Name": {
            "location": "uri",
            "locationName": "Name"
          }
        }
      },
      "output": {
        "shape": "Sk"
      }
    },
    "GetEventSourceMapping": {
      "http": {
        "method": "GET",
        "requestUri": "/2015-03-31/event-source-mappings/{UUID}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "UUID"
        ],
        "members": {
          "UUID": {
            "location": "uri",
            "locationName": "UUID"
          }
        }
      },
      "output": {
        "shape": "Sr"
      }
    },
    "GetFunction": {
      "http": {
        "method": "GET",
        "requestUri": "/2015-03-31/functions/{FunctionName}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "Qualifier": {
            "location": "querystring",
            "locationName": "Qualifier"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Configuration": {
            "shape": "S1l"
          },
          "Code": {
            "type": "structure",
            "members": {
              "RepositoryType": {},
              "Location": {}
            }
          },
          "Tags": {
            "shape": "S1i"
          },
          "Concurrency": {
            "shape": "S2b"
          }
        }
      }
    },
    "GetFunctionConfiguration": {
      "http": {
        "method": "GET",
        "requestUri": "/2015-03-31/functions/{FunctionName}/configuration",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "Qualifier": {
            "location": "querystring",
            "locationName": "Qualifier"
          }
        }
      },
      "output": {
        "shape": "S1l"
      }
    },
    "GetPolicy": {
      "http": {
        "method": "GET",
        "requestUri": "/2015-03-31/functions/{FunctionName}/policy",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "Qualifier": {
            "location": "querystring",
            "locationName": "Qualifier"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Policy": {}
        }
      }
    },
    "Invoke": {
      "http": {
        "requestUri": "/2015-03-31/functions/{FunctionName}/invocations"
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "InvocationType": {
            "location": "header",
            "locationName": "X-Amz-Invocation-Type"
          },
          "LogType": {
            "location": "header",
            "locationName": "X-Amz-Log-Type"
          },
          "ClientContext": {
            "location": "header",
            "locationName": "X-Amz-Client-Context"
          },
          "Payload": {
            "shape": "Sx"
          },
          "Qualifier": {
            "location": "querystring",
            "locationName": "Qualifier"
          }
        },
        "payload": "Payload"
      },
      "output": {
        "type": "structure",
        "members": {
          "StatusCode": {
            "location": "statusCode",
            "type": "integer"
          },
          "FunctionError": {
            "location": "header",
            "locationName": "X-Amz-Function-Error"
          },
          "LogResult": {
            "location": "header",
            "locationName": "X-Amz-Log-Result"
          },
          "Payload": {
            "shape": "Sx"
          },
          "ExecutedVersion": {
            "location": "header",
            "locationName": "X-Amz-Executed-Version"
          }
        },
        "payload": "Payload"
      }
    },
    "InvokeAsync": {
      "http": {
        "requestUri": "/2014-11-13/functions/{FunctionName}/invoke-async/",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName",
          "InvokeArgs"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "InvokeArgs": {
            "type": "blob",
            "streaming": true
          }
        },
        "deprecated": true,
        "payload": "InvokeArgs"
      },
      "output": {
        "type": "structure",
        "members": {
          "Status": {
            "location": "statusCode",
            "type": "integer"
          }
        },
        "deprecated": true
      },
      "deprecated": true
    },
    "ListAliases": {
      "http": {
        "method": "GET",
        "requestUri": "/2015-03-31/functions/{FunctionName}/aliases",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "FunctionVersion": {
            "location": "querystring",
            "locationName": "FunctionVersion"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Aliases": {
            "type": "list",
            "member": {
              "shape": "Sk"
            }
          }
        }
      }
    },
    "ListEventSourceMappings": {
      "http": {
        "method": "GET",
        "requestUri": "/2015-03-31/event-source-mappings/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "EventSourceArn": {
            "location": "querystring",
            "locationName": "EventSourceArn"
          },
          "FunctionName": {
            "location": "querystring",
            "locationName": "FunctionName"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "EventSourceMappings": {
            "type": "list",
            "member": {
              "shape": "Sr"
            }
          }
        }
      }
    },
    "ListFunctions": {
      "http": {
        "method": "GET",
        "requestUri": "/2015-03-31/functions/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "MasterRegion": {
            "location": "querystring",
            "locationName": "MasterRegion"
          },
          "FunctionVersion": {
            "location": "querystring",
            "locationName": "FunctionVersion"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Functions": {
            "shape": "S2z"
          }
        }
      }
    },
    "ListTags": {
      "http": {
        "method": "GET",
        "requestUri": "/2017-03-31/tags/{ARN}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Resource"
        ],
        "members": {
          "Resource": {
            "location": "uri",
            "locationName": "ARN"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Tags": {
            "shape": "S1i"
          }
        }
      }
    },
    "ListVersionsByFunction": {
      "http": {
        "method": "GET",
        "requestUri": "/2015-03-31/functions/{FunctionName}/versions",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "Marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "MaxItems",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Versions": {
            "shape": "S2z"
          }
        }
      }
    },
    "PublishVersion": {
      "http": {
        "requestUri": "/2015-03-31/functions/{FunctionName}/versions",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "CodeSha256": {},
          "Description": {}
        }
      },
      "output": {
        "shape": "S1l"
      }
    },
    "PutFunctionConcurrency": {
      "http": {
        "method": "PUT",
        "requestUri": "/2017-10-31/functions/{FunctionName}/concurrency",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName",
          "ReservedConcurrentExecutions"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "ReservedConcurrentExecutions": {
            "type": "integer"
          }
        }
      },
      "output": {
        "shape": "S2b"
      }
    },
    "RemovePermission": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2015-03-31/functions/{FunctionName}/policy/{StatementId}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName",
          "StatementId"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "StatementId": {
            "location": "uri",
            "locationName": "StatementId"
          },
          "Qualifier": {
            "location": "querystring",
            "locationName": "Qualifier"
          }
        }
      }
    },
    "TagResource": {
      "http": {
        "requestUri": "/2017-03-31/tags/{ARN}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "Resource",
          "Tags"
        ],
        "members": {
          "Resource": {
            "location": "uri",
            "locationName": "ARN"
          },
          "Tags": {
            "shape": "S1i"
          }
        }
      }
    },
    "UntagResource": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2017-03-31/tags/{ARN}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "Resource",
          "TagKeys"
        ],
        "members": {
          "Resource": {
            "location": "uri",
            "locationName": "ARN"
          },
          "TagKeys": {
            "location": "querystring",
            "locationName": "tagKeys",
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "UpdateAlias": {
      "http": {
        "method": "PUT",
        "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName",
          "Name"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "Name": {
            "location": "uri",
            "locationName": "Name"
          },
          "FunctionVersion": {},
          "Description": {},
          "RoutingConfig": {
            "shape": "Sg"
          }
        }
      },
      "output": {
        "shape": "Sk"
      }
    },
    "UpdateEventSourceMapping": {
      "http": {
        "method": "PUT",
        "requestUri": "/2015-03-31/event-source-mappings/{UUID}",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "UUID"
        ],
        "members": {
          "UUID": {
            "location": "uri",
            "locationName": "UUID"
          },
          "FunctionName": {},
          "Enabled": {
            "type": "boolean"
          },
          "BatchSize": {
            "type": "integer"
          }
        }
      },
      "output": {
        "shape": "Sr"
      }
    },
    "UpdateFunctionCode": {
      "http": {
        "method": "PUT",
        "requestUri": "/2015-03-31/functions/{FunctionName}/code",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "ZipFile": {
            "shape": "Sx"
          },
          "S3Bucket": {},
          "S3Key": {},
          "S3ObjectVersion": {},
          "Publish": {
            "type": "boolean"
          },
          "DryRun": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "shape": "S1l"
      }
    },
    "UpdateFunctionConfiguration": {
      "http": {
        "method": "PUT",
        "requestUri": "/2015-03-31/functions/{FunctionName}/configuration",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FunctionName"
        ],
        "members": {
          "FunctionName": {
            "location": "uri",
            "locationName": "FunctionName"
          },
          "Role": {},
          "Handler": {},
          "Description": {},
          "Timeout": {
            "type": "integer"
          },
          "MemorySize": {
            "type": "integer"
          },
          "VpcConfig": {
            "shape": "S14"
          },
          "Environment": {
            "shape": "S1b"
          },
          "Runtime": {},
          "DeadLetterConfig": {
            "shape": "S19"
          },
          "KMSKeyArn": {},
          "TracingConfig": {
            "shape": "S1g"
          }
        }
      },
      "output": {
        "shape": "S1l"
      }
    }
  },
  "shapes": {
    "Sg": {
      "type": "structure",
      "members": {
        "AdditionalVersionWeights": {
          "type": "map",
          "key": {},
          "value": {
            "type": "double"
          }
        }
      }
    },
    "Sk": {
      "type": "structure",
      "members": {
        "AliasArn": {},
        "Name": {},
        "FunctionVersion": {},
        "Description": {},
        "RoutingConfig": {
          "shape": "Sg"
        }
      }
    },
    "Sr": {
      "type": "structure",
      "members": {
        "UUID": {},
        "BatchSize": {
          "type": "integer"
        },
        "EventSourceArn": {},
        "FunctionArn": {},
        "LastModified": {
          "type": "timestamp"
        },
        "LastProcessingResult": {},
        "State": {},
        "StateTransitionReason": {}
      }
    },
    "Sx": {
      "type": "blob",
      "sensitive": true
    },
    "S14": {
      "type": "structure",
      "members": {
        "SubnetIds": {
          "shape": "S15"
        },
        "SecurityGroupIds": {
          "shape": "S17"
        }
      }
    },
    "S15": {
      "type": "list",
      "member": {}
    },
    "S17": {
      "type": "list",
      "member": {}
    },
    "S19": {
      "type": "structure",
      "members": {
        "TargetArn": {}
      }
    },
    "S1b": {
      "type": "structure",
      "members": {
        "Variables": {
          "shape": "S1c"
        }
      }
    },
    "S1c": {
      "type": "map",
      "key": {
        "type": "string",
        "sensitive": true
      },
      "value": {
        "type": "string",
        "sensitive": true
      },
      "sensitive": true
    },
    "S1g": {
      "type": "structure",
      "members": {
        "Mode": {}
      }
    },
    "S1i": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S1l": {
      "type": "structure",
      "members": {
        "FunctionName": {},
        "FunctionArn": {},
        "Runtime": {},
        "Role": {},
        "Handler": {},
        "CodeSize": {
          "type": "long"
        },
        "Description": {},
        "Timeout": {
          "type": "integer"
        },
        "MemorySize": {
          "type": "integer"
        },
        "LastModified": {},
        "CodeSha256": {},
        "Version": {},
        "VpcConfig": {
          "type": "structure",
          "members": {
            "SubnetIds": {
              "shape": "S15"
            },
            "SecurityGroupIds": {
              "shape": "S17"
            },
            "VpcId": {}
          }
        },
        "DeadLetterConfig": {
          "shape": "S19"
        },
        "Environment": {
          "type": "structure",
          "members": {
            "Variables": {
              "shape": "S1c"
            },
            "Error": {
              "type": "structure",
              "members": {
                "ErrorCode": {},
                "Message": {
                  "type": "string",
                  "sensitive": true
                }
              }
            }
          }
        },
        "KMSKeyArn": {},
        "TracingConfig": {
          "type": "structure",
          "members": {
            "Mode": {}
          }
        },
        "MasterArn": {}
      }
    },
    "S2b": {
      "type": "structure",
      "members": {
        "ReservedConcurrentExecutions": {
          "type": "integer"
        }
      }
    },
    "S2z": {
      "type": "list",
      "member": {
        "shape": "S1l"
      }
    }
  }
}
},{}],97:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListEventSourceMappings": {
      "input_token": "Marker",
      "limit_key": "MaxItems",
      "output_token": "NextMarker",
      "result_key": "EventSourceMappings"
    },
    "ListFunctions": {
      "input_token": "Marker",
      "limit_key": "MaxItems",
      "output_token": "NextMarker",
      "result_key": "Functions"
    }
  }
}
},{}],98:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2017-04-19",
    "endpointPrefix": "models.lex",
    "jsonVersion": "1.1",
    "protocol": "rest-json",
    "serviceFullName": "Amazon Lex Model Building Service",
    "signatureVersion": "v4",
    "signingName": "lex",
    "uid": "lex-models-2017-04-19"
  },
  "operations": {
    "CreateBotVersion": {
      "http": {
        "requestUri": "/bots/{name}/versions",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "checksum": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "name": {},
          "description": {},
          "intents": {
            "shape": "S6"
          },
          "clarificationPrompt": {
            "shape": "Sa"
          },
          "abortStatement": {
            "shape": "Sh"
          },
          "status": {},
          "failureReason": {},
          "lastUpdatedDate": {
            "type": "timestamp"
          },
          "createdDate": {
            "type": "timestamp"
          },
          "idleSessionTTLInSeconds": {
            "type": "integer"
          },
          "voiceId": {},
          "checksum": {},
          "version": {},
          "locale": {},
          "childDirected": {
            "type": "boolean"
          }
        }
      }
    },
    "CreateIntentVersion": {
      "http": {
        "requestUri": "/intents/{name}/versions",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "checksum": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "name": {},
          "description": {},
          "slots": {
            "shape": "Sp"
          },
          "sampleUtterances": {
            "shape": "Sx"
          },
          "confirmationPrompt": {
            "shape": "Sa"
          },
          "rejectionStatement": {
            "shape": "Sh"
          },
          "followUpPrompt": {
            "shape": "Sy"
          },
          "conclusionStatement": {
            "shape": "Sh"
          },
          "dialogCodeHook": {
            "shape": "Sz"
          },
          "fulfillmentActivity": {
            "shape": "S12"
          },
          "parentIntentSignature": {},
          "lastUpdatedDate": {
            "type": "timestamp"
          },
          "createdDate": {
            "type": "timestamp"
          },
          "version": {},
          "checksum": {}
        }
      }
    },
    "CreateSlotTypeVersion": {
      "http": {
        "requestUri": "/slottypes/{name}/versions",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "checksum": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "name": {},
          "description": {},
          "enumerationValues": {
            "shape": "S18"
          },
          "lastUpdatedDate": {
            "type": "timestamp"
          },
          "createdDate": {
            "type": "timestamp"
          },
          "version": {},
          "checksum": {},
          "valueSelectionStrategy": {}
        }
      }
    },
    "DeleteBot": {
      "http": {
        "method": "DELETE",
        "requestUri": "/bots/{name}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          }
        }
      }
    },
    "DeleteBotAlias": {
      "http": {
        "method": "DELETE",
        "requestUri": "/bots/{botName}/aliases/{name}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "name",
          "botName"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "botName": {
            "location": "uri",
            "locationName": "botName"
          }
        }
      }
    },
    "DeleteBotChannelAssociation": {
      "http": {
        "method": "DELETE",
        "requestUri": "/bots/{botName}/aliases/{aliasName}/channels/{name}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "name",
          "botName",
          "botAlias"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "botName": {
            "location": "uri",
            "locationName": "botName"
          },
          "botAlias": {
            "location": "uri",
            "locationName": "aliasName"
          }
        }
      }
    },
    "DeleteBotVersion": {
      "http": {
        "method": "DELETE",
        "requestUri": "/bots/{name}/versions/{version}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "name",
          "version"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "version": {
            "location": "uri",
            "locationName": "version"
          }
        }
      }
    },
    "DeleteIntent": {
      "http": {
        "method": "DELETE",
        "requestUri": "/intents/{name}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          }
        }
      }
    },
    "DeleteIntentVersion": {
      "http": {
        "method": "DELETE",
        "requestUri": "/intents/{name}/versions/{version}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "name",
          "version"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "version": {
            "location": "uri",
            "locationName": "version"
          }
        }
      }
    },
    "DeleteSlotType": {
      "http": {
        "method": "DELETE",
        "requestUri": "/slottypes/{name}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          }
        }
      }
    },
    "DeleteSlotTypeVersion": {
      "http": {
        "method": "DELETE",
        "requestUri": "/slottypes/{name}/version/{version}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "name",
          "version"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "version": {
            "location": "uri",
            "locationName": "version"
          }
        }
      }
    },
    "DeleteUtterances": {
      "http": {
        "method": "DELETE",
        "requestUri": "/bots/{botName}/utterances/{userId}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "botName",
          "userId"
        ],
        "members": {
          "botName": {
            "location": "uri",
            "locationName": "botName"
          },
          "userId": {
            "location": "uri",
            "locationName": "userId"
          }
        }
      }
    },
    "GetBot": {
      "http": {
        "method": "GET",
        "requestUri": "/bots/{name}/versions/{versionoralias}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "name",
          "versionOrAlias"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "versionOrAlias": {
            "location": "uri",
            "locationName": "versionoralias"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "name": {},
          "description": {},
          "intents": {
            "shape": "S6"
          },
          "clarificationPrompt": {
            "shape": "Sa"
          },
          "abortStatement": {
            "shape": "Sh"
          },
          "status": {},
          "failureReason": {},
          "lastUpdatedDate": {
            "type": "timestamp"
          },
          "createdDate": {
            "type": "timestamp"
          },
          "idleSessionTTLInSeconds": {
            "type": "integer"
          },
          "voiceId": {},
          "checksum": {},
          "version": {},
          "locale": {},
          "childDirected": {
            "type": "boolean"
          }
        }
      }
    },
    "GetBotAlias": {
      "http": {
        "method": "GET",
        "requestUri": "/bots/{botName}/aliases/{name}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "name",
          "botName"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "botName": {
            "location": "uri",
            "locationName": "botName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "name": {},
          "description": {},
          "botVersion": {},
          "botName": {},
          "lastUpdatedDate": {
            "type": "timestamp"
          },
          "createdDate": {
            "type": "timestamp"
          },
          "checksum": {}
        }
      }
    },
    "GetBotAliases": {
      "http": {
        "method": "GET",
        "requestUri": "/bots/{botName}/aliases/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "botName"
        ],
        "members": {
          "botName": {
            "location": "uri",
            "locationName": "botName"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "nameContains": {
            "location": "querystring",
            "locationName": "nameContains"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BotAliases": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "name": {},
                "description": {},
                "botVersion": {},
                "botName": {},
                "lastUpdatedDate": {
                  "type": "timestamp"
                },
                "createdDate": {
                  "type": "timestamp"
                },
                "checksum": {}
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "GetBotChannelAssociation": {
      "http": {
        "method": "GET",
        "requestUri": "/bots/{botName}/aliases/{aliasName}/channels/{name}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "name",
          "botName",
          "botAlias"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "botName": {
            "location": "uri",
            "locationName": "botName"
          },
          "botAlias": {
            "location": "uri",
            "locationName": "aliasName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "name": {},
          "description": {},
          "botAlias": {},
          "botName": {},
          "createdDate": {
            "type": "timestamp"
          },
          "type": {},
          "botConfiguration": {
            "shape": "S23"
          },
          "status": {},
          "failureReason": {}
        }
      }
    },
    "GetBotChannelAssociations": {
      "http": {
        "method": "GET",
        "requestUri": "/bots/{botName}/aliases/{aliasName}/channels/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "botName",
          "botAlias"
        ],
        "members": {
          "botName": {
            "location": "uri",
            "locationName": "botName"
          },
          "botAlias": {
            "location": "uri",
            "locationName": "aliasName"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "nameContains": {
            "location": "querystring",
            "locationName": "nameContains"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "botChannelAssociations": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "name": {},
                "description": {},
                "botAlias": {},
                "botName": {},
                "createdDate": {
                  "type": "timestamp"
                },
                "type": {},
                "botConfiguration": {
                  "shape": "S23"
                },
                "status": {},
                "failureReason": {}
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "GetBotVersions": {
      "http": {
        "method": "GET",
        "requestUri": "/bots/{name}/versions/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "bots": {
            "shape": "S2c"
          },
          "nextToken": {}
        }
      }
    },
    "GetBots": {
      "http": {
        "method": "GET",
        "requestUri": "/bots/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "nameContains": {
            "location": "querystring",
            "locationName": "nameContains"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "bots": {
            "shape": "S2c"
          },
          "nextToken": {}
        }
      }
    },
    "GetBuiltinIntent": {
      "http": {
        "method": "GET",
        "requestUri": "/builtins/intents/{signature}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "signature"
        ],
        "members": {
          "signature": {
            "location": "uri",
            "locationName": "signature"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "signature": {},
          "supportedLocales": {
            "shape": "S2i"
          },
          "slots": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "name": {}
              }
            }
          }
        }
      }
    },
    "GetBuiltinIntents": {
      "http": {
        "method": "GET",
        "requestUri": "/builtins/intents/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "locale": {
            "location": "querystring",
            "locationName": "locale"
          },
          "signatureContains": {
            "location": "querystring",
            "locationName": "signatureContains"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "intents": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "signature": {},
                "supportedLocales": {
                  "shape": "S2i"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "GetBuiltinSlotTypes": {
      "http": {
        "method": "GET",
        "requestUri": "/builtins/slottypes/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "locale": {
            "location": "querystring",
            "locationName": "locale"
          },
          "signatureContains": {
            "location": "querystring",
            "locationName": "signatureContains"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "slotTypes": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "signature": {},
                "supportedLocales": {
                  "shape": "S2i"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "GetExport": {
      "http": {
        "method": "GET",
        "requestUri": "/exports/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "name",
          "version",
          "resourceType",
          "exportType"
        ],
        "members": {
          "name": {
            "location": "querystring",
            "locationName": "name"
          },
          "version": {
            "location": "querystring",
            "locationName": "version"
          },
          "resourceType": {
            "location": "querystring",
            "locationName": "resourceType"
          },
          "exportType": {
            "location": "querystring",
            "locationName": "exportType"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "name": {},
          "version": {},
          "resourceType": {},
          "exportType": {},
          "exportStatus": {},
          "failureReason": {},
          "url": {}
        }
      }
    },
    "GetIntent": {
      "http": {
        "method": "GET",
        "requestUri": "/intents/{name}/versions/{version}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "name",
          "version"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "version": {
            "location": "uri",
            "locationName": "version"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "name": {},
          "description": {},
          "slots": {
            "shape": "Sp"
          },
          "sampleUtterances": {
            "shape": "Sx"
          },
          "confirmationPrompt": {
            "shape": "Sa"
          },
          "rejectionStatement": {
            "shape": "Sh"
          },
          "followUpPrompt": {
            "shape": "Sy"
          },
          "conclusionStatement": {
            "shape": "Sh"
          },
          "dialogCodeHook": {
            "shape": "Sz"
          },
          "fulfillmentActivity": {
            "shape": "S12"
          },
          "parentIntentSignature": {},
          "lastUpdatedDate": {
            "type": "timestamp"
          },
          "createdDate": {
            "type": "timestamp"
          },
          "version": {},
          "checksum": {}
        }
      }
    },
    "GetIntentVersions": {
      "http": {
        "method": "GET",
        "requestUri": "/intents/{name}/versions/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "intents": {
            "shape": "S34"
          },
          "nextToken": {}
        }
      }
    },
    "GetIntents": {
      "http": {
        "method": "GET",
        "requestUri": "/intents/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "nameContains": {
            "location": "querystring",
            "locationName": "nameContains"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "intents": {
            "shape": "S34"
          },
          "nextToken": {}
        }
      }
    },
    "GetSlotType": {
      "http": {
        "method": "GET",
        "requestUri": "/slottypes/{name}/versions/{version}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "name",
          "version"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "version": {
            "location": "uri",
            "locationName": "version"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "name": {},
          "description": {},
          "enumerationValues": {
            "shape": "S18"
          },
          "lastUpdatedDate": {
            "type": "timestamp"
          },
          "createdDate": {
            "type": "timestamp"
          },
          "version": {},
          "checksum": {},
          "valueSelectionStrategy": {}
        }
      }
    },
    "GetSlotTypeVersions": {
      "http": {
        "method": "GET",
        "requestUri": "/slottypes/{name}/versions/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "slotTypes": {
            "shape": "S3c"
          },
          "nextToken": {}
        }
      }
    },
    "GetSlotTypes": {
      "http": {
        "method": "GET",
        "requestUri": "/slottypes/",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {
            "location": "querystring",
            "locationName": "nextToken"
          },
          "maxResults": {
            "location": "querystring",
            "locationName": "maxResults",
            "type": "integer"
          },
          "nameContains": {
            "location": "querystring",
            "locationName": "nameContains"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "slotTypes": {
            "shape": "S3c"
          },
          "nextToken": {}
        }
      }
    },
    "GetUtterancesView": {
      "http": {
        "method": "GET",
        "requestUri": "/bots/{botname}/utterances?view=aggregation",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "botName",
          "botVersions",
          "statusType"
        ],
        "members": {
          "botName": {
            "location": "uri",
            "locationName": "botname"
          },
          "botVersions": {
            "location": "querystring",
            "locationName": "bot_versions",
            "type": "list",
            "member": {}
          },
          "statusType": {
            "location": "querystring",
            "locationName": "status_type"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "botName": {},
          "utterances": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "botVersion": {},
                "utterances": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "utteranceString": {},
                      "count": {
                        "type": "integer"
                      },
                      "distinctUsers": {
                        "type": "integer"
                      },
                      "firstUtteredDate": {
                        "type": "timestamp"
                      },
                      "lastUtteredDate": {
                        "type": "timestamp"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "PutBot": {
      "http": {
        "method": "PUT",
        "requestUri": "/bots/{name}/versions/$LATEST",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "name",
          "locale",
          "childDirected"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "description": {},
          "intents": {
            "shape": "S6"
          },
          "clarificationPrompt": {
            "shape": "Sa"
          },
          "abortStatement": {
            "shape": "Sh"
          },
          "idleSessionTTLInSeconds": {
            "type": "integer"
          },
          "voiceId": {},
          "checksum": {},
          "processBehavior": {},
          "locale": {},
          "childDirected": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "name": {},
          "description": {},
          "intents": {
            "shape": "S6"
          },
          "clarificationPrompt": {
            "shape": "Sa"
          },
          "abortStatement": {
            "shape": "Sh"
          },
          "status": {},
          "failureReason": {},
          "lastUpdatedDate": {
            "type": "timestamp"
          },
          "createdDate": {
            "type": "timestamp"
          },
          "idleSessionTTLInSeconds": {
            "type": "integer"
          },
          "voiceId": {},
          "checksum": {},
          "version": {},
          "locale": {},
          "childDirected": {
            "type": "boolean"
          }
        }
      }
    },
    "PutBotAlias": {
      "http": {
        "method": "PUT",
        "requestUri": "/bots/{botName}/aliases/{name}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "name",
          "botVersion",
          "botName"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "description": {},
          "botVersion": {},
          "botName": {
            "location": "uri",
            "locationName": "botName"
          },
          "checksum": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "name": {},
          "description": {},
          "botVersion": {},
          "botName": {},
          "lastUpdatedDate": {
            "type": "timestamp"
          },
          "createdDate": {
            "type": "timestamp"
          },
          "checksum": {}
        }
      }
    },
    "PutIntent": {
      "http": {
        "method": "PUT",
        "requestUri": "/intents/{name}/versions/$LATEST",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "description": {},
          "slots": {
            "shape": "Sp"
          },
          "sampleUtterances": {
            "shape": "Sx"
          },
          "confirmationPrompt": {
            "shape": "Sa"
          },
          "rejectionStatement": {
            "shape": "Sh"
          },
          "followUpPrompt": {
            "shape": "Sy"
          },
          "conclusionStatement": {
            "shape": "Sh"
          },
          "dialogCodeHook": {
            "shape": "Sz"
          },
          "fulfillmentActivity": {
            "shape": "S12"
          },
          "parentIntentSignature": {},
          "checksum": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "name": {},
          "description": {},
          "slots": {
            "shape": "Sp"
          },
          "sampleUtterances": {
            "shape": "Sx"
          },
          "confirmationPrompt": {
            "shape": "Sa"
          },
          "rejectionStatement": {
            "shape": "Sh"
          },
          "followUpPrompt": {
            "shape": "Sy"
          },
          "conclusionStatement": {
            "shape": "Sh"
          },
          "dialogCodeHook": {
            "shape": "Sz"
          },
          "fulfillmentActivity": {
            "shape": "S12"
          },
          "parentIntentSignature": {},
          "lastUpdatedDate": {
            "type": "timestamp"
          },
          "createdDate": {
            "type": "timestamp"
          },
          "version": {},
          "checksum": {}
        }
      }
    },
    "PutSlotType": {
      "http": {
        "method": "PUT",
        "requestUri": "/slottypes/{name}/versions/$LATEST",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "name"
        ],
        "members": {
          "name": {
            "location": "uri",
            "locationName": "name"
          },
          "description": {},
          "enumerationValues": {
            "shape": "S18"
          },
          "checksum": {},
          "valueSelectionStrategy": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "name": {},
          "description": {},
          "enumerationValues": {
            "shape": "S18"
          },
          "lastUpdatedDate": {
            "type": "timestamp"
          },
          "createdDate": {
            "type": "timestamp"
          },
          "version": {},
          "checksum": {},
          "valueSelectionStrategy": {}
        }
      }
    }
  },
  "shapes": {
    "S6": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "intentName",
          "intentVersion"
        ],
        "members": {
          "intentName": {},
          "intentVersion": {}
        }
      }
    },
    "Sa": {
      "type": "structure",
      "required": [
        "messages",
        "maxAttempts"
      ],
      "members": {
        "messages": {
          "shape": "Sb"
        },
        "maxAttempts": {
          "type": "integer"
        },
        "responseCard": {}
      }
    },
    "Sb": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "contentType",
          "content"
        ],
        "members": {
          "contentType": {},
          "content": {}
        }
      }
    },
    "Sh": {
      "type": "structure",
      "required": [
        "messages"
      ],
      "members": {
        "messages": {
          "shape": "Sb"
        },
        "responseCard": {}
      }
    },
    "Sp": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "name",
          "slotConstraint"
        ],
        "members": {
          "name": {},
          "description": {},
          "slotConstraint": {},
          "slotType": {},
          "slotTypeVersion": {},
          "valueElicitationPrompt": {
            "shape": "Sa"
          },
          "priority": {
            "type": "integer"
          },
          "sampleUtterances": {
            "type": "list",
            "member": {}
          },
          "responseCard": {}
        }
      }
    },
    "Sx": {
      "type": "list",
      "member": {}
    },
    "Sy": {
      "type": "structure",
      "required": [
        "prompt",
        "rejectionStatement"
      ],
      "members": {
        "prompt": {
          "shape": "Sa"
        },
        "rejectionStatement": {
          "shape": "Sh"
        }
      }
    },
    "Sz": {
      "type": "structure",
      "required": [
        "uri",
        "messageVersion"
      ],
      "members": {
        "uri": {},
        "messageVersion": {}
      }
    },
    "S12": {
      "type": "structure",
      "required": [
        "type"
      ],
      "members": {
        "type": {},
        "codeHook": {
          "shape": "Sz"
        }
      }
    },
    "S18": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "value"
        ],
        "members": {
          "value": {},
          "synonyms": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "S23": {
      "type": "map",
      "key": {},
      "value": {},
      "sensitive": true
    },
    "S2c": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "name": {},
          "description": {},
          "status": {},
          "lastUpdatedDate": {
            "type": "timestamp"
          },
          "createdDate": {
            "type": "timestamp"
          },
          "version": {}
        }
      }
    },
    "S2i": {
      "type": "list",
      "member": {}
    },
    "S34": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "name": {},
          "description": {},
          "lastUpdatedDate": {
            "type": "timestamp"
          },
          "createdDate": {
            "type": "timestamp"
          },
          "version": {}
        }
      }
    },
    "S3c": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "name": {},
          "description": {},
          "lastUpdatedDate": {
            "type": "timestamp"
          },
          "createdDate": {
            "type": "timestamp"
          },
          "version": {}
        }
      }
    }
  }
}
},{}],99:[function(require,module,exports){
module.exports={
  "pagination": {
    "GetBotAliases": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    },
    "GetBotChannelAssociations": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    },
    "GetBotVersions": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    },
    "GetBots": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    },
    "GetBuiltinIntents": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    },
    "GetBuiltinSlotTypes": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    },
    "GetIntentVersions": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    },
    "GetIntents": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    },
    "GetSlotTypeVersions": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    },
    "GetSlotTypes": {
      "input_token": "nextToken",
      "output_token": "nextToken",
      "limit_key": "maxResults"
    }
  }
}

},{}],100:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2014-03-28",
    "endpointPrefix": "logs",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceFullName": "Amazon CloudWatch Logs",
    "signatureVersion": "v4",
    "targetPrefix": "Logs_20140328",
    "uid": "logs-2014-03-28"
  },
  "operations": {
    "AssociateKmsKey": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName",
          "kmsKeyId"
        ],
        "members": {
          "logGroupName": {},
          "kmsKeyId": {}
        }
      }
    },
    "CancelExportTask": {
      "input": {
        "type": "structure",
        "required": [
          "taskId"
        ],
        "members": {
          "taskId": {}
        }
      }
    },
    "CreateExportTask": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName",
          "from",
          "to",
          "destination"
        ],
        "members": {
          "taskName": {},
          "logGroupName": {},
          "logStreamNamePrefix": {},
          "from": {
            "type": "long"
          },
          "to": {
            "type": "long"
          },
          "destination": {},
          "destinationPrefix": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "taskId": {}
        }
      }
    },
    "CreateLogGroup": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName"
        ],
        "members": {
          "logGroupName": {},
          "kmsKeyId": {},
          "tags": {
            "shape": "Se"
          }
        }
      }
    },
    "CreateLogStream": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName",
          "logStreamName"
        ],
        "members": {
          "logGroupName": {},
          "logStreamName": {}
        }
      }
    },
    "DeleteDestination": {
      "input": {
        "type": "structure",
        "required": [
          "destinationName"
        ],
        "members": {
          "destinationName": {}
        }
      }
    },
    "DeleteLogGroup": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName"
        ],
        "members": {
          "logGroupName": {}
        }
      }
    },
    "DeleteLogStream": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName",
          "logStreamName"
        ],
        "members": {
          "logGroupName": {},
          "logStreamName": {}
        }
      }
    },
    "DeleteMetricFilter": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName",
          "filterName"
        ],
        "members": {
          "logGroupName": {},
          "filterName": {}
        }
      }
    },
    "DeleteResourcePolicy": {
      "input": {
        "type": "structure",
        "members": {
          "policyName": {}
        }
      }
    },
    "DeleteRetentionPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName"
        ],
        "members": {
          "logGroupName": {}
        }
      }
    },
    "DeleteSubscriptionFilter": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName",
          "filterName"
        ],
        "members": {
          "logGroupName": {},
          "filterName": {}
        }
      }
    },
    "DescribeDestinations": {
      "input": {
        "type": "structure",
        "members": {
          "DestinationNamePrefix": {},
          "nextToken": {},
          "limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "destinations": {
            "type": "list",
            "member": {
              "shape": "Sx"
            }
          },
          "nextToken": {}
        }
      }
    },
    "DescribeExportTasks": {
      "input": {
        "type": "structure",
        "members": {
          "taskId": {},
          "statusCode": {},
          "nextToken": {},
          "limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "exportTasks": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "taskId": {},
                "taskName": {},
                "logGroupName": {},
                "from": {
                  "type": "long"
                },
                "to": {
                  "type": "long"
                },
                "destination": {},
                "destinationPrefix": {},
                "status": {
                  "type": "structure",
                  "members": {
                    "code": {},
                    "message": {}
                  }
                },
                "executionInfo": {
                  "type": "structure",
                  "members": {
                    "creationTime": {
                      "type": "long"
                    },
                    "completionTime": {
                      "type": "long"
                    }
                  }
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "DescribeLogGroups": {
      "input": {
        "type": "structure",
        "members": {
          "logGroupNamePrefix": {},
          "nextToken": {},
          "limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "logGroups": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "logGroupName": {},
                "creationTime": {
                  "type": "long"
                },
                "retentionInDays": {
                  "type": "integer"
                },
                "metricFilterCount": {
                  "type": "integer"
                },
                "arn": {},
                "storedBytes": {
                  "type": "long"
                },
                "kmsKeyId": {}
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "DescribeLogStreams": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName"
        ],
        "members": {
          "logGroupName": {},
          "logStreamNamePrefix": {},
          "orderBy": {},
          "descending": {
            "type": "boolean"
          },
          "nextToken": {},
          "limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "logStreams": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "logStreamName": {},
                "creationTime": {
                  "type": "long"
                },
                "firstEventTimestamp": {
                  "type": "long"
                },
                "lastEventTimestamp": {
                  "type": "long"
                },
                "lastIngestionTime": {
                  "type": "long"
                },
                "uploadSequenceToken": {},
                "arn": {},
                "storedBytes": {
                  "type": "long"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "DescribeMetricFilters": {
      "input": {
        "type": "structure",
        "members": {
          "logGroupName": {},
          "filterNamePrefix": {},
          "nextToken": {},
          "limit": {
            "type": "integer"
          },
          "metricName": {},
          "metricNamespace": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "metricFilters": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "filterName": {},
                "filterPattern": {},
                "metricTransformations": {
                  "shape": "S1v"
                },
                "creationTime": {
                  "type": "long"
                },
                "logGroupName": {}
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "DescribeResourcePolicies": {
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {},
          "limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "resourcePolicies": {
            "type": "list",
            "member": {
              "shape": "S22"
            }
          },
          "nextToken": {}
        }
      }
    },
    "DescribeSubscriptionFilters": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName"
        ],
        "members": {
          "logGroupName": {},
          "filterNamePrefix": {},
          "nextToken": {},
          "limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "subscriptionFilters": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "filterName": {},
                "logGroupName": {},
                "filterPattern": {},
                "destinationArn": {},
                "roleArn": {},
                "distribution": {},
                "creationTime": {
                  "type": "long"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "DisassociateKmsKey": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName"
        ],
        "members": {
          "logGroupName": {}
        }
      }
    },
    "FilterLogEvents": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName"
        ],
        "members": {
          "logGroupName": {},
          "logStreamNames": {
            "type": "list",
            "member": {}
          },
          "startTime": {
            "type": "long"
          },
          "endTime": {
            "type": "long"
          },
          "filterPattern": {},
          "nextToken": {},
          "limit": {
            "type": "integer"
          },
          "interleaved": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "events": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "logStreamName": {},
                "timestamp": {
                  "type": "long"
                },
                "message": {},
                "ingestionTime": {
                  "type": "long"
                },
                "eventId": {}
              }
            }
          },
          "searchedLogStreams": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "logStreamName": {},
                "searchedCompletely": {
                  "type": "boolean"
                }
              }
            }
          },
          "nextToken": {}
        }
      }
    },
    "GetLogEvents": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName",
          "logStreamName"
        ],
        "members": {
          "logGroupName": {},
          "logStreamName": {},
          "startTime": {
            "type": "long"
          },
          "endTime": {
            "type": "long"
          },
          "nextToken": {},
          "limit": {
            "type": "integer"
          },
          "startFromHead": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "events": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "timestamp": {
                  "type": "long"
                },
                "message": {},
                "ingestionTime": {
                  "type": "long"
                }
              }
            }
          },
          "nextForwardToken": {},
          "nextBackwardToken": {}
        }
      }
    },
    "ListTagsLogGroup": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName"
        ],
        "members": {
          "logGroupName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "tags": {
            "shape": "Se"
          }
        }
      }
    },
    "PutDestination": {
      "input": {
        "type": "structure",
        "required": [
          "destinationName",
          "targetArn",
          "roleArn"
        ],
        "members": {
          "destinationName": {},
          "targetArn": {},
          "roleArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "destination": {
            "shape": "Sx"
          }
        }
      }
    },
    "PutDestinationPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "destinationName",
          "accessPolicy"
        ],
        "members": {
          "destinationName": {},
          "accessPolicy": {}
        }
      }
    },
    "PutLogEvents": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName",
          "logStreamName",
          "logEvents"
        ],
        "members": {
          "logGroupName": {},
          "logStreamName": {},
          "logEvents": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "timestamp",
                "message"
              ],
              "members": {
                "timestamp": {
                  "type": "long"
                },
                "message": {}
              }
            }
          },
          "sequenceToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "nextSequenceToken": {},
          "rejectedLogEventsInfo": {
            "type": "structure",
            "members": {
              "tooNewLogEventStartIndex": {
                "type": "integer"
              },
              "tooOldLogEventEndIndex": {
                "type": "integer"
              },
              "expiredLogEventEndIndex": {
                "type": "integer"
              }
            }
          }
        }
      }
    },
    "PutMetricFilter": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName",
          "filterName",
          "filterPattern",
          "metricTransformations"
        ],
        "members": {
          "logGroupName": {},
          "filterName": {},
          "filterPattern": {},
          "metricTransformations": {
            "shape": "S1v"
          }
        }
      }
    },
    "PutResourcePolicy": {
      "input": {
        "type": "structure",
        "members": {
          "policyName": {},
          "policyDocument": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "resourcePolicy": {
            "shape": "S22"
          }
        }
      }
    },
    "PutRetentionPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName",
          "retentionInDays"
        ],
        "members": {
          "logGroupName": {},
          "retentionInDays": {
            "type": "integer"
          }
        }
      }
    },
    "PutSubscriptionFilter": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName",
          "filterName",
          "filterPattern",
          "destinationArn"
        ],
        "members": {
          "logGroupName": {},
          "filterName": {},
          "filterPattern": {},
          "destinationArn": {},
          "roleArn": {},
          "distribution": {}
        }
      }
    },
    "TagLogGroup": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName",
          "tags"
        ],
        "members": {
          "logGroupName": {},
          "tags": {
            "shape": "Se"
          }
        }
      }
    },
    "TestMetricFilter": {
      "input": {
        "type": "structure",
        "required": [
          "filterPattern",
          "logEventMessages"
        ],
        "members": {
          "filterPattern": {},
          "logEventMessages": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "matches": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "eventNumber": {
                  "type": "long"
                },
                "eventMessage": {},
                "extractedValues": {
                  "type": "map",
                  "key": {},
                  "value": {}
                }
              }
            }
          }
        }
      }
    },
    "UntagLogGroup": {
      "input": {
        "type": "structure",
        "required": [
          "logGroupName",
          "tags"
        ],
        "members": {
          "logGroupName": {},
          "tags": {
            "type": "list",
            "member": {}
          }
        }
      }
    }
  },
  "shapes": {
    "Se": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "Sx": {
      "type": "structure",
      "members": {
        "destinationName": {},
        "targetArn": {},
        "roleArn": {},
        "accessPolicy": {},
        "arn": {},
        "creationTime": {
          "type": "long"
        }
      }
    },
    "S1v": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "metricName",
          "metricNamespace",
          "metricValue"
        ],
        "members": {
          "metricName": {},
          "metricNamespace": {},
          "metricValue": {},
          "defaultValue": {
            "type": "double"
          }
        }
      }
    },
    "S22": {
      "type": "structure",
      "members": {
        "policyName": {},
        "policyDocument": {},
        "lastUpdatedTime": {
          "type": "long"
        }
      }
    }
  }
}
},{}],101:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeDestinations": {
      "input_token": "nextToken",
      "limit_key": "limit",
      "output_token": "nextToken",
      "result_key": "destinations"
    },
    "DescribeLogGroups": {
      "input_token": "nextToken",
      "limit_key": "limit",
      "output_token": "nextToken",
      "result_key": "logGroups"
    },
    "DescribeLogStreams": {
      "input_token": "nextToken",
      "limit_key": "limit",
      "output_token": "nextToken",
      "result_key": "logStreams"
    },
    "DescribeMetricFilters": {
      "input_token": "nextToken",
      "limit_key": "limit",
      "output_token": "nextToken",
      "result_key": "metricFilters"
    },
    "DescribeSubscriptionFilters": {
      "input_token": "nextToken",
      "limit_key": "limit",
      "output_token": "nextToken",
      "result_key": "subscriptionFilters"
    },
    "FilterLogEvents": {
      "input_token": "nextToken",
      "limit_key": "limit",
      "output_token": "nextToken",
      "result_key": [
        "events",
        "searchedLogStreams"
      ]
    },
    "GetLogEvents": {
      "input_token": "nextToken",
      "limit_key": "limit",
      "output_token": "nextForwardToken",
      "result_key": "events"
    }
  }
}
},{}],102:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "uid": "machinelearning-2014-12-12",
    "apiVersion": "2014-12-12",
    "endpointPrefix": "machinelearning",
    "jsonVersion": "1.1",
    "serviceFullName": "Amazon Machine Learning",
    "signatureVersion": "v4",
    "targetPrefix": "AmazonML_20141212",
    "protocol": "json"
  },
  "operations": {
    "AddTags": {
      "input": {
        "type": "structure",
        "required": [
          "Tags",
          "ResourceId",
          "ResourceType"
        ],
        "members": {
          "Tags": {
            "shape": "S2"
          },
          "ResourceId": {},
          "ResourceType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResourceId": {},
          "ResourceType": {}
        }
      }
    },
    "CreateBatchPrediction": {
      "input": {
        "type": "structure",
        "required": [
          "BatchPredictionId",
          "MLModelId",
          "BatchPredictionDataSourceId",
          "OutputUri"
        ],
        "members": {
          "BatchPredictionId": {},
          "BatchPredictionName": {},
          "MLModelId": {},
          "BatchPredictionDataSourceId": {},
          "OutputUri": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BatchPredictionId": {}
        }
      }
    },
    "CreateDataSourceFromRDS": {
      "input": {
        "type": "structure",
        "required": [
          "DataSourceId",
          "RDSData",
          "RoleARN"
        ],
        "members": {
          "DataSourceId": {},
          "DataSourceName": {},
          "RDSData": {
            "type": "structure",
            "required": [
              "DatabaseInformation",
              "SelectSqlQuery",
              "DatabaseCredentials",
              "S3StagingLocation",
              "ResourceRole",
              "ServiceRole",
              "SubnetId",
              "SecurityGroupIds"
            ],
            "members": {
              "DatabaseInformation": {
                "shape": "Sf"
              },
              "SelectSqlQuery": {},
              "DatabaseCredentials": {
                "type": "structure",
                "required": [
                  "Username",
                  "Password"
                ],
                "members": {
                  "Username": {},
                  "Password": {}
                }
              },
              "S3StagingLocation": {},
              "DataRearrangement": {},
              "DataSchema": {},
              "DataSchemaUri": {},
              "ResourceRole": {},
              "ServiceRole": {},
              "SubnetId": {},
              "SecurityGroupIds": {
                "type": "list",
                "member": {}
              }
            }
          },
          "RoleARN": {},
          "ComputeStatistics": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DataSourceId": {}
        }
      }
    },
    "CreateDataSourceFromRedshift": {
      "input": {
        "type": "structure",
        "required": [
          "DataSourceId",
          "DataSpec",
          "RoleARN"
        ],
        "members": {
          "DataSourceId": {},
          "DataSourceName": {},
          "DataSpec": {
            "type": "structure",
            "required": [
              "DatabaseInformation",
              "SelectSqlQuery",
              "DatabaseCredentials",
              "S3StagingLocation"
            ],
            "members": {
              "DatabaseInformation": {
                "shape": "Sy"
              },
              "SelectSqlQuery": {},
              "DatabaseCredentials": {
                "type": "structure",
                "required": [
                  "Username",
                  "Password"
                ],
                "members": {
                  "Username": {},
                  "Password": {}
                }
              },
              "S3StagingLocation": {},
              "DataRearrangement": {},
              "DataSchema": {},
              "DataSchemaUri": {}
            }
          },
          "RoleARN": {},
          "ComputeStatistics": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DataSourceId": {}
        }
      }
    },
    "CreateDataSourceFromS3": {
      "input": {
        "type": "structure",
        "required": [
          "DataSourceId",
          "DataSpec"
        ],
        "members": {
          "DataSourceId": {},
          "DataSourceName": {},
          "DataSpec": {
            "type": "structure",
            "required": [
              "DataLocationS3"
            ],
            "members": {
              "DataLocationS3": {},
              "DataRearrangement": {},
              "DataSchema": {},
              "DataSchemaLocationS3": {}
            }
          },
          "ComputeStatistics": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DataSourceId": {}
        }
      }
    },
    "CreateEvaluation": {
      "input": {
        "type": "structure",
        "required": [
          "EvaluationId",
          "MLModelId",
          "EvaluationDataSourceId"
        ],
        "members": {
          "EvaluationId": {},
          "EvaluationName": {},
          "MLModelId": {},
          "EvaluationDataSourceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "EvaluationId": {}
        }
      }
    },
    "CreateMLModel": {
      "input": {
        "type": "structure",
        "required": [
          "MLModelId",
          "MLModelType",
          "TrainingDataSourceId"
        ],
        "members": {
          "MLModelId": {},
          "MLModelName": {},
          "MLModelType": {},
          "Parameters": {
            "shape": "S1d"
          },
          "TrainingDataSourceId": {},
          "Recipe": {},
          "RecipeUri": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "MLModelId": {}
        }
      }
    },
    "CreateRealtimeEndpoint": {
      "input": {
        "type": "structure",
        "required": [
          "MLModelId"
        ],
        "members": {
          "MLModelId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "MLModelId": {},
          "RealtimeEndpointInfo": {
            "shape": "S1j"
          }
        }
      }
    },
    "DeleteBatchPrediction": {
      "input": {
        "type": "structure",
        "required": [
          "BatchPredictionId"
        ],
        "members": {
          "BatchPredictionId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BatchPredictionId": {}
        }
      }
    },
    "DeleteDataSource": {
      "input": {
        "type": "structure",
        "required": [
          "DataSourceId"
        ],
        "members": {
          "DataSourceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DataSourceId": {}
        }
      }
    },
    "DeleteEvaluation": {
      "input": {
        "type": "structure",
        "required": [
          "EvaluationId"
        ],
        "members": {
          "EvaluationId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "EvaluationId": {}
        }
      }
    },
    "DeleteMLModel": {
      "input": {
        "type": "structure",
        "required": [
          "MLModelId"
        ],
        "members": {
          "MLModelId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "MLModelId": {}
        }
      }
    },
    "DeleteRealtimeEndpoint": {
      "input": {
        "type": "structure",
        "required": [
          "MLModelId"
        ],
        "members": {
          "MLModelId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "MLModelId": {},
          "RealtimeEndpointInfo": {
            "shape": "S1j"
          }
        }
      }
    },
    "DeleteTags": {
      "input": {
        "type": "structure",
        "required": [
          "TagKeys",
          "ResourceId",
          "ResourceType"
        ],
        "members": {
          "TagKeys": {
            "type": "list",
            "member": {}
          },
          "ResourceId": {},
          "ResourceType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResourceId": {},
          "ResourceType": {}
        }
      }
    },
    "DescribeBatchPredictions": {
      "input": {
        "type": "structure",
        "members": {
          "FilterVariable": {},
          "EQ": {},
          "GT": {},
          "LT": {},
          "GE": {},
          "LE": {},
          "NE": {},
          "Prefix": {},
          "SortOrder": {},
          "NextToken": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Results": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "BatchPredictionId": {},
                "MLModelId": {},
                "BatchPredictionDataSourceId": {},
                "InputDataLocationS3": {},
                "CreatedByIamUser": {},
                "CreatedAt": {
                  "type": "timestamp"
                },
                "LastUpdatedAt": {
                  "type": "timestamp"
                },
                "Name": {},
                "Status": {},
                "OutputUri": {},
                "Message": {},
                "ComputeTime": {
                  "type": "long"
                },
                "FinishedAt": {
                  "type": "timestamp"
                },
                "StartedAt": {
                  "type": "timestamp"
                },
                "TotalRecordCount": {
                  "type": "long"
                },
                "InvalidRecordCount": {
                  "type": "long"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeDataSources": {
      "input": {
        "type": "structure",
        "members": {
          "FilterVariable": {},
          "EQ": {},
          "GT": {},
          "LT": {},
          "GE": {},
          "LE": {},
          "NE": {},
          "Prefix": {},
          "SortOrder": {},
          "NextToken": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Results": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "DataSourceId": {},
                "DataLocationS3": {},
                "DataRearrangement": {},
                "CreatedByIamUser": {},
                "CreatedAt": {
                  "type": "timestamp"
                },
                "LastUpdatedAt": {
                  "type": "timestamp"
                },
                "DataSizeInBytes": {
                  "type": "long"
                },
                "NumberOfFiles": {
                  "type": "long"
                },
                "Name": {},
                "Status": {},
                "Message": {},
                "RedshiftMetadata": {
                  "shape": "S2i"
                },
                "RDSMetadata": {
                  "shape": "S2j"
                },
                "RoleARN": {},
                "ComputeStatistics": {
                  "type": "boolean"
                },
                "ComputeTime": {
                  "type": "long"
                },
                "FinishedAt": {
                  "type": "timestamp"
                },
                "StartedAt": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeEvaluations": {
      "input": {
        "type": "structure",
        "members": {
          "FilterVariable": {},
          "EQ": {},
          "GT": {},
          "LT": {},
          "GE": {},
          "LE": {},
          "NE": {},
          "Prefix": {},
          "SortOrder": {},
          "NextToken": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Results": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "EvaluationId": {},
                "MLModelId": {},
                "EvaluationDataSourceId": {},
                "InputDataLocationS3": {},
                "CreatedByIamUser": {},
                "CreatedAt": {
                  "type": "timestamp"
                },
                "LastUpdatedAt": {
                  "type": "timestamp"
                },
                "Name": {},
                "Status": {},
                "PerformanceMetrics": {
                  "shape": "S2q"
                },
                "Message": {},
                "ComputeTime": {
                  "type": "long"
                },
                "FinishedAt": {
                  "type": "timestamp"
                },
                "StartedAt": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeMLModels": {
      "input": {
        "type": "structure",
        "members": {
          "FilterVariable": {},
          "EQ": {},
          "GT": {},
          "LT": {},
          "GE": {},
          "LE": {},
          "NE": {},
          "Prefix": {},
          "SortOrder": {},
          "NextToken": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Results": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "MLModelId": {},
                "TrainingDataSourceId": {},
                "CreatedByIamUser": {},
                "CreatedAt": {
                  "type": "timestamp"
                },
                "LastUpdatedAt": {
                  "type": "timestamp"
                },
                "Name": {},
                "Status": {},
                "SizeInBytes": {
                  "type": "long"
                },
                "EndpointInfo": {
                  "shape": "S1j"
                },
                "TrainingParameters": {
                  "shape": "S1d"
                },
                "InputDataLocationS3": {},
                "Algorithm": {},
                "MLModelType": {},
                "ScoreThreshold": {
                  "type": "float"
                },
                "ScoreThresholdLastUpdatedAt": {
                  "type": "timestamp"
                },
                "Message": {},
                "ComputeTime": {
                  "type": "long"
                },
                "FinishedAt": {
                  "type": "timestamp"
                },
                "StartedAt": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeTags": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceId",
          "ResourceType"
        ],
        "members": {
          "ResourceId": {},
          "ResourceType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResourceId": {},
          "ResourceType": {},
          "Tags": {
            "shape": "S2"
          }
        }
      }
    },
    "GetBatchPrediction": {
      "input": {
        "type": "structure",
        "required": [
          "BatchPredictionId"
        ],
        "members": {
          "BatchPredictionId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BatchPredictionId": {},
          "MLModelId": {},
          "BatchPredictionDataSourceId": {},
          "InputDataLocationS3": {},
          "CreatedByIamUser": {},
          "CreatedAt": {
            "type": "timestamp"
          },
          "LastUpdatedAt": {
            "type": "timestamp"
          },
          "Name": {},
          "Status": {},
          "OutputUri": {},
          "LogUri": {},
          "Message": {},
          "ComputeTime": {
            "type": "long"
          },
          "FinishedAt": {
            "type": "timestamp"
          },
          "StartedAt": {
            "type": "timestamp"
          },
          "TotalRecordCount": {
            "type": "long"
          },
          "InvalidRecordCount": {
            "type": "long"
          }
        }
      }
    },
    "GetDataSource": {
      "input": {
        "type": "structure",
        "required": [
          "DataSourceId"
        ],
        "members": {
          "DataSourceId": {},
          "Verbose": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DataSourceId": {},
          "DataLocationS3": {},
          "DataRearrangement": {},
          "CreatedByIamUser": {},
          "CreatedAt": {
            "type": "timestamp"
          },
          "LastUpdatedAt": {
            "type": "timestamp"
          },
          "DataSizeInBytes": {
            "type": "long"
          },
          "NumberOfFiles": {
            "type": "long"
          },
          "Name": {},
          "Status": {},
          "LogUri": {},
          "Message": {},
          "RedshiftMetadata": {
            "shape": "S2i"
          },
          "RDSMetadata": {
            "shape": "S2j"
          },
          "RoleARN": {},
          "ComputeStatistics": {
            "type": "boolean"
          },
          "ComputeTime": {
            "type": "long"
          },
          "FinishedAt": {
            "type": "timestamp"
          },
          "StartedAt": {
            "type": "timestamp"
          },
          "DataSourceSchema": {}
        }
      }
    },
    "GetEvaluation": {
      "input": {
        "type": "structure",
        "required": [
          "EvaluationId"
        ],
        "members": {
          "EvaluationId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "EvaluationId": {},
          "MLModelId": {},
          "EvaluationDataSourceId": {},
          "InputDataLocationS3": {},
          "CreatedByIamUser": {},
          "CreatedAt": {
            "type": "timestamp"
          },
          "LastUpdatedAt": {
            "type": "timestamp"
          },
          "Name": {},
          "Status": {},
          "PerformanceMetrics": {
            "shape": "S2q"
          },
          "LogUri": {},
          "Message": {},
          "ComputeTime": {
            "type": "long"
          },
          "FinishedAt": {
            "type": "timestamp"
          },
          "StartedAt": {
            "type": "timestamp"
          }
        }
      }
    },
    "GetMLModel": {
      "input": {
        "type": "structure",
        "required": [
          "MLModelId"
        ],
        "members": {
          "MLModelId": {},
          "Verbose": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "MLModelId": {},
          "TrainingDataSourceId": {},
          "CreatedByIamUser": {},
          "CreatedAt": {
            "type": "timestamp"
          },
          "LastUpdatedAt": {
            "type": "timestamp"
          },
          "Name": {},
          "Status": {},
          "SizeInBytes": {
            "type": "long"
          },
          "EndpointInfo": {
            "shape": "S1j"
          },
          "TrainingParameters": {
            "shape": "S1d"
          },
          "InputDataLocationS3": {},
          "MLModelType": {},
          "ScoreThreshold": {
            "type": "float"
          },
          "ScoreThresholdLastUpdatedAt": {
            "type": "timestamp"
          },
          "LogUri": {},
          "Message": {},
          "ComputeTime": {
            "type": "long"
          },
          "FinishedAt": {
            "type": "timestamp"
          },
          "StartedAt": {
            "type": "timestamp"
          },
          "Recipe": {},
          "Schema": {}
        }
      }
    },
    "Predict": {
      "input": {
        "type": "structure",
        "required": [
          "MLModelId",
          "Record",
          "PredictEndpoint"
        ],
        "members": {
          "MLModelId": {},
          "Record": {
            "type": "map",
            "key": {},
            "value": {}
          },
          "PredictEndpoint": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Prediction": {
            "type": "structure",
            "members": {
              "predictedLabel": {},
              "predictedValue": {
                "type": "float"
              },
              "predictedScores": {
                "type": "map",
                "key": {},
                "value": {
                  "type": "float"
                }
              },
              "details": {
                "type": "map",
                "key": {},
                "value": {}
              }
            }
          }
        }
      }
    },
    "UpdateBatchPrediction": {
      "input": {
        "type": "structure",
        "required": [
          "BatchPredictionId",
          "BatchPredictionName"
        ],
        "members": {
          "BatchPredictionId": {},
          "BatchPredictionName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BatchPredictionId": {}
        }
      }
    },
    "UpdateDataSource": {
      "input": {
        "type": "structure",
        "required": [
          "DataSourceId",
          "DataSourceName"
        ],
        "members": {
          "DataSourceId": {},
          "DataSourceName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DataSourceId": {}
        }
      }
    },
    "UpdateEvaluation": {
      "input": {
        "type": "structure",
        "required": [
          "EvaluationId",
          "EvaluationName"
        ],
        "members": {
          "EvaluationId": {},
          "EvaluationName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "EvaluationId": {}
        }
      }
    },
    "UpdateMLModel": {
      "input": {
        "type": "structure",
        "required": [
          "MLModelId"
        ],
        "members": {
          "MLModelId": {},
          "MLModelName": {},
          "ScoreThreshold": {
            "type": "float"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "MLModelId": {}
        }
      }
    }
  },
  "shapes": {
    "S2": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "Sf": {
      "type": "structure",
      "required": [
        "InstanceIdentifier",
        "DatabaseName"
      ],
      "members": {
        "InstanceIdentifier": {},
        "DatabaseName": {}
      }
    },
    "Sy": {
      "type": "structure",
      "required": [
        "DatabaseName",
        "ClusterIdentifier"
      ],
      "members": {
        "DatabaseName": {},
        "ClusterIdentifier": {}
      }
    },
    "S1d": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S1j": {
      "type": "structure",
      "members": {
        "PeakRequestsPerSecond": {
          "type": "integer"
        },
        "CreatedAt": {
          "type": "timestamp"
        },
        "EndpointUrl": {},
        "EndpointStatus": {}
      }
    },
    "S2i": {
      "type": "structure",
      "members": {
        "RedshiftDatabase": {
          "shape": "Sy"
        },
        "DatabaseUserName": {},
        "SelectSqlQuery": {}
      }
    },
    "S2j": {
      "type": "structure",
      "members": {
        "Database": {
          "shape": "Sf"
        },
        "DatabaseUserName": {},
        "SelectSqlQuery": {},
        "ResourceRole": {},
        "ServiceRole": {},
        "DataPipelineId": {}
      }
    },
    "S2q": {
      "type": "structure",
      "members": {
        "Properties": {
          "type": "map",
          "key": {},
          "value": {}
        }
      }
    }
  },
  "examples": {}
}
},{}],103:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeBatchPredictions": {
      "limit_key": "Limit",
      "output_token": "NextToken",
      "input_token": "NextToken",
      "result_key": "Results"
    },
    "DescribeDataSources": {
      "limit_key": "Limit",
      "output_token": "NextToken",
      "input_token": "NextToken",
      "result_key": "Results"
    },
    "DescribeEvaluations": {
      "limit_key": "Limit",
      "output_token": "NextToken",
      "input_token": "NextToken",
      "result_key": "Results"
    },
    "DescribeMLModels": {
      "limit_key": "Limit",
      "output_token": "NextToken",
      "input_token": "NextToken",
      "result_key": "Results"
    }
  }
}

},{}],104:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "DataSourceAvailable": {
      "delay": 30,
      "operation": "DescribeDataSources",
      "maxAttempts": 60,
      "acceptors": [
        {
          "expected": "COMPLETED",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Results[].Status"
        },
        {
          "expected": "FAILED",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Results[].Status"
        }
      ]
    },
    "MLModelAvailable": {
      "delay": 30,
      "operation": "DescribeMLModels",
      "maxAttempts": 60,
      "acceptors": [
        {
          "expected": "COMPLETED",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Results[].Status"
        },
        {
          "expected": "FAILED",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Results[].Status"
        }
      ]
    },
    "EvaluationAvailable": {
      "delay": 30,
      "operation": "DescribeEvaluations",
      "maxAttempts": 60,
      "acceptors": [
        {
          "expected": "COMPLETED",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Results[].Status"
        },
        {
          "expected": "FAILED",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Results[].Status"
        }
      ]
    },
    "BatchPredictionAvailable": {
      "delay": 30,
      "operation": "DescribeBatchPredictions",
      "maxAttempts": 60,
      "acceptors": [
        {
          "expected": "COMPLETED",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Results[].Status"
        },
        {
          "expected": "FAILED",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Results[].Status"
        }
      ]
    }
  }
}

},{}],105:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-07-01",
    "endpointPrefix": "marketplacecommerceanalytics",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceFullName": "AWS Marketplace Commerce Analytics",
    "signatureVersion": "v4",
    "signingName": "marketplacecommerceanalytics",
    "targetPrefix": "MarketplaceCommerceAnalytics20150701",
    "uid": "marketplacecommerceanalytics-2015-07-01"
  },
  "operations": {
    "GenerateDataSet": {
      "input": {
        "type": "structure",
        "required": [
          "dataSetType",
          "dataSetPublicationDate",
          "roleNameArn",
          "destinationS3BucketName",
          "snsTopicArn"
        ],
        "members": {
          "dataSetType": {},
          "dataSetPublicationDate": {
            "type": "timestamp"
          },
          "roleNameArn": {},
          "destinationS3BucketName": {},
          "destinationS3Prefix": {},
          "snsTopicArn": {},
          "customerDefinedValues": {
            "shape": "S8"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "dataSetRequestId": {}
        }
      }
    },
    "StartSupportDataExport": {
      "input": {
        "type": "structure",
        "required": [
          "dataSetType",
          "fromDate",
          "roleNameArn",
          "destinationS3BucketName",
          "snsTopicArn"
        ],
        "members": {
          "dataSetType": {},
          "fromDate": {
            "type": "timestamp"
          },
          "roleNameArn": {},
          "destinationS3BucketName": {},
          "destinationS3Prefix": {},
          "snsTopicArn": {},
          "customerDefinedValues": {
            "shape": "S8"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "dataSetRequestId": {}
        }
      }
    }
  },
  "shapes": {
    "S8": {
      "type": "map",
      "key": {},
      "value": {}
    }
  }
}
},{}],106:[function(require,module,exports){
arguments[4][19][0].apply(exports,arguments)
},{"dup":19}],107:[function(require,module,exports){
module.exports={
  "acm": {
    "name": "ACM",
    "cors": true
  },
  "apigateway": {
    "name": "APIGateway",
    "cors": true
  },
  "applicationautoscaling": {
    "prefix": "application-autoscaling",
    "name": "ApplicationAutoScaling",
    "cors": true
  },
  "appstream": {
    "name": "AppStream"
  },
  "autoscaling": {
    "name": "AutoScaling",
    "cors": true
  },
  "batch": {
    "name": "Batch"
  },
  "budgets": {
    "name": "Budgets"
  },
  "clouddirectory": {
    "name": "CloudDirectory"
  },
  "cloudformation": {
    "name": "CloudFormation",
    "cors": true
  },
  "cloudfront": {
    "name": "CloudFront",
    "versions": [
      "2013-05-12*",
      "2013-11-11*",
      "2014-05-31*",
      "2014-10-21*",
      "2014-11-06*",
      "2015-04-17*",
      "2015-07-27*",
      "2015-09-17*",
      "2016-01-13*",
      "2016-01-28*",
      "2016-08-01*",
      "2016-08-20*",
      "2016-09-07*",
      "2016-09-29*",
      "2016-11-25*"
    ],
    "cors": true
  },
  "cloudhsm": {
    "name": "CloudHSM",
    "cors": true
  },
  "cloudsearch": {
    "name": "CloudSearch"
  },
  "cloudsearchdomain": {
    "name": "CloudSearchDomain"
  },
  "cloudtrail": {
    "name": "CloudTrail",
    "cors": true
  },
  "cloudwatch": {
    "prefix": "monitoring",
    "name": "CloudWatch",
    "cors": true
  },
  "cloudwatchevents": {
    "prefix": "events",
    "name": "CloudWatchEvents",
    "versions": [
      "2014-02-03*"
    ],
    "cors": true
  },
  "cloudwatchlogs": {
    "prefix": "logs",
    "name": "CloudWatchLogs",
    "cors": true
  },
  "codebuild": {
    "name": "CodeBuild"
  },
  "codecommit": {
    "name": "CodeCommit",
    "cors": true
  },
  "codedeploy": {
    "name": "CodeDeploy",
    "cors": true
  },
  "codepipeline": {
    "name": "CodePipeline",
    "cors": true
  },
  "cognitoidentity": {
    "prefix": "cognito-identity",
    "name": "CognitoIdentity",
    "cors": true
  },
  "cognitoidentityserviceprovider": {
    "prefix": "cognito-idp",
    "name": "CognitoIdentityServiceProvider",
    "cors": true
  },
  "cognitosync": {
    "prefix": "cognito-sync",
    "name": "CognitoSync",
    "cors": true
  },
  "configservice": {
    "prefix": "config",
    "name": "ConfigService",
    "cors": true
  },
  "cur": {
    "name": "CUR",
    "cors": true
  },
  "datapipeline": {
    "name": "DataPipeline"
  },
  "devicefarm": {
    "name": "DeviceFarm",
    "cors": true
  },
  "directconnect": {
    "name": "DirectConnect",
    "cors": true
  },
  "directoryservice": {
    "prefix": "ds",
    "name": "DirectoryService"
  },
  "discovery": {
    "name": "Discovery"
  },
  "dms": {
    "name": "DMS"
  },
  "dynamodb": {
    "name": "DynamoDB",
    "cors": true
  },
  "dynamodbstreams": {
    "prefix": "streams.dynamodb",
    "name": "DynamoDBStreams",
    "cors": true
  },
  "ec2": {
    "name": "EC2",
    "versions": [
      "2013-06-15*",
      "2013-10-15*",
      "2014-02-01*",
      "2014-05-01*",
      "2014-06-15*",
      "2014-09-01*",
      "2014-10-01*",
      "2015-03-01*",
      "2015-04-15*",
      "2015-10-01*",
      "2016-04-01*",
      "2016-09-15*"
    ],
    "cors": true
  },
  "ecr": {
    "name": "ECR",
    "cors": true
  },
  "ecs": {
    "name": "ECS",
    "cors": true
  },
  "efs": {
    "prefix": "elasticfilesystem",
    "name": "EFS",
    "cors": true
  },
  "elasticache": {
    "name": "ElastiCache",
    "versions": [
      "2012-11-15*",
      "2014-03-24*",
      "2014-07-15*",
      "2014-09-30*"
    ],
    "cors": true
  },
  "elasticbeanstalk": {
    "name": "ElasticBeanstalk",
    "cors": true
  },
  "elb": {
    "prefix": "elasticloadbalancing",
    "name": "ELB",
    "cors": true
  },
  "elbv2": {
    "prefix": "elasticloadbalancingv2",
    "name": "ELBv2",
    "cors": true
  },
  "emr": {
    "prefix": "elasticmapreduce",
    "name": "EMR",
    "cors": true
  },
  "es": {
    "name": "ES"
  },
  "elastictranscoder": {
    "name": "ElasticTranscoder",
    "cors": true
  },
  "firehose": {
    "name": "Firehose",
    "cors": true
  },
  "gamelift": {
    "name": "GameLift",
    "cors": true
  },
  "glacier": {
    "name": "Glacier"
  },
  "health": {
    "name": "Health"
  },
  "iam": {
    "name": "IAM"
  },
  "importexport": {
    "name": "ImportExport"
  },
  "inspector": {
    "name": "Inspector",
    "versions": [
      "2015-08-18*"
    ],
    "cors": true
  },
  "iot": {
    "name": "Iot",
    "cors": true
  },
  "iotdata": {
    "prefix": "iot-data",
    "name": "IotData",
    "cors": true
  },
  "kinesis": {
    "name": "Kinesis",
    "cors": true
  },
  "kinesisanalytics": {
    "name": "KinesisAnalytics"
  },
  "kms": {
    "name": "KMS",
    "cors": true
  },
  "lambda": {
    "name": "Lambda",
    "cors": true
  },
  "lexruntime": {
    "prefix": "runtime.lex",
    "name": "LexRuntime",
    "cors": true
  },
  "lightsail": {
    "name": "Lightsail"
  },
  "machinelearning": {
    "name": "MachineLearning",
    "cors": true
  },
  "marketplacecommerceanalytics": {
    "name": "MarketplaceCommerceAnalytics",
    "cors": true
  },
  "marketplacemetering": {
    "prefix": "meteringmarketplace",
    "name": "MarketplaceMetering"
  },
  "mturk": {
    "prefix": "mturk-requester",
    "name": "MTurk",
    "cors": true
  },
  "mobileanalytics": {
    "name": "MobileAnalytics",
    "cors": true
  },
  "opsworks": {
    "name": "OpsWorks",
    "cors": true
  },
  "opsworkscm": {
    "name": "OpsWorksCM"
  },
  "organizations": {
    "name": "Organizations"
  },
  "pinpoint": {
    "name": "Pinpoint"
  },
  "polly": {
    "name": "Polly",
    "cors": true
  },
  "rds": {
    "name": "RDS",
    "versions": [
      "2014-09-01*"
    ],
    "cors": true
  },
  "redshift": {
    "name": "Redshift",
    "cors": true
  },
  "rekognition": {
    "name": "Rekognition",
    "cors": true
  },
  "resourcegroupstaggingapi": {
    "name": "ResourceGroupsTaggingAPI"
  },
  "route53": {
    "name": "Route53",
    "cors": true
  },
  "route53domains": {
    "name": "Route53Domains",
    "cors": true
  },
  "s3": {
    "name": "S3",
    "dualstackAvailable": true,
    "cors": true
  },
  "servicecatalog": {
    "name": "ServiceCatalog",
    "cors": true
  },
  "ses": {
    "prefix": "email",
    "name": "SES",
    "cors": true
  },
  "shield": {
    "name": "Shield"
  },
  "simpledb": {
    "prefix": "sdb",
    "name": "SimpleDB"
  },
  "sms": {
    "name": "SMS"
  },
  "snowball": {
    "name": "Snowball"
  },
  "sns": {
    "name": "SNS",
    "cors": true
  },
  "sqs": {
    "name": "SQS",
    "cors": true
  },
  "ssm": {
    "name": "SSM",
    "cors": true
  },
  "storagegateway": {
    "name": "StorageGateway",
    "cors": true
  },
  "stepfunctions": {
    "prefix": "states",
    "name": "StepFunctions"
  },
  "sts": {
    "name": "STS",
    "cors": true
  },
  "support": {
    "name": "Support"
  },
  "swf": {
    "name": "SWF"
  },
  "xray": {
    "name": "XRay"
  },
  "waf": {
    "name": "WAF",
    "cors": true
  },
  "wafregional": {
    "prefix": "waf-regional",
    "name": "WAFRegional"
  },
  "workdocs": {
    "name": "WorkDocs",
    "cors": true
  },
  "workspaces": {
    "name": "WorkSpaces"
  },
  "codestar": {
    "name": "CodeStar"
  },
  "lexmodelbuildingservice": {
    "prefix": "lex-models",
    "name": "LexModelBuildingService",
    "cors": true
  },
  "marketplaceentitlementservice": {
    "prefix": "entitlement.marketplace",
    "name": "MarketplaceEntitlementService"
  },
  "athena": {
    "name": "Athena"
  },
  "greengrass": {
    "name": "Greengrass"
  },
  "dax": {
    "name": "DAX"
  },
  "migrationhub": {
    "prefix": "AWSMigrationHub",
    "name": "MigrationHub"
  },
  "cloudhsmv2": {
    "name": "CloudHSMV2"
  },
  "glue": {
    "name": "Glue"
  },
  "mobile": {
    "name": "Mobile"
  },
  "pricing": {
    "name": "Pricing"
  },
  "costexplorer": {
    "prefix": "ce",
    "name": "CostExplorer"
  },
  "mediaconvert": {
    "name": "MediaConvert"
  },
  "medialive": {
    "name": "MediaLive"
  },
  "mediapackage": {
    "name": "MediaPackage"
  },
  "mediastore": {
    "name": "MediaStore"
  },
  "mediastoredata": {
    "prefix": "mediastore-data",
    "name": "MediaStoreData"
  },
  "appsync": {
    "name": "AppSync"
  },
  "guardduty": {
    "name": "GuardDuty"
  },
  "mq": {
    "name": "MQ"
  },
  "comprehend": {
    "name": "Comprehend"
  },
  "iotjobsdataplane": {
    "prefix": "iot-jobs-data",
    "name": "IoTJobsDataPlane"
  },
  "kinesisvideoarchivedmedia": {
    "prefix": "kinesis-video-archived-media",
    "name": "KinesisVideoArchivedMedia"
  },
  "kinesisvideomedia": {
    "prefix": "kinesis-video-media",
    "name": "KinesisVideoMedia"
  },
  "kinesisvideo": {
    "name": "KinesisVideo"
  },
  "sagemakerruntime": {
    "prefix": "runtime.sagemaker",
    "name": "SageMakerRuntime"
  },
  "sagemaker": {
    "name": "SageMaker"
  },
  "translate": {
    "name": "Translate"
  },
  "resourcegroups": {
    "prefix": "resource-groups",
    "name": "ResourceGroups"
  },
  "alexaforbusiness": {
    "name": "AlexaForBusiness"
  },
  "cloud9": {
    "name": "Cloud9"
  },
  "serverlessapplicationrepository": {
    "prefix": "serverlessrepo",
    "name": "ServerlessApplicationRepository"
  },
  "servicediscovery": {
    "name": "ServiceDiscovery"
  },
  "workmail": {
    "name": "WorkMail"
  },
  "autoscalingplans": {
    "prefix": "autoscaling-plans",
    "name": "AutoScalingPlans"
  }
}
},{}],108:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2014-06-05",
    "endpointPrefix": "mobileanalytics",
    "serviceFullName": "Amazon Mobile Analytics",
    "signatureVersion": "v4",
    "protocol": "rest-json"
  },
  "operations": {
    "PutEvents": {
      "http": {
        "requestUri": "/2014-06-05/events",
        "responseCode": 202
      },
      "input": {
        "type": "structure",
        "required": [
          "events",
          "clientContext"
        ],
        "members": {
          "events": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "eventType",
                "timestamp"
              ],
              "members": {
                "eventType": {},
                "timestamp": {},
                "session": {
                  "type": "structure",
                  "members": {
                    "id": {},
                    "duration": {
                      "type": "long"
                    },
                    "startTimestamp": {},
                    "stopTimestamp": {}
                  }
                },
                "version": {},
                "attributes": {
                  "type": "map",
                  "key": {},
                  "value": {}
                },
                "metrics": {
                  "type": "map",
                  "key": {},
                  "value": {
                    "type": "double"
                  }
                }
              }
            }
          },
          "clientContext": {
            "location": "header",
            "locationName": "x-amz-Client-Context"
          },
          "clientContextEncoding": {
            "location": "header",
            "locationName": "x-amz-Client-Context-Encoding"
          }
        }
      }
    }
  },
  "shapes": {}
}
},{}],109:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2010-08-01",
    "endpointPrefix": "monitoring",
    "protocol": "query",
    "serviceAbbreviation": "CloudWatch",
    "serviceFullName": "Amazon CloudWatch",
    "signatureVersion": "v4",
    "uid": "monitoring-2010-08-01",
    "xmlNamespace": "http://monitoring.amazonaws.com/doc/2010-08-01/"
  },
  "operations": {
    "DeleteAlarms": {
      "input": {
        "type": "structure",
        "required": [
          "AlarmNames"
        ],
        "members": {
          "AlarmNames": {
            "shape": "S2"
          }
        }
      }
    },
    "DeleteDashboards": {
      "input": {
        "type": "structure",
        "required": [
          "DashboardNames"
        ],
        "members": {
          "DashboardNames": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "resultWrapper": "DeleteDashboardsResult",
        "type": "structure",
        "members": {}
      }
    },
    "DescribeAlarmHistory": {
      "input": {
        "type": "structure",
        "members": {
          "AlarmName": {},
          "HistoryItemType": {},
          "StartDate": {
            "type": "timestamp"
          },
          "EndDate": {
            "type": "timestamp"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeAlarmHistoryResult",
        "type": "structure",
        "members": {
          "AlarmHistoryItems": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "AlarmName": {},
                "Timestamp": {
                  "type": "timestamp"
                },
                "HistoryItemType": {},
                "HistorySummary": {},
                "HistoryData": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeAlarms": {
      "input": {
        "type": "structure",
        "members": {
          "AlarmNames": {
            "shape": "S2"
          },
          "AlarmNamePrefix": {},
          "StateValue": {},
          "ActionPrefix": {},
          "MaxRecords": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeAlarmsResult",
        "type": "structure",
        "members": {
          "MetricAlarms": {
            "shape": "Sn"
          },
          "NextToken": {}
        }
      }
    },
    "DescribeAlarmsForMetric": {
      "input": {
        "type": "structure",
        "required": [
          "MetricName",
          "Namespace"
        ],
        "members": {
          "MetricName": {},
          "Namespace": {},
          "Statistic": {},
          "ExtendedStatistic": {},
          "Dimensions": {
            "shape": "S10"
          },
          "Period": {
            "type": "integer"
          },
          "Unit": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeAlarmsForMetricResult",
        "type": "structure",
        "members": {
          "MetricAlarms": {
            "shape": "Sn"
          }
        }
      }
    },
    "DisableAlarmActions": {
      "input": {
        "type": "structure",
        "required": [
          "AlarmNames"
        ],
        "members": {
          "AlarmNames": {
            "shape": "S2"
          }
        }
      }
    },
    "EnableAlarmActions": {
      "input": {
        "type": "structure",
        "required": [
          "AlarmNames"
        ],
        "members": {
          "AlarmNames": {
            "shape": "S2"
          }
        }
      }
    },
    "GetDashboard": {
      "input": {
        "type": "structure",
        "required": [
          "DashboardName"
        ],
        "members": {
          "DashboardName": {}
        }
      },
      "output": {
        "resultWrapper": "GetDashboardResult",
        "type": "structure",
        "members": {
          "DashboardArn": {},
          "DashboardBody": {},
          "DashboardName": {}
        }
      }
    },
    "GetMetricStatistics": {
      "input": {
        "type": "structure",
        "required": [
          "Namespace",
          "MetricName",
          "StartTime",
          "EndTime",
          "Period"
        ],
        "members": {
          "Namespace": {},
          "MetricName": {},
          "Dimensions": {
            "shape": "S10"
          },
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "Period": {
            "type": "integer"
          },
          "Statistics": {
            "type": "list",
            "member": {}
          },
          "ExtendedStatistics": {
            "type": "list",
            "member": {}
          },
          "Unit": {}
        }
      },
      "output": {
        "resultWrapper": "GetMetricStatisticsResult",
        "type": "structure",
        "members": {
          "Label": {},
          "Datapoints": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Timestamp": {
                  "type": "timestamp"
                },
                "SampleCount": {
                  "type": "double"
                },
                "Average": {
                  "type": "double"
                },
                "Sum": {
                  "type": "double"
                },
                "Minimum": {
                  "type": "double"
                },
                "Maximum": {
                  "type": "double"
                },
                "Unit": {},
                "ExtendedStatistics": {
                  "type": "map",
                  "key": {},
                  "value": {
                    "type": "double"
                  }
                }
              },
              "xmlOrder": [
                "Timestamp",
                "SampleCount",
                "Average",
                "Sum",
                "Minimum",
                "Maximum",
                "Unit",
                "ExtendedStatistics"
              ]
            }
          }
        }
      }
    },
    "ListDashboards": {
      "input": {
        "type": "structure",
        "members": {
          "DashboardNamePrefix": {},
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "ListDashboardsResult",
        "type": "structure",
        "members": {
          "DashboardEntries": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "DashboardName": {},
                "DashboardArn": {},
                "LastModified": {
                  "type": "timestamp"
                },
                "Size": {
                  "type": "long"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListMetrics": {
      "input": {
        "type": "structure",
        "members": {
          "Namespace": {},
          "MetricName": {},
          "Dimensions": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Name"
              ],
              "members": {
                "Name": {},
                "Value": {}
              }
            }
          },
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "ListMetricsResult",
        "type": "structure",
        "members": {
          "Metrics": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Namespace": {},
                "MetricName": {},
                "Dimensions": {
                  "shape": "S10"
                }
              },
              "xmlOrder": [
                "Namespace",
                "MetricName",
                "Dimensions"
              ]
            }
          },
          "NextToken": {}
        },
        "xmlOrder": [
          "Metrics",
          "NextToken"
        ]
      }
    },
    "PutDashboard": {
      "input": {
        "type": "structure",
        "required": [
          "DashboardName",
          "DashboardBody"
        ],
        "members": {
          "DashboardName": {},
          "DashboardBody": {}
        }
      },
      "output": {
        "resultWrapper": "PutDashboardResult",
        "type": "structure",
        "members": {
          "DashboardValidationMessages": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "DataPath": {},
                "Message": {}
              }
            }
          }
        }
      }
    },
    "PutMetricAlarm": {
      "input": {
        "type": "structure",
        "required": [
          "AlarmName",
          "MetricName",
          "Namespace",
          "Period",
          "EvaluationPeriods",
          "Threshold",
          "ComparisonOperator"
        ],
        "members": {
          "AlarmName": {},
          "AlarmDescription": {},
          "ActionsEnabled": {
            "type": "boolean"
          },
          "OKActions": {
            "shape": "Ss"
          },
          "AlarmActions": {
            "shape": "Ss"
          },
          "InsufficientDataActions": {
            "shape": "Ss"
          },
          "MetricName": {},
          "Namespace": {},
          "Statistic": {},
          "ExtendedStatistic": {},
          "Dimensions": {
            "shape": "S10"
          },
          "Period": {
            "type": "integer"
          },
          "Unit": {},
          "EvaluationPeriods": {
            "type": "integer"
          },
          "DatapointsToAlarm": {
            "type": "integer"
          },
          "Threshold": {
            "type": "double"
          },
          "ComparisonOperator": {},
          "TreatMissingData": {},
          "EvaluateLowSampleCountPercentile": {}
        }
      }
    },
    "PutMetricData": {
      "input": {
        "type": "structure",
        "required": [
          "Namespace",
          "MetricData"
        ],
        "members": {
          "Namespace": {},
          "MetricData": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "MetricName"
              ],
              "members": {
                "MetricName": {},
                "Dimensions": {
                  "shape": "S10"
                },
                "Timestamp": {
                  "type": "timestamp"
                },
                "Value": {
                  "type": "double"
                },
                "StatisticValues": {
                  "type": "structure",
                  "required": [
                    "SampleCount",
                    "Sum",
                    "Minimum",
                    "Maximum"
                  ],
                  "members": {
                    "SampleCount": {
                      "type": "double"
                    },
                    "Sum": {
                      "type": "double"
                    },
                    "Minimum": {
                      "type": "double"
                    },
                    "Maximum": {
                      "type": "double"
                    }
                  }
                },
                "Unit": {},
                "StorageResolution": {
                  "type": "integer"
                }
              }
            }
          }
        }
      }
    },
    "SetAlarmState": {
      "input": {
        "type": "structure",
        "required": [
          "AlarmName",
          "StateValue",
          "StateReason"
        ],
        "members": {
          "AlarmName": {},
          "StateValue": {},
          "StateReason": {},
          "StateReasonData": {}
        }
      }
    }
  },
  "shapes": {
    "S2": {
      "type": "list",
      "member": {}
    },
    "Sn": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "AlarmName": {},
          "AlarmArn": {},
          "AlarmDescription": {},
          "AlarmConfigurationUpdatedTimestamp": {
            "type": "timestamp"
          },
          "ActionsEnabled": {
            "type": "boolean"
          },
          "OKActions": {
            "shape": "Ss"
          },
          "AlarmActions": {
            "shape": "Ss"
          },
          "InsufficientDataActions": {
            "shape": "Ss"
          },
          "StateValue": {},
          "StateReason": {},
          "StateReasonData": {},
          "StateUpdatedTimestamp": {
            "type": "timestamp"
          },
          "MetricName": {},
          "Namespace": {},
          "Statistic": {},
          "ExtendedStatistic": {},
          "Dimensions": {
            "shape": "S10"
          },
          "Period": {
            "type": "integer"
          },
          "Unit": {},
          "EvaluationPeriods": {
            "type": "integer"
          },
          "DatapointsToAlarm": {
            "type": "integer"
          },
          "Threshold": {
            "type": "double"
          },
          "ComparisonOperator": {},
          "TreatMissingData": {},
          "EvaluateLowSampleCountPercentile": {}
        },
        "xmlOrder": [
          "AlarmName",
          "AlarmArn",
          "AlarmDescription",
          "AlarmConfigurationUpdatedTimestamp",
          "ActionsEnabled",
          "OKActions",
          "AlarmActions",
          "InsufficientDataActions",
          "StateValue",
          "StateReason",
          "StateReasonData",
          "StateUpdatedTimestamp",
          "MetricName",
          "Namespace",
          "Statistic",
          "Dimensions",
          "Period",
          "Unit",
          "EvaluationPeriods",
          "Threshold",
          "ComparisonOperator",
          "ExtendedStatistic",
          "TreatMissingData",
          "EvaluateLowSampleCountPercentile",
          "DatapointsToAlarm"
        ]
      }
    },
    "Ss": {
      "type": "list",
      "member": {}
    },
    "S10": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Name",
          "Value"
        ],
        "members": {
          "Name": {},
          "Value": {}
        },
        "xmlOrder": [
          "Name",
          "Value"
        ]
      }
    }
  }
}
},{}],110:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeAlarmHistory": {
      "input_token": "NextToken",
      "limit_key": "MaxRecords",
      "output_token": "NextToken",
      "result_key": "AlarmHistoryItems"
    },
    "DescribeAlarms": {
      "input_token": "NextToken",
      "limit_key": "MaxRecords",
      "output_token": "NextToken",
      "result_key": "MetricAlarms"
    },
    "DescribeAlarmsForMetric": {
      "result_key": "MetricAlarms"
    },
    "ListMetrics": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "result_key": "Metrics"
    }
  }
}
},{}],111:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "AlarmExists": {
      "delay": 5,
      "maxAttempts": 40,
      "operation": "DescribeAlarms",
      "acceptors": [
        {
          "matcher": "path",
          "expected": true,
          "argument": "length(MetricAlarms[]) > `0`",
          "state": "success"
        }
      ]
    }
  }
}

},{}],112:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2017-01-17",
    "endpointPrefix": "mturk-requester",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "Amazon MTurk",
    "serviceFullName": "Amazon Mechanical Turk",
    "signatureVersion": "v4",
    "targetPrefix": "MTurkRequesterServiceV20170117",
    "uid": "mturk-requester-2017-01-17"
  },
  "operations": {
    "AcceptQualificationRequest": {
      "input": {
        "type": "structure",
        "required": [
          "QualificationRequestId"
        ],
        "members": {
          "QualificationRequestId": {},
          "IntegerValue": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "ApproveAssignment": {
      "input": {
        "type": "structure",
        "required": [
          "AssignmentId"
        ],
        "members": {
          "AssignmentId": {},
          "RequesterFeedback": {},
          "OverrideRejection": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "idempotent": true
    },
    "AssociateQualificationWithWorker": {
      "input": {
        "type": "structure",
        "required": [
          "QualificationTypeId",
          "WorkerId"
        ],
        "members": {
          "QualificationTypeId": {},
          "WorkerId": {},
          "IntegerValue": {
            "type": "integer"
          },
          "SendNotification": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "CreateAdditionalAssignmentsForHIT": {
      "input": {
        "type": "structure",
        "required": [
          "HITId",
          "NumberOfAdditionalAssignments"
        ],
        "members": {
          "HITId": {},
          "NumberOfAdditionalAssignments": {
            "type": "integer"
          },
          "UniqueRequestToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "CreateHIT": {
      "input": {
        "type": "structure",
        "required": [
          "LifetimeInSeconds",
          "AssignmentDurationInSeconds",
          "Reward",
          "Title",
          "Description"
        ],
        "members": {
          "MaxAssignments": {
            "type": "integer"
          },
          "AutoApprovalDelayInSeconds": {
            "type": "long"
          },
          "LifetimeInSeconds": {
            "type": "long"
          },
          "AssignmentDurationInSeconds": {
            "type": "long"
          },
          "Reward": {},
          "Title": {},
          "Keywords": {},
          "Description": {},
          "Question": {},
          "RequesterAnnotation": {},
          "QualificationRequirements": {
            "shape": "Si"
          },
          "UniqueRequestToken": {},
          "AssignmentReviewPolicy": {
            "shape": "Sp"
          },
          "HITReviewPolicy": {
            "shape": "Sp"
          },
          "HITLayoutId": {},
          "HITLayoutParameters": {
            "shape": "Sv"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "HIT": {
            "shape": "Sy"
          }
        }
      }
    },
    "CreateHITType": {
      "input": {
        "type": "structure",
        "required": [
          "AssignmentDurationInSeconds",
          "Reward",
          "Title",
          "Description"
        ],
        "members": {
          "AutoApprovalDelayInSeconds": {
            "type": "long"
          },
          "AssignmentDurationInSeconds": {
            "type": "long"
          },
          "Reward": {},
          "Title": {},
          "Keywords": {},
          "Description": {},
          "QualificationRequirements": {
            "shape": "Si"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "HITTypeId": {}
        }
      },
      "idempotent": true
    },
    "CreateHITWithHITType": {
      "input": {
        "type": "structure",
        "required": [
          "HITTypeId",
          "LifetimeInSeconds"
        ],
        "members": {
          "HITTypeId": {},
          "MaxAssignments": {
            "type": "integer"
          },
          "LifetimeInSeconds": {
            "type": "long"
          },
          "Question": {},
          "RequesterAnnotation": {},
          "UniqueRequestToken": {},
          "AssignmentReviewPolicy": {
            "shape": "Sp"
          },
          "HITReviewPolicy": {
            "shape": "Sp"
          },
          "HITLayoutId": {},
          "HITLayoutParameters": {
            "shape": "Sv"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "HIT": {
            "shape": "Sy"
          }
        }
      }
    },
    "CreateQualificationType": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "Description",
          "QualificationTypeStatus"
        ],
        "members": {
          "Name": {},
          "Keywords": {},
          "Description": {},
          "QualificationTypeStatus": {},
          "RetryDelayInSeconds": {
            "type": "long"
          },
          "Test": {},
          "AnswerKey": {},
          "TestDurationInSeconds": {
            "type": "long"
          },
          "AutoGranted": {
            "type": "boolean"
          },
          "AutoGrantedValue": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "QualificationType": {
            "shape": "S19"
          }
        }
      }
    },
    "CreateWorkerBlock": {
      "input": {
        "type": "structure",
        "required": [
          "WorkerId",
          "Reason"
        ],
        "members": {
          "WorkerId": {},
          "Reason": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteHIT": {
      "input": {
        "type": "structure",
        "required": [
          "HITId"
        ],
        "members": {
          "HITId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "idempotent": true
    },
    "DeleteQualificationType": {
      "input": {
        "type": "structure",
        "required": [
          "QualificationTypeId"
        ],
        "members": {
          "QualificationTypeId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "idempotent": true
    },
    "DeleteWorkerBlock": {
      "input": {
        "type": "structure",
        "required": [
          "WorkerId"
        ],
        "members": {
          "WorkerId": {},
          "Reason": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "idempotent": true
    },
    "DisassociateQualificationFromWorker": {
      "input": {
        "type": "structure",
        "required": [
          "WorkerId",
          "QualificationTypeId"
        ],
        "members": {
          "WorkerId": {},
          "QualificationTypeId": {},
          "Reason": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "GetAccountBalance": {
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "members": {
          "AvailableBalance": {},
          "OnHoldBalance": {}
        }
      },
      "idempotent": true
    },
    "GetAssignment": {
      "input": {
        "type": "structure",
        "required": [
          "AssignmentId"
        ],
        "members": {
          "AssignmentId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Assignment": {
            "shape": "S1o"
          },
          "HIT": {
            "shape": "Sy"
          }
        }
      },
      "idempotent": true
    },
    "GetFileUploadURL": {
      "input": {
        "type": "structure",
        "required": [
          "AssignmentId",
          "QuestionIdentifier"
        ],
        "members": {
          "AssignmentId": {},
          "QuestionIdentifier": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FileUploadURL": {}
        }
      },
      "idempotent": true
    },
    "GetHIT": {
      "input": {
        "type": "structure",
        "required": [
          "HITId"
        ],
        "members": {
          "HITId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "HIT": {
            "shape": "Sy"
          }
        }
      },
      "idempotent": true
    },
    "GetQualificationScore": {
      "input": {
        "type": "structure",
        "required": [
          "QualificationTypeId",
          "WorkerId"
        ],
        "members": {
          "QualificationTypeId": {},
          "WorkerId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Qualification": {
            "shape": "S1w"
          }
        }
      },
      "idempotent": true
    },
    "GetQualificationType": {
      "input": {
        "type": "structure",
        "required": [
          "QualificationTypeId"
        ],
        "members": {
          "QualificationTypeId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "QualificationType": {
            "shape": "S19"
          }
        }
      },
      "idempotent": true
    },
    "ListAssignmentsForHIT": {
      "input": {
        "type": "structure",
        "required": [
          "HITId"
        ],
        "members": {
          "HITId": {},
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          },
          "AssignmentStatuses": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "NumResults": {
            "type": "integer"
          },
          "Assignments": {
            "type": "list",
            "member": {
              "shape": "S1o"
            }
          }
        }
      },
      "idempotent": true
    },
    "ListBonusPayments": {
      "input": {
        "type": "structure",
        "members": {
          "HITId": {},
          "AssignmentId": {},
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NumResults": {
            "type": "integer"
          },
          "NextToken": {},
          "BonusPayments": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "WorkerId": {},
                "BonusAmount": {},
                "AssignmentId": {},
                "Reason": {},
                "GrantTime": {
                  "type": "timestamp"
                }
              }
            }
          }
        }
      },
      "idempotent": true
    },
    "ListHITs": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "NumResults": {
            "type": "integer"
          },
          "HITs": {
            "shape": "S2c"
          }
        }
      },
      "idempotent": true
    },
    "ListHITsForQualificationType": {
      "input": {
        "type": "structure",
        "required": [
          "QualificationTypeId"
        ],
        "members": {
          "QualificationTypeId": {},
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "NumResults": {
            "type": "integer"
          },
          "HITs": {
            "shape": "S2c"
          }
        }
      },
      "idempotent": true
    },
    "ListQualificationRequests": {
      "input": {
        "type": "structure",
        "members": {
          "QualificationTypeId": {},
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NumResults": {
            "type": "integer"
          },
          "NextToken": {},
          "QualificationRequests": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "QualificationRequestId": {},
                "QualificationTypeId": {},
                "WorkerId": {},
                "Test": {},
                "Answer": {},
                "SubmitTime": {
                  "type": "timestamp"
                }
              }
            }
          }
        }
      },
      "idempotent": true
    },
    "ListQualificationTypes": {
      "input": {
        "type": "structure",
        "required": [
          "MustBeRequestable"
        ],
        "members": {
          "Query": {},
          "MustBeRequestable": {
            "type": "boolean"
          },
          "MustBeOwnedByCaller": {
            "type": "boolean"
          },
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NumResults": {
            "type": "integer"
          },
          "NextToken": {},
          "QualificationTypes": {
            "type": "list",
            "member": {
              "shape": "S19"
            }
          }
        }
      },
      "idempotent": true
    },
    "ListReviewPolicyResultsForHIT": {
      "input": {
        "type": "structure",
        "required": [
          "HITId"
        ],
        "members": {
          "HITId": {},
          "PolicyLevels": {
            "type": "list",
            "member": {}
          },
          "RetrieveActions": {
            "type": "boolean"
          },
          "RetrieveResults": {
            "type": "boolean"
          },
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "HITId": {},
          "AssignmentReviewPolicy": {
            "shape": "Sp"
          },
          "HITReviewPolicy": {
            "shape": "Sp"
          },
          "AssignmentReviewReport": {
            "shape": "S2q"
          },
          "HITReviewReport": {
            "shape": "S2q"
          },
          "NextToken": {}
        }
      },
      "idempotent": true
    },
    "ListReviewableHITs": {
      "input": {
        "type": "structure",
        "members": {
          "HITTypeId": {},
          "Status": {},
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "NumResults": {
            "type": "integer"
          },
          "HITs": {
            "shape": "S2c"
          }
        }
      },
      "idempotent": true
    },
    "ListWorkerBlocks": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "NumResults": {
            "type": "integer"
          },
          "WorkerBlocks": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "WorkerId": {},
                "Reason": {}
              }
            }
          }
        }
      },
      "idempotent": true
    },
    "ListWorkersWithQualificationType": {
      "input": {
        "type": "structure",
        "required": [
          "QualificationTypeId"
        ],
        "members": {
          "QualificationTypeId": {},
          "Status": {},
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "NumResults": {
            "type": "integer"
          },
          "Qualifications": {
            "type": "list",
            "member": {
              "shape": "S1w"
            }
          }
        }
      },
      "idempotent": true
    },
    "NotifyWorkers": {
      "input": {
        "type": "structure",
        "required": [
          "Subject",
          "MessageText",
          "WorkerIds"
        ],
        "members": {
          "Subject": {},
          "MessageText": {},
          "WorkerIds": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NotifyWorkersFailureStatuses": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "NotifyWorkersFailureCode": {},
                "NotifyWorkersFailureMessage": {},
                "WorkerId": {}
              }
            }
          }
        }
      }
    },
    "RejectAssignment": {
      "input": {
        "type": "structure",
        "required": [
          "AssignmentId",
          "RequesterFeedback"
        ],
        "members": {
          "AssignmentId": {},
          "RequesterFeedback": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "idempotent": true
    },
    "RejectQualificationRequest": {
      "input": {
        "type": "structure",
        "required": [
          "QualificationRequestId"
        ],
        "members": {
          "QualificationRequestId": {},
          "Reason": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "SendBonus": {
      "input": {
        "type": "structure",
        "required": [
          "WorkerId",
          "BonusAmount",
          "AssignmentId",
          "Reason"
        ],
        "members": {
          "WorkerId": {},
          "BonusAmount": {},
          "AssignmentId": {},
          "Reason": {},
          "UniqueRequestToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "SendTestEventNotification": {
      "input": {
        "type": "structure",
        "required": [
          "Notification",
          "TestEventType"
        ],
        "members": {
          "Notification": {
            "shape": "S3j"
          },
          "TestEventType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UpdateExpirationForHIT": {
      "input": {
        "type": "structure",
        "required": [
          "HITId",
          "ExpireAt"
        ],
        "members": {
          "HITId": {},
          "ExpireAt": {
            "type": "timestamp"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "idempotent": true
    },
    "UpdateHITReviewStatus": {
      "input": {
        "type": "structure",
        "required": [
          "HITId"
        ],
        "members": {
          "HITId": {},
          "Revert": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "idempotent": true
    },
    "UpdateHITTypeOfHIT": {
      "input": {
        "type": "structure",
        "required": [
          "HITId",
          "HITTypeId"
        ],
        "members": {
          "HITId": {},
          "HITTypeId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "idempotent": true
    },
    "UpdateNotificationSettings": {
      "input": {
        "type": "structure",
        "required": [
          "HITTypeId"
        ],
        "members": {
          "HITTypeId": {},
          "Notification": {
            "shape": "S3j"
          },
          "Active": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      },
      "idempotent": true
    },
    "UpdateQualificationType": {
      "input": {
        "type": "structure",
        "required": [
          "QualificationTypeId"
        ],
        "members": {
          "QualificationTypeId": {},
          "Description": {},
          "QualificationTypeStatus": {},
          "Test": {},
          "AnswerKey": {},
          "TestDurationInSeconds": {
            "type": "long"
          },
          "RetryDelayInSeconds": {
            "type": "long"
          },
          "AutoGranted": {
            "type": "boolean"
          },
          "AutoGrantedValue": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "QualificationType": {
            "shape": "S19"
          }
        }
      }
    }
  },
  "shapes": {
    "Si": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "QualificationTypeId",
          "Comparator"
        ],
        "members": {
          "QualificationTypeId": {},
          "Comparator": {},
          "IntegerValues": {
            "type": "list",
            "member": {
              "type": "integer"
            }
          },
          "LocaleValues": {
            "type": "list",
            "member": {
              "shape": "Sn"
            }
          },
          "RequiredToPreview": {
            "type": "boolean"
          }
        }
      }
    },
    "Sn": {
      "type": "structure",
      "required": [
        "Country"
      ],
      "members": {
        "Country": {},
        "Subdivision": {}
      }
    },
    "Sp": {
      "type": "structure",
      "required": [
        "PolicyName"
      ],
      "members": {
        "PolicyName": {},
        "Parameters": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "Key": {},
              "Values": {
                "shape": "Ss"
              },
              "MapEntries": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "Key": {},
                    "Values": {
                      "shape": "Ss"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "Ss": {
      "type": "list",
      "member": {}
    },
    "Sv": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Name",
          "Value"
        ],
        "members": {
          "Name": {},
          "Value": {}
        }
      }
    },
    "Sy": {
      "type": "structure",
      "members": {
        "HITId": {},
        "HITTypeId": {},
        "HITGroupId": {},
        "HITLayoutId": {},
        "CreationTime": {
          "type": "timestamp"
        },
        "Title": {},
        "Description": {},
        "Question": {},
        "Keywords": {},
        "HITStatus": {},
        "MaxAssignments": {
          "type": "integer"
        },
        "Reward": {},
        "AutoApprovalDelayInSeconds": {
          "type": "long"
        },
        "Expiration": {
          "type": "timestamp"
        },
        "AssignmentDurationInSeconds": {
          "type": "long"
        },
        "RequesterAnnotation": {},
        "QualificationRequirements": {
          "shape": "Si"
        },
        "HITReviewStatus": {},
        "NumberOfAssignmentsPending": {
          "type": "integer"
        },
        "NumberOfAssignmentsAvailable": {
          "type": "integer"
        },
        "NumberOfAssignmentsCompleted": {
          "type": "integer"
        }
      }
    },
    "S19": {
      "type": "structure",
      "members": {
        "QualificationTypeId": {},
        "CreationTime": {
          "type": "timestamp"
        },
        "Name": {},
        "Description": {},
        "Keywords": {},
        "QualificationTypeStatus": {},
        "Test": {},
        "TestDurationInSeconds": {
          "type": "long"
        },
        "AnswerKey": {},
        "RetryDelayInSeconds": {
          "type": "long"
        },
        "IsRequestable": {
          "type": "boolean"
        },
        "AutoGranted": {
          "type": "boolean"
        },
        "AutoGrantedValue": {
          "type": "integer"
        }
      }
    },
    "S1o": {
      "type": "structure",
      "members": {
        "AssignmentId": {},
        "WorkerId": {},
        "HITId": {},
        "AssignmentStatus": {},
        "AutoApprovalTime": {
          "type": "timestamp"
        },
        "AcceptTime": {
          "type": "timestamp"
        },
        "SubmitTime": {
          "type": "timestamp"
        },
        "ApprovalTime": {
          "type": "timestamp"
        },
        "RejectionTime": {
          "type": "timestamp"
        },
        "Deadline": {
          "type": "timestamp"
        },
        "Answer": {},
        "RequesterFeedback": {}
      }
    },
    "S1w": {
      "type": "structure",
      "members": {
        "QualificationTypeId": {},
        "WorkerId": {},
        "GrantTime": {
          "type": "timestamp"
        },
        "IntegerValue": {
          "type": "integer"
        },
        "LocaleValue": {
          "shape": "Sn"
        },
        "Status": {}
      }
    },
    "S2c": {
      "type": "list",
      "member": {
        "shape": "Sy"
      }
    },
    "S2q": {
      "type": "structure",
      "members": {
        "ReviewResults": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "ActionId": {},
              "SubjectId": {},
              "SubjectType": {},
              "QuestionId": {},
              "Key": {},
              "Value": {}
            }
          }
        },
        "ReviewActions": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "ActionId": {},
              "ActionName": {},
              "TargetId": {},
              "TargetType": {},
              "Status": {},
              "CompleteTime": {
                "type": "timestamp"
              },
              "Result": {},
              "ErrorCode": {}
            }
          }
        }
      }
    },
    "S3j": {
      "type": "structure",
      "required": [
        "Destination",
        "Transport",
        "Version",
        "EventTypes"
      ],
      "members": {
        "Destination": {},
        "Transport": {},
        "Version": {},
        "EventTypes": {
          "type": "list",
          "member": {}
        }
      }
    }
  }
}
},{}],113:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListAssignmentsForHIT": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "limit_key": "MaxResults"
    },
    "ListBonusPayments": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "limit_key": "MaxResults"
    },
    "ListHITs": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "limit_key": "MaxResults"
    },
    "ListHITsForQualificationType": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "limit_key": "MaxResults"
    },
    "ListQualificationRequests": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "limit_key": "MaxResults"
    },
    "ListQualificationTypes": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "limit_key": "MaxResults"
    },
    "ListReviewPolicyResultsForHIT": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "limit_key": "MaxResults"
    },
    "ListReviewableHITs": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "limit_key": "MaxResults"
    },
    "ListWorkerBlocks": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "limit_key": "MaxResults"
    },
    "ListWorkersWithQualificationType": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "limit_key": "MaxResults"
    }
  }
}

},{}],114:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2013-02-18",
    "endpointPrefix": "opsworks",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceFullName": "AWS OpsWorks",
    "signatureVersion": "v4",
    "targetPrefix": "OpsWorks_20130218",
    "uid": "opsworks-2013-02-18"
  },
  "operations": {
    "AssignInstance": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId",
          "LayerIds"
        ],
        "members": {
          "InstanceId": {},
          "LayerIds": {
            "shape": "S3"
          }
        }
      }
    },
    "AssignVolume": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeId"
        ],
        "members": {
          "VolumeId": {},
          "InstanceId": {}
        }
      }
    },
    "AssociateElasticIp": {
      "input": {
        "type": "structure",
        "required": [
          "ElasticIp"
        ],
        "members": {
          "ElasticIp": {},
          "InstanceId": {}
        }
      }
    },
    "AttachElasticLoadBalancer": {
      "input": {
        "type": "structure",
        "required": [
          "ElasticLoadBalancerName",
          "LayerId"
        ],
        "members": {
          "ElasticLoadBalancerName": {},
          "LayerId": {}
        }
      }
    },
    "CloneStack": {
      "input": {
        "type": "structure",
        "required": [
          "SourceStackId",
          "ServiceRoleArn"
        ],
        "members": {
          "SourceStackId": {},
          "Name": {},
          "Region": {},
          "VpcId": {},
          "Attributes": {
            "shape": "S8"
          },
          "ServiceRoleArn": {},
          "DefaultInstanceProfileArn": {},
          "DefaultOs": {},
          "HostnameTheme": {},
          "DefaultAvailabilityZone": {},
          "DefaultSubnetId": {},
          "CustomJson": {},
          "ConfigurationManager": {
            "shape": "Sa"
          },
          "ChefConfiguration": {
            "shape": "Sb"
          },
          "UseCustomCookbooks": {
            "type": "boolean"
          },
          "UseOpsworksSecurityGroups": {
            "type": "boolean"
          },
          "CustomCookbooksSource": {
            "shape": "Sd"
          },
          "DefaultSshKeyName": {},
          "ClonePermissions": {
            "type": "boolean"
          },
          "CloneAppIds": {
            "shape": "S3"
          },
          "DefaultRootDeviceType": {},
          "AgentVersion": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StackId": {}
        }
      }
    },
    "CreateApp": {
      "input": {
        "type": "structure",
        "required": [
          "StackId",
          "Name",
          "Type"
        ],
        "members": {
          "StackId": {},
          "Shortname": {},
          "Name": {},
          "Description": {},
          "DataSources": {
            "shape": "Si"
          },
          "Type": {},
          "AppSource": {
            "shape": "Sd"
          },
          "Domains": {
            "shape": "S3"
          },
          "EnableSsl": {
            "type": "boolean"
          },
          "SslConfiguration": {
            "shape": "Sl"
          },
          "Attributes": {
            "shape": "Sm"
          },
          "Environment": {
            "shape": "So"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AppId": {}
        }
      }
    },
    "CreateDeployment": {
      "input": {
        "type": "structure",
        "required": [
          "StackId",
          "Command"
        ],
        "members": {
          "StackId": {},
          "AppId": {},
          "InstanceIds": {
            "shape": "S3"
          },
          "LayerIds": {
            "shape": "S3"
          },
          "Command": {
            "shape": "Ss"
          },
          "Comment": {},
          "CustomJson": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DeploymentId": {}
        }
      }
    },
    "CreateInstance": {
      "input": {
        "type": "structure",
        "required": [
          "StackId",
          "LayerIds",
          "InstanceType"
        ],
        "members": {
          "StackId": {},
          "LayerIds": {
            "shape": "S3"
          },
          "InstanceType": {},
          "AutoScalingType": {},
          "Hostname": {},
          "Os": {},
          "AmiId": {},
          "SshKeyName": {},
          "AvailabilityZone": {},
          "VirtualizationType": {},
          "SubnetId": {},
          "Architecture": {},
          "RootDeviceType": {},
          "BlockDeviceMappings": {
            "shape": "Sz"
          },
          "InstallUpdatesOnBoot": {
            "type": "boolean"
          },
          "EbsOptimized": {
            "type": "boolean"
          },
          "AgentVersion": {},
          "Tenancy": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstanceId": {}
        }
      }
    },
    "CreateLayer": {
      "input": {
        "type": "structure",
        "required": [
          "StackId",
          "Type",
          "Name",
          "Shortname"
        ],
        "members": {
          "StackId": {},
          "Type": {},
          "Name": {},
          "Shortname": {},
          "Attributes": {
            "shape": "S17"
          },
          "CloudWatchLogsConfiguration": {
            "shape": "S19"
          },
          "CustomInstanceProfileArn": {},
          "CustomJson": {},
          "CustomSecurityGroupIds": {
            "shape": "S3"
          },
          "Packages": {
            "shape": "S3"
          },
          "VolumeConfigurations": {
            "shape": "S1f"
          },
          "EnableAutoHealing": {
            "type": "boolean"
          },
          "AutoAssignElasticIps": {
            "type": "boolean"
          },
          "AutoAssignPublicIps": {
            "type": "boolean"
          },
          "CustomRecipes": {
            "shape": "S1h"
          },
          "InstallUpdatesOnBoot": {
            "type": "boolean"
          },
          "UseEbsOptimizedInstances": {
            "type": "boolean"
          },
          "LifecycleEventConfiguration": {
            "shape": "S1i"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "LayerId": {}
        }
      }
    },
    "CreateStack": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "Region",
          "ServiceRoleArn",
          "DefaultInstanceProfileArn"
        ],
        "members": {
          "Name": {},
          "Region": {},
          "VpcId": {},
          "Attributes": {
            "shape": "S8"
          },
          "ServiceRoleArn": {},
          "DefaultInstanceProfileArn": {},
          "DefaultOs": {},
          "HostnameTheme": {},
          "DefaultAvailabilityZone": {},
          "DefaultSubnetId": {},
          "CustomJson": {},
          "ConfigurationManager": {
            "shape": "Sa"
          },
          "ChefConfiguration": {
            "shape": "Sb"
          },
          "UseCustomCookbooks": {
            "type": "boolean"
          },
          "UseOpsworksSecurityGroups": {
            "type": "boolean"
          },
          "CustomCookbooksSource": {
            "shape": "Sd"
          },
          "DefaultSshKeyName": {},
          "DefaultRootDeviceType": {},
          "AgentVersion": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StackId": {}
        }
      }
    },
    "CreateUserProfile": {
      "input": {
        "type": "structure",
        "required": [
          "IamUserArn"
        ],
        "members": {
          "IamUserArn": {},
          "SshUsername": {},
          "SshPublicKey": {},
          "AllowSelfManagement": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IamUserArn": {}
        }
      }
    },
    "DeleteApp": {
      "input": {
        "type": "structure",
        "required": [
          "AppId"
        ],
        "members": {
          "AppId": {}
        }
      }
    },
    "DeleteInstance": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "InstanceId": {},
          "DeleteElasticIp": {
            "type": "boolean"
          },
          "DeleteVolumes": {
            "type": "boolean"
          }
        }
      }
    },
    "DeleteLayer": {
      "input": {
        "type": "structure",
        "required": [
          "LayerId"
        ],
        "members": {
          "LayerId": {}
        }
      }
    },
    "DeleteStack": {
      "input": {
        "type": "structure",
        "required": [
          "StackId"
        ],
        "members": {
          "StackId": {}
        }
      }
    },
    "DeleteUserProfile": {
      "input": {
        "type": "structure",
        "required": [
          "IamUserArn"
        ],
        "members": {
          "IamUserArn": {}
        }
      }
    },
    "DeregisterEcsCluster": {
      "input": {
        "type": "structure",
        "required": [
          "EcsClusterArn"
        ],
        "members": {
          "EcsClusterArn": {}
        }
      }
    },
    "DeregisterElasticIp": {
      "input": {
        "type": "structure",
        "required": [
          "ElasticIp"
        ],
        "members": {
          "ElasticIp": {}
        }
      }
    },
    "DeregisterInstance": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "InstanceId": {}
        }
      }
    },
    "DeregisterRdsDbInstance": {
      "input": {
        "type": "structure",
        "required": [
          "RdsDbInstanceArn"
        ],
        "members": {
          "RdsDbInstanceArn": {}
        }
      }
    },
    "DeregisterVolume": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeId"
        ],
        "members": {
          "VolumeId": {}
        }
      }
    },
    "DescribeAgentVersions": {
      "input": {
        "type": "structure",
        "members": {
          "StackId": {},
          "ConfigurationManager": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AgentVersions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Version": {},
                "ConfigurationManager": {
                  "shape": "Sa"
                }
              }
            }
          }
        }
      }
    },
    "DescribeApps": {
      "input": {
        "type": "structure",
        "members": {
          "StackId": {},
          "AppIds": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Apps": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "AppId": {},
                "StackId": {},
                "Shortname": {},
                "Name": {},
                "Description": {},
                "DataSources": {
                  "shape": "Si"
                },
                "Type": {},
                "AppSource": {
                  "shape": "Sd"
                },
                "Domains": {
                  "shape": "S3"
                },
                "EnableSsl": {
                  "type": "boolean"
                },
                "SslConfiguration": {
                  "shape": "Sl"
                },
                "Attributes": {
                  "shape": "Sm"
                },
                "CreatedAt": {},
                "Environment": {
                  "shape": "So"
                }
              }
            }
          }
        }
      }
    },
    "DescribeCommands": {
      "input": {
        "type": "structure",
        "members": {
          "DeploymentId": {},
          "InstanceId": {},
          "CommandIds": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Commands": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "CommandId": {},
                "InstanceId": {},
                "DeploymentId": {},
                "CreatedAt": {},
                "AcknowledgedAt": {},
                "CompletedAt": {},
                "Status": {},
                "ExitCode": {
                  "type": "integer"
                },
                "LogUrl": {},
                "Type": {}
              }
            }
          }
        }
      }
    },
    "DescribeDeployments": {
      "input": {
        "type": "structure",
        "members": {
          "StackId": {},
          "AppId": {},
          "DeploymentIds": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Deployments": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "DeploymentId": {},
                "StackId": {},
                "AppId": {},
                "CreatedAt": {},
                "CompletedAt": {},
                "Duration": {
                  "type": "integer"
                },
                "IamUserArn": {},
                "Comment": {},
                "Command": {
                  "shape": "Ss"
                },
                "Status": {},
                "CustomJson": {},
                "InstanceIds": {
                  "shape": "S3"
                }
              }
            }
          }
        }
      }
    },
    "DescribeEcsClusters": {
      "input": {
        "type": "structure",
        "members": {
          "EcsClusterArns": {
            "shape": "S3"
          },
          "StackId": {},
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "EcsClusters": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "EcsClusterArn": {},
                "EcsClusterName": {},
                "StackId": {},
                "RegisteredAt": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeElasticIps": {
      "input": {
        "type": "structure",
        "members": {
          "InstanceId": {},
          "StackId": {},
          "Ips": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ElasticIps": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Ip": {},
                "Name": {},
                "Domain": {},
                "Region": {},
                "InstanceId": {}
              }
            }
          }
        }
      }
    },
    "DescribeElasticLoadBalancers": {
      "input": {
        "type": "structure",
        "members": {
          "StackId": {},
          "LayerIds": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ElasticLoadBalancers": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ElasticLoadBalancerName": {},
                "Region": {},
                "DnsName": {},
                "StackId": {},
                "LayerId": {},
                "VpcId": {},
                "AvailabilityZones": {
                  "shape": "S3"
                },
                "SubnetIds": {
                  "shape": "S3"
                },
                "Ec2InstanceIds": {
                  "shape": "S3"
                }
              }
            }
          }
        }
      }
    },
    "DescribeInstances": {
      "input": {
        "type": "structure",
        "members": {
          "StackId": {},
          "LayerId": {},
          "InstanceIds": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Instances": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "AgentVersion": {},
                "AmiId": {},
                "Architecture": {},
                "Arn": {},
                "AutoScalingType": {},
                "AvailabilityZone": {},
                "BlockDeviceMappings": {
                  "shape": "Sz"
                },
                "CreatedAt": {},
                "EbsOptimized": {
                  "type": "boolean"
                },
                "Ec2InstanceId": {},
                "EcsClusterArn": {},
                "EcsContainerInstanceArn": {},
                "ElasticIp": {},
                "Hostname": {},
                "InfrastructureClass": {},
                "InstallUpdatesOnBoot": {
                  "type": "boolean"
                },
                "InstanceId": {},
                "InstanceProfileArn": {},
                "InstanceType": {},
                "LastServiceErrorId": {},
                "LayerIds": {
                  "shape": "S3"
                },
                "Os": {},
                "Platform": {},
                "PrivateDns": {},
                "PrivateIp": {},
                "PublicDns": {},
                "PublicIp": {},
                "RegisteredBy": {},
                "ReportedAgentVersion": {},
                "ReportedOs": {
                  "type": "structure",
                  "members": {
                    "Family": {},
                    "Name": {},
                    "Version": {}
                  }
                },
                "RootDeviceType": {},
                "RootDeviceVolumeId": {},
                "SecurityGroupIds": {
                  "shape": "S3"
                },
                "SshHostDsaKeyFingerprint": {},
                "SshHostRsaKeyFingerprint": {},
                "SshKeyName": {},
                "StackId": {},
                "Status": {},
                "SubnetId": {},
                "Tenancy": {},
                "VirtualizationType": {}
              }
            }
          }
        }
      }
    },
    "DescribeLayers": {
      "input": {
        "type": "structure",
        "members": {
          "StackId": {},
          "LayerIds": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Layers": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Arn": {},
                "StackId": {},
                "LayerId": {},
                "Type": {},
                "Name": {},
                "Shortname": {},
                "Attributes": {
                  "shape": "S17"
                },
                "CloudWatchLogsConfiguration": {
                  "shape": "S19"
                },
                "CustomInstanceProfileArn": {},
                "CustomJson": {},
                "CustomSecurityGroupIds": {
                  "shape": "S3"
                },
                "DefaultSecurityGroupNames": {
                  "shape": "S3"
                },
                "Packages": {
                  "shape": "S3"
                },
                "VolumeConfigurations": {
                  "shape": "S1f"
                },
                "EnableAutoHealing": {
                  "type": "boolean"
                },
                "AutoAssignElasticIps": {
                  "type": "boolean"
                },
                "AutoAssignPublicIps": {
                  "type": "boolean"
                },
                "DefaultRecipes": {
                  "shape": "S1h"
                },
                "CustomRecipes": {
                  "shape": "S1h"
                },
                "CreatedAt": {},
                "InstallUpdatesOnBoot": {
                  "type": "boolean"
                },
                "UseEbsOptimizedInstances": {
                  "type": "boolean"
                },
                "LifecycleEventConfiguration": {
                  "shape": "S1i"
                }
              }
            }
          }
        }
      }
    },
    "DescribeLoadBasedAutoScaling": {
      "input": {
        "type": "structure",
        "required": [
          "LayerIds"
        ],
        "members": {
          "LayerIds": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "LoadBasedAutoScalingConfigurations": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "LayerId": {},
                "Enable": {
                  "type": "boolean"
                },
                "UpScaling": {
                  "shape": "S36"
                },
                "DownScaling": {
                  "shape": "S36"
                }
              }
            }
          }
        }
      }
    },
    "DescribeMyUserProfile": {
      "output": {
        "type": "structure",
        "members": {
          "UserProfile": {
            "type": "structure",
            "members": {
              "IamUserArn": {},
              "Name": {},
              "SshUsername": {},
              "SshPublicKey": {}
            }
          }
        }
      }
    },
    "DescribePermissions": {
      "input": {
        "type": "structure",
        "members": {
          "IamUserArn": {},
          "StackId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Permissions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "StackId": {},
                "IamUserArn": {},
                "AllowSsh": {
                  "type": "boolean"
                },
                "AllowSudo": {
                  "type": "boolean"
                },
                "Level": {}
              }
            }
          }
        }
      }
    },
    "DescribeRaidArrays": {
      "input": {
        "type": "structure",
        "members": {
          "InstanceId": {},
          "StackId": {},
          "RaidArrayIds": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RaidArrays": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "RaidArrayId": {},
                "InstanceId": {},
                "Name": {},
                "RaidLevel": {
                  "type": "integer"
                },
                "NumberOfDisks": {
                  "type": "integer"
                },
                "Size": {
                  "type": "integer"
                },
                "Device": {},
                "MountPoint": {},
                "AvailabilityZone": {},
                "CreatedAt": {},
                "StackId": {},
                "VolumeType": {},
                "Iops": {
                  "type": "integer"
                }
              }
            }
          }
        }
      }
    },
    "DescribeRdsDbInstances": {
      "input": {
        "type": "structure",
        "required": [
          "StackId"
        ],
        "members": {
          "StackId": {},
          "RdsDbInstanceArns": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RdsDbInstances": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "RdsDbInstanceArn": {},
                "DbInstanceIdentifier": {},
                "DbUser": {},
                "DbPassword": {},
                "Region": {},
                "Address": {},
                "Engine": {},
                "StackId": {},
                "MissingOnRds": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      }
    },
    "DescribeServiceErrors": {
      "input": {
        "type": "structure",
        "members": {
          "StackId": {},
          "InstanceId": {},
          "ServiceErrorIds": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ServiceErrors": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ServiceErrorId": {},
                "StackId": {},
                "InstanceId": {},
                "Type": {},
                "Message": {},
                "CreatedAt": {}
              }
            }
          }
        }
      }
    },
    "DescribeStackProvisioningParameters": {
      "input": {
        "type": "structure",
        "required": [
          "StackId"
        ],
        "members": {
          "StackId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AgentInstallerUrl": {},
          "Parameters": {
            "type": "map",
            "key": {},
            "value": {}
          }
        }
      }
    },
    "DescribeStackSummary": {
      "input": {
        "type": "structure",
        "required": [
          "StackId"
        ],
        "members": {
          "StackId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StackSummary": {
            "type": "structure",
            "members": {
              "StackId": {},
              "Name": {},
              "Arn": {},
              "LayersCount": {
                "type": "integer"
              },
              "AppsCount": {
                "type": "integer"
              },
              "InstancesCount": {
                "type": "structure",
                "members": {
                  "Assigning": {
                    "type": "integer"
                  },
                  "Booting": {
                    "type": "integer"
                  },
                  "ConnectionLost": {
                    "type": "integer"
                  },
                  "Deregistering": {
                    "type": "integer"
                  },
                  "Online": {
                    "type": "integer"
                  },
                  "Pending": {
                    "type": "integer"
                  },
                  "Rebooting": {
                    "type": "integer"
                  },
                  "Registered": {
                    "type": "integer"
                  },
                  "Registering": {
                    "type": "integer"
                  },
                  "Requested": {
                    "type": "integer"
                  },
                  "RunningSetup": {
                    "type": "integer"
                  },
                  "SetupFailed": {
                    "type": "integer"
                  },
                  "ShuttingDown": {
                    "type": "integer"
                  },
                  "StartFailed": {
                    "type": "integer"
                  },
                  "Stopped": {
                    "type": "integer"
                  },
                  "Stopping": {
                    "type": "integer"
                  },
                  "Terminated": {
                    "type": "integer"
                  },
                  "Terminating": {
                    "type": "integer"
                  },
                  "Unassigning": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        }
      }
    },
    "DescribeStacks": {
      "input": {
        "type": "structure",
        "members": {
          "StackIds": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Stacks": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "StackId": {},
                "Name": {},
                "Arn": {},
                "Region": {},
                "VpcId": {},
                "Attributes": {
                  "shape": "S8"
                },
                "ServiceRoleArn": {},
                "DefaultInstanceProfileArn": {},
                "DefaultOs": {},
                "HostnameTheme": {},
                "DefaultAvailabilityZone": {},
                "DefaultSubnetId": {},
                "CustomJson": {},
                "ConfigurationManager": {
                  "shape": "Sa"
                },
                "ChefConfiguration": {
                  "shape": "Sb"
                },
                "UseCustomCookbooks": {
                  "type": "boolean"
                },
                "UseOpsworksSecurityGroups": {
                  "type": "boolean"
                },
                "CustomCookbooksSource": {
                  "shape": "Sd"
                },
                "DefaultSshKeyName": {},
                "CreatedAt": {},
                "DefaultRootDeviceType": {},
                "AgentVersion": {}
              }
            }
          }
        }
      }
    },
    "DescribeTimeBasedAutoScaling": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceIds"
        ],
        "members": {
          "InstanceIds": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TimeBasedAutoScalingConfigurations": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "InstanceId": {},
                "AutoScalingSchedule": {
                  "shape": "S46"
                }
              }
            }
          }
        }
      }
    },
    "DescribeUserProfiles": {
      "input": {
        "type": "structure",
        "members": {
          "IamUserArns": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UserProfiles": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "IamUserArn": {},
                "Name": {},
                "SshUsername": {},
                "SshPublicKey": {},
                "AllowSelfManagement": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      }
    },
    "DescribeVolumes": {
      "input": {
        "type": "structure",
        "members": {
          "InstanceId": {},
          "StackId": {},
          "RaidArrayId": {},
          "VolumeIds": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Volumes": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "VolumeId": {},
                "Ec2VolumeId": {},
                "Name": {},
                "RaidArrayId": {},
                "InstanceId": {},
                "Status": {},
                "Size": {
                  "type": "integer"
                },
                "Device": {},
                "MountPoint": {},
                "Region": {},
                "AvailabilityZone": {},
                "VolumeType": {},
                "Iops": {
                  "type": "integer"
                }
              }
            }
          }
        }
      }
    },
    "DetachElasticLoadBalancer": {
      "input": {
        "type": "structure",
        "required": [
          "ElasticLoadBalancerName",
          "LayerId"
        ],
        "members": {
          "ElasticLoadBalancerName": {},
          "LayerId": {}
        }
      }
    },
    "DisassociateElasticIp": {
      "input": {
        "type": "structure",
        "required": [
          "ElasticIp"
        ],
        "members": {
          "ElasticIp": {}
        }
      }
    },
    "GetHostnameSuggestion": {
      "input": {
        "type": "structure",
        "required": [
          "LayerId"
        ],
        "members": {
          "LayerId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "LayerId": {},
          "Hostname": {}
        }
      }
    },
    "GrantAccess": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "InstanceId": {},
          "ValidForInMinutes": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TemporaryCredential": {
            "type": "structure",
            "members": {
              "Username": {},
              "Password": {},
              "ValidForInMinutes": {
                "type": "integer"
              },
              "InstanceId": {}
            }
          }
        }
      }
    },
    "ListTags": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArn"
        ],
        "members": {
          "ResourceArn": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Tags": {
            "shape": "S4v"
          },
          "NextToken": {}
        }
      }
    },
    "RebootInstance": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "InstanceId": {}
        }
      }
    },
    "RegisterEcsCluster": {
      "input": {
        "type": "structure",
        "required": [
          "EcsClusterArn",
          "StackId"
        ],
        "members": {
          "EcsClusterArn": {},
          "StackId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "EcsClusterArn": {}
        }
      }
    },
    "RegisterElasticIp": {
      "input": {
        "type": "structure",
        "required": [
          "ElasticIp",
          "StackId"
        ],
        "members": {
          "ElasticIp": {},
          "StackId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ElasticIp": {}
        }
      }
    },
    "RegisterInstance": {
      "input": {
        "type": "structure",
        "required": [
          "StackId"
        ],
        "members": {
          "StackId": {},
          "Hostname": {},
          "PublicIp": {},
          "PrivateIp": {},
          "RsaPublicKey": {},
          "RsaPublicKeyFingerprint": {},
          "InstanceIdentity": {
            "type": "structure",
            "members": {
              "Document": {},
              "Signature": {}
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstanceId": {}
        }
      }
    },
    "RegisterRdsDbInstance": {
      "input": {
        "type": "structure",
        "required": [
          "StackId",
          "RdsDbInstanceArn",
          "DbUser",
          "DbPassword"
        ],
        "members": {
          "StackId": {},
          "RdsDbInstanceArn": {},
          "DbUser": {},
          "DbPassword": {}
        }
      }
    },
    "RegisterVolume": {
      "input": {
        "type": "structure",
        "required": [
          "StackId"
        ],
        "members": {
          "Ec2VolumeId": {},
          "StackId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VolumeId": {}
        }
      }
    },
    "SetLoadBasedAutoScaling": {
      "input": {
        "type": "structure",
        "required": [
          "LayerId"
        ],
        "members": {
          "LayerId": {},
          "Enable": {
            "type": "boolean"
          },
          "UpScaling": {
            "shape": "S36"
          },
          "DownScaling": {
            "shape": "S36"
          }
        }
      }
    },
    "SetPermission": {
      "input": {
        "type": "structure",
        "required": [
          "StackId",
          "IamUserArn"
        ],
        "members": {
          "StackId": {},
          "IamUserArn": {},
          "AllowSsh": {
            "type": "boolean"
          },
          "AllowSudo": {
            "type": "boolean"
          },
          "Level": {}
        }
      }
    },
    "SetTimeBasedAutoScaling": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "InstanceId": {},
          "AutoScalingSchedule": {
            "shape": "S46"
          }
        }
      }
    },
    "StartInstance": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "InstanceId": {}
        }
      }
    },
    "StartStack": {
      "input": {
        "type": "structure",
        "required": [
          "StackId"
        ],
        "members": {
          "StackId": {}
        }
      }
    },
    "StopInstance": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "InstanceId": {}
        }
      }
    },
    "StopStack": {
      "input": {
        "type": "structure",
        "required": [
          "StackId"
        ],
        "members": {
          "StackId": {}
        }
      }
    },
    "TagResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArn",
          "Tags"
        ],
        "members": {
          "ResourceArn": {},
          "Tags": {
            "shape": "S4v"
          }
        }
      }
    },
    "UnassignInstance": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "InstanceId": {}
        }
      }
    },
    "UnassignVolume": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeId"
        ],
        "members": {
          "VolumeId": {}
        }
      }
    },
    "UntagResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArn",
          "TagKeys"
        ],
        "members": {
          "ResourceArn": {},
          "TagKeys": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "UpdateApp": {
      "input": {
        "type": "structure",
        "required": [
          "AppId"
        ],
        "members": {
          "AppId": {},
          "Name": {},
          "Description": {},
          "DataSources": {
            "shape": "Si"
          },
          "Type": {},
          "AppSource": {
            "shape": "Sd"
          },
          "Domains": {
            "shape": "S3"
          },
          "EnableSsl": {
            "type": "boolean"
          },
          "SslConfiguration": {
            "shape": "Sl"
          },
          "Attributes": {
            "shape": "Sm"
          },
          "Environment": {
            "shape": "So"
          }
        }
      }
    },
    "UpdateElasticIp": {
      "input": {
        "type": "structure",
        "required": [
          "ElasticIp"
        ],
        "members": {
          "ElasticIp": {},
          "Name": {}
        }
      }
    },
    "UpdateInstance": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "InstanceId": {},
          "LayerIds": {
            "shape": "S3"
          },
          "InstanceType": {},
          "AutoScalingType": {},
          "Hostname": {},
          "Os": {},
          "AmiId": {},
          "SshKeyName": {},
          "Architecture": {},
          "InstallUpdatesOnBoot": {
            "type": "boolean"
          },
          "EbsOptimized": {
            "type": "boolean"
          },
          "AgentVersion": {}
        }
      }
    },
    "UpdateLayer": {
      "input": {
        "type": "structure",
        "required": [
          "LayerId"
        ],
        "members": {
          "LayerId": {},
          "Name": {},
          "Shortname": {},
          "Attributes": {
            "shape": "S17"
          },
          "CloudWatchLogsConfiguration": {
            "shape": "S19"
          },
          "CustomInstanceProfileArn": {},
          "CustomJson": {},
          "CustomSecurityGroupIds": {
            "shape": "S3"
          },
          "Packages": {
            "shape": "S3"
          },
          "VolumeConfigurations": {
            "shape": "S1f"
          },
          "EnableAutoHealing": {
            "type": "boolean"
          },
          "AutoAssignElasticIps": {
            "type": "boolean"
          },
          "AutoAssignPublicIps": {
            "type": "boolean"
          },
          "CustomRecipes": {
            "shape": "S1h"
          },
          "InstallUpdatesOnBoot": {
            "type": "boolean"
          },
          "UseEbsOptimizedInstances": {
            "type": "boolean"
          },
          "LifecycleEventConfiguration": {
            "shape": "S1i"
          }
        }
      }
    },
    "UpdateMyUserProfile": {
      "input": {
        "type": "structure",
        "members": {
          "SshPublicKey": {}
        }
      }
    },
    "UpdateRdsDbInstance": {
      "input": {
        "type": "structure",
        "required": [
          "RdsDbInstanceArn"
        ],
        "members": {
          "RdsDbInstanceArn": {},
          "DbUser": {},
          "DbPassword": {}
        }
      }
    },
    "UpdateStack": {
      "input": {
        "type": "structure",
        "required": [
          "StackId"
        ],
        "members": {
          "StackId": {},
          "Name": {},
          "Attributes": {
            "shape": "S8"
          },
          "ServiceRoleArn": {},
          "DefaultInstanceProfileArn": {},
          "DefaultOs": {},
          "HostnameTheme": {},
          "DefaultAvailabilityZone": {},
          "DefaultSubnetId": {},
          "CustomJson": {},
          "ConfigurationManager": {
            "shape": "Sa"
          },
          "ChefConfiguration": {
            "shape": "Sb"
          },
          "UseCustomCookbooks": {
            "type": "boolean"
          },
          "CustomCookbooksSource": {
            "shape": "Sd"
          },
          "DefaultSshKeyName": {},
          "DefaultRootDeviceType": {},
          "UseOpsworksSecurityGroups": {
            "type": "boolean"
          },
          "AgentVersion": {}
        }
      }
    },
    "UpdateUserProfile": {
      "input": {
        "type": "structure",
        "required": [
          "IamUserArn"
        ],
        "members": {
          "IamUserArn": {},
          "SshUsername": {},
          "SshPublicKey": {},
          "AllowSelfManagement": {
            "type": "boolean"
          }
        }
      }
    },
    "UpdateVolume": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeId"
        ],
        "members": {
          "VolumeId": {},
          "Name": {},
          "MountPoint": {}
        }
      }
    }
  },
  "shapes": {
    "S3": {
      "type": "list",
      "member": {}
    },
    "S8": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "Sa": {
      "type": "structure",
      "members": {
        "Name": {},
        "Version": {}
      }
    },
    "Sb": {
      "type": "structure",
      "members": {
        "ManageBerkshelf": {
          "type": "boolean"
        },
        "BerkshelfVersion": {}
      }
    },
    "Sd": {
      "type": "structure",
      "members": {
        "Type": {},
        "Url": {},
        "Username": {},
        "Password": {},
        "SshKey": {},
        "Revision": {}
      }
    },
    "Si": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Type": {},
          "Arn": {},
          "DatabaseName": {}
        }
      }
    },
    "Sl": {
      "type": "structure",
      "required": [
        "Certificate",
        "PrivateKey"
      ],
      "members": {
        "Certificate": {},
        "PrivateKey": {},
        "Chain": {}
      }
    },
    "Sm": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "So": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Key",
          "Value"
        ],
        "members": {
          "Key": {},
          "Value": {},
          "Secure": {
            "type": "boolean"
          }
        }
      }
    },
    "Ss": {
      "type": "structure",
      "required": [
        "Name"
      ],
      "members": {
        "Name": {},
        "Args": {
          "type": "map",
          "key": {},
          "value": {
            "shape": "S3"
          }
        }
      }
    },
    "Sz": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "DeviceName": {},
          "NoDevice": {},
          "VirtualName": {},
          "Ebs": {
            "type": "structure",
            "members": {
              "SnapshotId": {},
              "Iops": {
                "type": "integer"
              },
              "VolumeSize": {
                "type": "integer"
              },
              "VolumeType": {},
              "DeleteOnTermination": {
                "type": "boolean"
              }
            }
          }
        }
      }
    },
    "S17": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S19": {
      "type": "structure",
      "members": {
        "Enabled": {
          "type": "boolean"
        },
        "LogStreams": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "LogGroupName": {},
              "DatetimeFormat": {},
              "TimeZone": {},
              "File": {},
              "FileFingerprintLines": {},
              "MultiLineStartPattern": {},
              "InitialPosition": {},
              "Encoding": {},
              "BufferDuration": {
                "type": "integer"
              },
              "BatchCount": {
                "type": "integer"
              },
              "BatchSize": {
                "type": "integer"
              }
            }
          }
        }
      }
    },
    "S1f": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "MountPoint",
          "NumberOfDisks",
          "Size"
        ],
        "members": {
          "MountPoint": {},
          "RaidLevel": {
            "type": "integer"
          },
          "NumberOfDisks": {
            "type": "integer"
          },
          "Size": {
            "type": "integer"
          },
          "VolumeType": {},
          "Iops": {
            "type": "integer"
          }
        }
      }
    },
    "S1h": {
      "type": "structure",
      "members": {
        "Setup": {
          "shape": "S3"
        },
        "Configure": {
          "shape": "S3"
        },
        "Deploy": {
          "shape": "S3"
        },
        "Undeploy": {
          "shape": "S3"
        },
        "Shutdown": {
          "shape": "S3"
        }
      }
    },
    "S1i": {
      "type": "structure",
      "members": {
        "Shutdown": {
          "type": "structure",
          "members": {
            "ExecutionTimeout": {
              "type": "integer"
            },
            "DelayUntilElbConnectionsDrained": {
              "type": "boolean"
            }
          }
        }
      }
    },
    "S36": {
      "type": "structure",
      "members": {
        "InstanceCount": {
          "type": "integer"
        },
        "ThresholdsWaitTime": {
          "type": "integer"
        },
        "IgnoreMetricsTime": {
          "type": "integer"
        },
        "CpuThreshold": {
          "type": "double"
        },
        "MemoryThreshold": {
          "type": "double"
        },
        "LoadThreshold": {
          "type": "double"
        },
        "Alarms": {
          "shape": "S3"
        }
      }
    },
    "S46": {
      "type": "structure",
      "members": {
        "Monday": {
          "shape": "S47"
        },
        "Tuesday": {
          "shape": "S47"
        },
        "Wednesday": {
          "shape": "S47"
        },
        "Thursday": {
          "shape": "S47"
        },
        "Friday": {
          "shape": "S47"
        },
        "Saturday": {
          "shape": "S47"
        },
        "Sunday": {
          "shape": "S47"
        }
      }
    },
    "S47": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S4v": {
      "type": "map",
      "key": {},
      "value": {}
    }
  }
}
},{}],115:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeApps": {
      "result_key": "Apps"
    },
    "DescribeCommands": {
      "result_key": "Commands"
    },
    "DescribeDeployments": {
      "result_key": "Deployments"
    },
    "DescribeEcsClusters": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "EcsClusters"
    },
    "DescribeElasticIps": {
      "result_key": "ElasticIps"
    },
    "DescribeElasticLoadBalancers": {
      "result_key": "ElasticLoadBalancers"
    },
    "DescribeInstances": {
      "result_key": "Instances"
    },
    "DescribeLayers": {
      "result_key": "Layers"
    },
    "DescribeLoadBasedAutoScaling": {
      "result_key": "LoadBasedAutoScalingConfigurations"
    },
    "DescribePermissions": {
      "result_key": "Permissions"
    },
    "DescribeRaidArrays": {
      "result_key": "RaidArrays"
    },
    "DescribeServiceErrors": {
      "result_key": "ServiceErrors"
    },
    "DescribeStacks": {
      "result_key": "Stacks"
    },
    "DescribeTimeBasedAutoScaling": {
      "result_key": "TimeBasedAutoScalingConfigurations"
    },
    "DescribeUserProfiles": {
      "result_key": "UserProfiles"
    },
    "DescribeVolumes": {
      "result_key": "Volumes"
    }
  }
}
},{}],116:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "AppExists": {
      "delay": 1,
      "operation": "DescribeApps",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": 200,
          "matcher": "status",
          "state": "success"
        },
        {
          "matcher": "status",
          "expected": 400,
          "state": "failure"
        }
      ]
    },
    "DeploymentSuccessful": {
      "delay": 15,
      "operation": "DescribeDeployments",
      "maxAttempts": 40,
      "description": "Wait until a deployment has completed successfully",
      "acceptors": [
        {
          "expected": "successful",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Deployments[].Status"
        },
        {
          "expected": "failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Deployments[].Status"
        }
      ]
    },
    "InstanceOnline": {
      "delay": 15,
      "operation": "DescribeInstances",
      "maxAttempts": 40,
      "description": "Wait until OpsWorks instance is online.",
      "acceptors": [
        {
          "expected": "online",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Instances[].Status"
        },
        {
          "expected": "setup_failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "shutting_down",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "start_failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "stopped",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "stopping",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "terminating",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "terminated",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "stop_failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        }
      ]
    },
    "InstanceRegistered": {
      "delay": 15,
      "operation": "DescribeInstances",
      "maxAttempts": 40,
      "description": "Wait until OpsWorks instance is registered.",
      "acceptors": [
        {
          "expected": "registered",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Instances[].Status"
        },
        {
          "expected": "setup_failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "shutting_down",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "stopped",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "stopping",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "terminating",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "terminated",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "stop_failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        }
      ]
    },
    "InstanceStopped": {
      "delay": 15,
      "operation": "DescribeInstances",
      "maxAttempts": 40,
      "description": "Wait until OpsWorks instance is stopped.",
      "acceptors": [
        {
          "expected": "stopped",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Instances[].Status"
        },
        {
          "expected": "booting",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "online",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "pending",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "rebooting",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "requested",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "running_setup",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "setup_failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "start_failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "stop_failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        }
      ]
    },
    "InstanceTerminated": {
      "delay": 15,
      "operation": "DescribeInstances",
      "maxAttempts": 40,
      "description": "Wait until OpsWorks instance is terminated.",
      "acceptors": [
        {
          "expected": "terminated",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Instances[].Status"
        },
        {
          "expected": "ResourceNotFoundException",
          "matcher": "error",
          "state": "success"
        },
        {
          "expected": "booting",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "online",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "pending",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "rebooting",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "requested",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "running_setup",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "setup_failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        },
        {
          "expected": "start_failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Instances[].Status"
        }
      ]
    }
  }
}

},{}],117:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2016-06-10",
    "endpointPrefix": "polly",
    "protocol": "rest-json",
    "serviceFullName": "Amazon Polly",
    "serviceId": "Polly",
    "signatureVersion": "v4",
    "uid": "polly-2016-06-10"
  },
  "operations": {
    "DeleteLexicon": {
      "http": {
        "method": "DELETE",
        "requestUri": "/v1/lexicons/{LexiconName}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {
            "shape": "S2",
            "location": "uri",
            "locationName": "LexiconName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DescribeVoices": {
      "http": {
        "method": "GET",
        "requestUri": "/v1/voices",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "LanguageCode": {
            "location": "querystring",
            "locationName": "LanguageCode"
          },
          "NextToken": {
            "location": "querystring",
            "locationName": "NextToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Voices": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Gender": {},
                "Id": {},
                "LanguageCode": {},
                "LanguageName": {},
                "Name": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "GetLexicon": {
      "http": {
        "method": "GET",
        "requestUri": "/v1/lexicons/{LexiconName}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {
            "shape": "S2",
            "location": "uri",
            "locationName": "LexiconName"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Lexicon": {
            "type": "structure",
            "members": {
              "Content": {},
              "Name": {
                "shape": "S2"
              }
            }
          },
          "LexiconAttributes": {
            "shape": "Si"
          }
        }
      }
    },
    "ListLexicons": {
      "http": {
        "method": "GET",
        "requestUri": "/v1/lexicons",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {
            "location": "querystring",
            "locationName": "NextToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Lexicons": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {
                  "shape": "S2"
                },
                "Attributes": {
                  "shape": "Si"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "PutLexicon": {
      "http": {
        "method": "PUT",
        "requestUri": "/v1/lexicons/{LexiconName}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "Content"
        ],
        "members": {
          "Name": {
            "shape": "S2",
            "location": "uri",
            "locationName": "LexiconName"
          },
          "Content": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "SynthesizeSpeech": {
      "http": {
        "requestUri": "/v1/speech",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "OutputFormat",
          "Text",
          "VoiceId"
        ],
        "members": {
          "LexiconNames": {
            "type": "list",
            "member": {
              "shape": "S2"
            }
          },
          "OutputFormat": {},
          "SampleRate": {},
          "SpeechMarkTypes": {
            "type": "list",
            "member": {}
          },
          "Text": {},
          "TextType": {},
          "VoiceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AudioStream": {
            "type": "blob",
            "streaming": true
          },
          "ContentType": {
            "location": "header",
            "locationName": "Content-Type"
          },
          "RequestCharacters": {
            "location": "header",
            "locationName": "x-amzn-RequestCharacters",
            "type": "integer"
          }
        },
        "payload": "AudioStream"
      }
    }
  },
  "shapes": {
    "S2": {
      "type": "string",
      "sensitive": true
    },
    "Si": {
      "type": "structure",
      "members": {
        "Alphabet": {},
        "LanguageCode": {},
        "LastModified": {
          "type": "timestamp"
        },
        "LexiconArn": {},
        "LexemesCount": {
          "type": "integer"
        },
        "Size": {
          "type": "integer"
        }
      }
    }
  }
}
},{}],118:[function(require,module,exports){
arguments[4][19][0].apply(exports,arguments)
},{"dup":19}],119:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2013-01-10",
    "endpointPrefix": "rds",
    "protocol": "query",
    "serviceAbbreviation": "Amazon RDS",
    "serviceFullName": "Amazon Relational Database Service",
    "serviceId": "RDS",
    "signatureVersion": "v4",
    "uid": "rds-2013-01-10",
    "xmlNamespace": "http://rds.amazonaws.com/doc/2013-01-10/"
  },
  "operations": {
    "AddSourceIdentifierToSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName",
          "SourceIdentifier"
        ],
        "members": {
          "SubscriptionName": {},
          "SourceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "AddSourceIdentifierToSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "AddTagsToResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName",
          "Tags"
        ],
        "members": {
          "ResourceName": {},
          "Tags": {
            "shape": "S9"
          }
        }
      }
    },
    "AuthorizeDBSecurityGroupIngress": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName"
        ],
        "members": {
          "DBSecurityGroupName": {},
          "CIDRIP": {},
          "EC2SecurityGroupName": {},
          "EC2SecurityGroupId": {},
          "EC2SecurityGroupOwnerId": {}
        }
      },
      "output": {
        "resultWrapper": "AuthorizeDBSecurityGroupIngressResult",
        "type": "structure",
        "members": {
          "DBSecurityGroup": {
            "shape": "Sd"
          }
        }
      }
    },
    "CopyDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "SourceDBSnapshotIdentifier",
          "TargetDBSnapshotIdentifier"
        ],
        "members": {
          "SourceDBSnapshotIdentifier": {},
          "TargetDBSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "CopyDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBSnapshot": {
            "shape": "Sk"
          }
        }
      }
    },
    "CreateDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "AllocatedStorage",
          "DBInstanceClass",
          "Engine",
          "MasterUsername",
          "MasterUserPassword"
        ],
        "members": {
          "DBName": {},
          "DBInstanceIdentifier": {},
          "AllocatedStorage": {
            "type": "integer"
          },
          "DBInstanceClass": {},
          "Engine": {},
          "MasterUsername": {},
          "MasterUserPassword": {},
          "DBSecurityGroups": {
            "shape": "Sp"
          },
          "VpcSecurityGroupIds": {
            "shape": "Sq"
          },
          "AvailabilityZone": {},
          "DBSubnetGroupName": {},
          "PreferredMaintenanceWindow": {},
          "DBParameterGroupName": {},
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "PreferredBackupWindow": {},
          "Port": {
            "type": "integer"
          },
          "MultiAZ": {
            "type": "boolean"
          },
          "EngineVersion": {},
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "CharacterSetName": {},
          "PubliclyAccessible": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "CreateDBInstanceReadReplica": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "SourceDBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "SourceDBInstanceIdentifier": {},
          "DBInstanceClass": {},
          "AvailabilityZone": {},
          "Port": {
            "type": "integer"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "PubliclyAccessible": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBInstanceReadReplicaResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "CreateDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName",
          "DBParameterGroupFamily",
          "Description"
        ],
        "members": {
          "DBParameterGroupName": {},
          "DBParameterGroupFamily": {},
          "Description": {}
        }
      },
      "output": {
        "resultWrapper": "CreateDBParameterGroupResult",
        "type": "structure",
        "members": {
          "DBParameterGroup": {
            "shape": "S1c"
          }
        }
      }
    },
    "CreateDBSecurityGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName",
          "DBSecurityGroupDescription"
        ],
        "members": {
          "DBSecurityGroupName": {},
          "DBSecurityGroupDescription": {}
        }
      },
      "output": {
        "resultWrapper": "CreateDBSecurityGroupResult",
        "type": "structure",
        "members": {
          "DBSecurityGroup": {
            "shape": "Sd"
          }
        }
      }
    },
    "CreateDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBSnapshotIdentifier",
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBSnapshotIdentifier": {},
          "DBInstanceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "CreateDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBSnapshot": {
            "shape": "Sk"
          }
        }
      }
    },
    "CreateDBSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSubnetGroupName",
          "DBSubnetGroupDescription",
          "SubnetIds"
        ],
        "members": {
          "DBSubnetGroupName": {},
          "DBSubnetGroupDescription": {},
          "SubnetIds": {
            "shape": "S1i"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBSubnetGroupResult",
        "type": "structure",
        "members": {
          "DBSubnetGroup": {
            "shape": "S11"
          }
        }
      }
    },
    "CreateEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName",
          "SnsTopicArn"
        ],
        "members": {
          "SubscriptionName": {},
          "SnsTopicArn": {},
          "SourceType": {},
          "EventCategories": {
            "shape": "S6"
          },
          "SourceIds": {
            "shape": "S5"
          },
          "Enabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "CreateOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "OptionGroupName",
          "EngineName",
          "MajorEngineVersion",
          "OptionGroupDescription"
        ],
        "members": {
          "OptionGroupName": {},
          "EngineName": {},
          "MajorEngineVersion": {},
          "OptionGroupDescription": {}
        }
      },
      "output": {
        "resultWrapper": "CreateOptionGroupResult",
        "type": "structure",
        "members": {
          "OptionGroup": {
            "shape": "S1o"
          }
        }
      }
    },
    "DeleteDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "SkipFinalSnapshot": {
            "type": "boolean"
          },
          "FinalDBSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "DeleteDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName"
        ],
        "members": {
          "DBParameterGroupName": {}
        }
      }
    },
    "DeleteDBSecurityGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName"
        ],
        "members": {
          "DBSecurityGroupName": {}
        }
      }
    },
    "DeleteDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBSnapshotIdentifier"
        ],
        "members": {
          "DBSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBSnapshot": {
            "shape": "Sk"
          }
        }
      }
    },
    "DeleteDBSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSubnetGroupName"
        ],
        "members": {
          "DBSubnetGroupName": {}
        }
      }
    },
    "DeleteEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName"
        ],
        "members": {
          "SubscriptionName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "DeleteOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "OptionGroupName"
        ],
        "members": {
          "OptionGroupName": {}
        }
      }
    },
    "DescribeDBEngineVersions": {
      "input": {
        "type": "structure",
        "members": {
          "Engine": {},
          "EngineVersion": {},
          "DBParameterGroupFamily": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "DefaultOnly": {
            "type": "boolean"
          },
          "ListSupportedCharacterSets": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeDBEngineVersionsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBEngineVersions": {
            "type": "list",
            "member": {
              "locationName": "DBEngineVersion",
              "type": "structure",
              "members": {
                "Engine": {},
                "EngineVersion": {},
                "DBParameterGroupFamily": {},
                "DBEngineDescription": {},
                "DBEngineVersionDescription": {},
                "DefaultCharacterSet": {
                  "shape": "S25"
                },
                "SupportedCharacterSets": {
                  "type": "list",
                  "member": {
                    "shape": "S25",
                    "locationName": "CharacterSet"
                  }
                }
              }
            }
          }
        }
      }
    },
    "DescribeDBInstances": {
      "input": {
        "type": "structure",
        "members": {
          "DBInstanceIdentifier": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBInstancesResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBInstances": {
            "type": "list",
            "member": {
              "shape": "St",
              "locationName": "DBInstance"
            }
          }
        }
      }
    },
    "DescribeDBParameterGroups": {
      "input": {
        "type": "structure",
        "members": {
          "DBParameterGroupName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBParameterGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBParameterGroups": {
            "type": "list",
            "member": {
              "shape": "S1c",
              "locationName": "DBParameterGroup"
            }
          }
        }
      }
    },
    "DescribeDBParameters": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName"
        ],
        "members": {
          "DBParameterGroupName": {},
          "Source": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBParametersResult",
        "type": "structure",
        "members": {
          "Parameters": {
            "shape": "S2f"
          },
          "Marker": {}
        }
      }
    },
    "DescribeDBSecurityGroups": {
      "input": {
        "type": "structure",
        "members": {
          "DBSecurityGroupName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBSecurityGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBSecurityGroups": {
            "type": "list",
            "member": {
              "shape": "Sd",
              "locationName": "DBSecurityGroup"
            }
          }
        }
      }
    },
    "DescribeDBSnapshots": {
      "input": {
        "type": "structure",
        "members": {
          "DBInstanceIdentifier": {},
          "DBSnapshotIdentifier": {},
          "SnapshotType": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBSnapshotsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBSnapshots": {
            "type": "list",
            "member": {
              "shape": "Sk",
              "locationName": "DBSnapshot"
            }
          }
        }
      }
    },
    "DescribeDBSubnetGroups": {
      "input": {
        "type": "structure",
        "members": {
          "DBSubnetGroupName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBSubnetGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBSubnetGroups": {
            "type": "list",
            "member": {
              "shape": "S11",
              "locationName": "DBSubnetGroup"
            }
          }
        }
      }
    },
    "DescribeEngineDefaultParameters": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupFamily"
        ],
        "members": {
          "DBParameterGroupFamily": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEngineDefaultParametersResult",
        "type": "structure",
        "members": {
          "EngineDefaults": {
            "type": "structure",
            "members": {
              "DBParameterGroupFamily": {},
              "Marker": {},
              "Parameters": {
                "shape": "S2f"
              }
            },
            "wrapper": true
          }
        }
      }
    },
    "DescribeEventCategories": {
      "input": {
        "type": "structure",
        "members": {
          "SourceType": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEventCategoriesResult",
        "type": "structure",
        "members": {
          "EventCategoriesMapList": {
            "type": "list",
            "member": {
              "locationName": "EventCategoriesMap",
              "type": "structure",
              "members": {
                "SourceType": {},
                "EventCategories": {
                  "shape": "S6"
                }
              },
              "wrapper": true
            }
          }
        }
      }
    },
    "DescribeEventSubscriptions": {
      "input": {
        "type": "structure",
        "members": {
          "SubscriptionName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEventSubscriptionsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "EventSubscriptionsList": {
            "type": "list",
            "member": {
              "shape": "S4",
              "locationName": "EventSubscription"
            }
          }
        }
      }
    },
    "DescribeEvents": {
      "input": {
        "type": "structure",
        "members": {
          "SourceIdentifier": {},
          "SourceType": {},
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "Duration": {
            "type": "integer"
          },
          "EventCategories": {
            "shape": "S6"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEventsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "Events": {
            "type": "list",
            "member": {
              "locationName": "Event",
              "type": "structure",
              "members": {
                "SourceIdentifier": {},
                "SourceType": {},
                "Message": {},
                "EventCategories": {
                  "shape": "S6"
                },
                "Date": {
                  "type": "timestamp"
                }
              }
            }
          }
        }
      }
    },
    "DescribeOptionGroupOptions": {
      "input": {
        "type": "structure",
        "required": [
          "EngineName"
        ],
        "members": {
          "EngineName": {},
          "MajorEngineVersion": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeOptionGroupOptionsResult",
        "type": "structure",
        "members": {
          "OptionGroupOptions": {
            "type": "list",
            "member": {
              "locationName": "OptionGroupOption",
              "type": "structure",
              "members": {
                "Name": {},
                "Description": {},
                "EngineName": {},
                "MajorEngineVersion": {},
                "MinimumRequiredMinorEngineVersion": {},
                "PortRequired": {
                  "type": "boolean"
                },
                "DefaultPort": {
                  "type": "integer"
                },
                "OptionsDependedOn": {
                  "type": "list",
                  "member": {
                    "locationName": "OptionName"
                  }
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeOptionGroups": {
      "input": {
        "type": "structure",
        "members": {
          "OptionGroupName": {},
          "Marker": {},
          "MaxRecords": {
            "type": "integer"
          },
          "EngineName": {},
          "MajorEngineVersion": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeOptionGroupsResult",
        "type": "structure",
        "members": {
          "OptionGroupsList": {
            "type": "list",
            "member": {
              "shape": "S1o",
              "locationName": "OptionGroup"
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeOrderableDBInstanceOptions": {
      "input": {
        "type": "structure",
        "required": [
          "Engine"
        ],
        "members": {
          "Engine": {},
          "EngineVersion": {},
          "DBInstanceClass": {},
          "LicenseModel": {},
          "Vpc": {
            "type": "boolean"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeOrderableDBInstanceOptionsResult",
        "type": "structure",
        "members": {
          "OrderableDBInstanceOptions": {
            "type": "list",
            "member": {
              "locationName": "OrderableDBInstanceOption",
              "type": "structure",
              "members": {
                "Engine": {},
                "EngineVersion": {},
                "DBInstanceClass": {},
                "LicenseModel": {},
                "AvailabilityZones": {
                  "type": "list",
                  "member": {
                    "shape": "S14",
                    "locationName": "AvailabilityZone"
                  }
                },
                "MultiAZCapable": {
                  "type": "boolean"
                },
                "ReadReplicaCapable": {
                  "type": "boolean"
                },
                "Vpc": {
                  "type": "boolean"
                }
              },
              "wrapper": true
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeReservedDBInstances": {
      "input": {
        "type": "structure",
        "members": {
          "ReservedDBInstanceId": {},
          "ReservedDBInstancesOfferingId": {},
          "DBInstanceClass": {},
          "Duration": {},
          "ProductDescription": {},
          "OfferingType": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReservedDBInstancesResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ReservedDBInstances": {
            "type": "list",
            "member": {
              "shape": "S3m",
              "locationName": "ReservedDBInstance"
            }
          }
        }
      }
    },
    "DescribeReservedDBInstancesOfferings": {
      "input": {
        "type": "structure",
        "members": {
          "ReservedDBInstancesOfferingId": {},
          "DBInstanceClass": {},
          "Duration": {},
          "ProductDescription": {},
          "OfferingType": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReservedDBInstancesOfferingsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ReservedDBInstancesOfferings": {
            "type": "list",
            "member": {
              "locationName": "ReservedDBInstancesOffering",
              "type": "structure",
              "members": {
                "ReservedDBInstancesOfferingId": {},
                "DBInstanceClass": {},
                "Duration": {
                  "type": "integer"
                },
                "FixedPrice": {
                  "type": "double"
                },
                "UsagePrice": {
                  "type": "double"
                },
                "CurrencyCode": {},
                "ProductDescription": {},
                "OfferingType": {},
                "MultiAZ": {
                  "type": "boolean"
                },
                "RecurringCharges": {
                  "shape": "S3o"
                }
              },
              "wrapper": true
            }
          }
        }
      }
    },
    "ListTagsForResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName"
        ],
        "members": {
          "ResourceName": {}
        }
      },
      "output": {
        "resultWrapper": "ListTagsForResourceResult",
        "type": "structure",
        "members": {
          "TagList": {
            "shape": "S9"
          }
        }
      }
    },
    "ModifyDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "AllocatedStorage": {
            "type": "integer"
          },
          "DBInstanceClass": {},
          "DBSecurityGroups": {
            "shape": "Sp"
          },
          "VpcSecurityGroupIds": {
            "shape": "Sq"
          },
          "ApplyImmediately": {
            "type": "boolean"
          },
          "MasterUserPassword": {},
          "DBParameterGroupName": {},
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "PreferredBackupWindow": {},
          "PreferredMaintenanceWindow": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "EngineVersion": {},
          "AllowMajorVersionUpgrade": {
            "type": "boolean"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "NewDBInstanceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "ModifyDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "ModifyDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName",
          "Parameters"
        ],
        "members": {
          "DBParameterGroupName": {},
          "Parameters": {
            "shape": "S2f"
          }
        }
      },
      "output": {
        "shape": "S3z",
        "resultWrapper": "ModifyDBParameterGroupResult"
      }
    },
    "ModifyDBSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSubnetGroupName",
          "SubnetIds"
        ],
        "members": {
          "DBSubnetGroupName": {},
          "DBSubnetGroupDescription": {},
          "SubnetIds": {
            "shape": "S1i"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyDBSubnetGroupResult",
        "type": "structure",
        "members": {
          "DBSubnetGroup": {
            "shape": "S11"
          }
        }
      }
    },
    "ModifyEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName"
        ],
        "members": {
          "SubscriptionName": {},
          "SnsTopicArn": {},
          "SourceType": {},
          "EventCategories": {
            "shape": "S6"
          },
          "Enabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "ModifyOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "OptionGroupName"
        ],
        "members": {
          "OptionGroupName": {},
          "OptionsToInclude": {
            "type": "list",
            "member": {
              "locationName": "OptionConfiguration",
              "type": "structure",
              "required": [
                "OptionName"
              ],
              "members": {
                "OptionName": {},
                "Port": {
                  "type": "integer"
                },
                "DBSecurityGroupMemberships": {
                  "shape": "Sp"
                },
                "VpcSecurityGroupMemberships": {
                  "shape": "Sq"
                }
              }
            }
          },
          "OptionsToRemove": {
            "type": "list",
            "member": {}
          },
          "ApplyImmediately": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyOptionGroupResult",
        "type": "structure",
        "members": {
          "OptionGroup": {
            "shape": "S1o"
          }
        }
      }
    },
    "PromoteReadReplica": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "PreferredBackupWindow": {}
        }
      },
      "output": {
        "resultWrapper": "PromoteReadReplicaResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "PurchaseReservedDBInstancesOffering": {
      "input": {
        "type": "structure",
        "required": [
          "ReservedDBInstancesOfferingId"
        ],
        "members": {
          "ReservedDBInstancesOfferingId": {},
          "ReservedDBInstanceId": {},
          "DBInstanceCount": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "PurchaseReservedDBInstancesOfferingResult",
        "type": "structure",
        "members": {
          "ReservedDBInstance": {
            "shape": "S3m"
          }
        }
      }
    },
    "RebootDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "ForceFailover": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "RebootDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "RemoveSourceIdentifierFromSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName",
          "SourceIdentifier"
        ],
        "members": {
          "SubscriptionName": {},
          "SourceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "RemoveTagsFromResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName",
          "TagKeys"
        ],
        "members": {
          "ResourceName": {},
          "TagKeys": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "ResetDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName"
        ],
        "members": {
          "DBParameterGroupName": {},
          "ResetAllParameters": {
            "type": "boolean"
          },
          "Parameters": {
            "shape": "S2f"
          }
        }
      },
      "output": {
        "shape": "S3z",
        "resultWrapper": "ResetDBParameterGroupResult"
      }
    },
    "RestoreDBInstanceFromDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "DBSnapshotIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "DBSnapshotIdentifier": {},
          "DBInstanceClass": {},
          "Port": {
            "type": "integer"
          },
          "AvailabilityZone": {},
          "DBSubnetGroupName": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "DBName": {},
          "Engine": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {}
        }
      },
      "output": {
        "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "RestoreDBInstanceToPointInTime": {
      "input": {
        "type": "structure",
        "required": [
          "SourceDBInstanceIdentifier",
          "TargetDBInstanceIdentifier"
        ],
        "members": {
          "SourceDBInstanceIdentifier": {},
          "TargetDBInstanceIdentifier": {},
          "RestoreTime": {
            "type": "timestamp"
          },
          "UseLatestRestorableTime": {
            "type": "boolean"
          },
          "DBInstanceClass": {},
          "Port": {
            "type": "integer"
          },
          "AvailabilityZone": {},
          "DBSubnetGroupName": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "DBName": {},
          "Engine": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {}
        }
      },
      "output": {
        "resultWrapper": "RestoreDBInstanceToPointInTimeResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "RevokeDBSecurityGroupIngress": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName"
        ],
        "members": {
          "DBSecurityGroupName": {},
          "CIDRIP": {},
          "EC2SecurityGroupName": {},
          "EC2SecurityGroupId": {},
          "EC2SecurityGroupOwnerId": {}
        }
      },
      "output": {
        "resultWrapper": "RevokeDBSecurityGroupIngressResult",
        "type": "structure",
        "members": {
          "DBSecurityGroup": {
            "shape": "Sd"
          }
        }
      }
    }
  },
  "shapes": {
    "S4": {
      "type": "structure",
      "members": {
        "Id": {},
        "CustomerAwsId": {},
        "CustSubscriptionId": {},
        "SnsTopicArn": {},
        "Status": {},
        "SubscriptionCreationTime": {},
        "SourceType": {},
        "SourceIdsList": {
          "shape": "S5"
        },
        "EventCategoriesList": {
          "shape": "S6"
        },
        "Enabled": {
          "type": "boolean"
        }
      },
      "wrapper": true
    },
    "S5": {
      "type": "list",
      "member": {
        "locationName": "SourceId"
      }
    },
    "S6": {
      "type": "list",
      "member": {
        "locationName": "EventCategory"
      }
    },
    "S9": {
      "type": "list",
      "member": {
        "locationName": "Tag",
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "Sd": {
      "type": "structure",
      "members": {
        "OwnerId": {},
        "DBSecurityGroupName": {},
        "DBSecurityGroupDescription": {},
        "VpcId": {},
        "EC2SecurityGroups": {
          "type": "list",
          "member": {
            "locationName": "EC2SecurityGroup",
            "type": "structure",
            "members": {
              "Status": {},
              "EC2SecurityGroupName": {},
              "EC2SecurityGroupId": {},
              "EC2SecurityGroupOwnerId": {}
            }
          }
        },
        "IPRanges": {
          "type": "list",
          "member": {
            "locationName": "IPRange",
            "type": "structure",
            "members": {
              "Status": {},
              "CIDRIP": {}
            }
          }
        }
      },
      "wrapper": true
    },
    "Sk": {
      "type": "structure",
      "members": {
        "DBSnapshotIdentifier": {},
        "DBInstanceIdentifier": {},
        "SnapshotCreateTime": {
          "type": "timestamp"
        },
        "Engine": {},
        "AllocatedStorage": {
          "type": "integer"
        },
        "Status": {},
        "Port": {
          "type": "integer"
        },
        "AvailabilityZone": {},
        "VpcId": {},
        "InstanceCreateTime": {
          "type": "timestamp"
        },
        "MasterUsername": {},
        "EngineVersion": {},
        "LicenseModel": {},
        "SnapshotType": {},
        "Iops": {
          "type": "integer"
        }
      },
      "wrapper": true
    },
    "Sp": {
      "type": "list",
      "member": {
        "locationName": "DBSecurityGroupName"
      }
    },
    "Sq": {
      "type": "list",
      "member": {
        "locationName": "VpcSecurityGroupId"
      }
    },
    "St": {
      "type": "structure",
      "members": {
        "DBInstanceIdentifier": {},
        "DBInstanceClass": {},
        "Engine": {},
        "DBInstanceStatus": {},
        "MasterUsername": {},
        "DBName": {},
        "Endpoint": {
          "type": "structure",
          "members": {
            "Address": {},
            "Port": {
              "type": "integer"
            }
          }
        },
        "AllocatedStorage": {
          "type": "integer"
        },
        "InstanceCreateTime": {
          "type": "timestamp"
        },
        "PreferredBackupWindow": {},
        "BackupRetentionPeriod": {
          "type": "integer"
        },
        "DBSecurityGroups": {
          "shape": "Sv"
        },
        "VpcSecurityGroups": {
          "shape": "Sx"
        },
        "DBParameterGroups": {
          "type": "list",
          "member": {
            "locationName": "DBParameterGroup",
            "type": "structure",
            "members": {
              "DBParameterGroupName": {},
              "ParameterApplyStatus": {}
            }
          }
        },
        "AvailabilityZone": {},
        "DBSubnetGroup": {
          "shape": "S11"
        },
        "PreferredMaintenanceWindow": {},
        "PendingModifiedValues": {
          "type": "structure",
          "members": {
            "DBInstanceClass": {},
            "AllocatedStorage": {
              "type": "integer"
            },
            "MasterUserPassword": {},
            "Port": {
              "type": "integer"
            },
            "BackupRetentionPeriod": {
              "type": "integer"
            },
            "MultiAZ": {
              "type": "boolean"
            },
            "EngineVersion": {},
            "Iops": {
              "type": "integer"
            },
            "DBInstanceIdentifier": {}
          }
        },
        "LatestRestorableTime": {
          "type": "timestamp"
        },
        "MultiAZ": {
          "type": "boolean"
        },
        "EngineVersion": {},
        "AutoMinorVersionUpgrade": {
          "type": "boolean"
        },
        "ReadReplicaSourceDBInstanceIdentifier": {},
        "ReadReplicaDBInstanceIdentifiers": {
          "type": "list",
          "member": {
            "locationName": "ReadReplicaDBInstanceIdentifier"
          }
        },
        "LicenseModel": {},
        "Iops": {
          "type": "integer"
        },
        "OptionGroupMembership": {
          "type": "structure",
          "members": {
            "OptionGroupName": {},
            "Status": {}
          }
        },
        "CharacterSetName": {},
        "SecondaryAvailabilityZone": {},
        "PubliclyAccessible": {
          "type": "boolean"
        }
      },
      "wrapper": true
    },
    "Sv": {
      "type": "list",
      "member": {
        "locationName": "DBSecurityGroup",
        "type": "structure",
        "members": {
          "DBSecurityGroupName": {},
          "Status": {}
        }
      }
    },
    "Sx": {
      "type": "list",
      "member": {
        "locationName": "VpcSecurityGroupMembership",
        "type": "structure",
        "members": {
          "VpcSecurityGroupId": {},
          "Status": {}
        }
      }
    },
    "S11": {
      "type": "structure",
      "members": {
        "DBSubnetGroupName": {},
        "DBSubnetGroupDescription": {},
        "VpcId": {},
        "SubnetGroupStatus": {},
        "Subnets": {
          "type": "list",
          "member": {
            "locationName": "Subnet",
            "type": "structure",
            "members": {
              "SubnetIdentifier": {},
              "SubnetAvailabilityZone": {
                "shape": "S14"
              },
              "SubnetStatus": {}
            }
          }
        }
      },
      "wrapper": true
    },
    "S14": {
      "type": "structure",
      "members": {
        "Name": {},
        "ProvisionedIopsCapable": {
          "type": "boolean"
        }
      },
      "wrapper": true
    },
    "S1c": {
      "type": "structure",
      "members": {
        "DBParameterGroupName": {},
        "DBParameterGroupFamily": {},
        "Description": {}
      },
      "wrapper": true
    },
    "S1i": {
      "type": "list",
      "member": {
        "locationName": "SubnetIdentifier"
      }
    },
    "S1o": {
      "type": "structure",
      "members": {
        "OptionGroupName": {},
        "OptionGroupDescription": {},
        "EngineName": {},
        "MajorEngineVersion": {},
        "Options": {
          "type": "list",
          "member": {
            "locationName": "Option",
            "type": "structure",
            "members": {
              "OptionName": {},
              "OptionDescription": {},
              "Port": {
                "type": "integer"
              },
              "DBSecurityGroupMemberships": {
                "shape": "Sv"
              },
              "VpcSecurityGroupMemberships": {
                "shape": "Sx"
              }
            }
          }
        },
        "AllowsVpcAndNonVpcInstanceMemberships": {
          "type": "boolean"
        },
        "VpcId": {}
      },
      "wrapper": true
    },
    "S25": {
      "type": "structure",
      "members": {
        "CharacterSetName": {},
        "CharacterSetDescription": {}
      }
    },
    "S2f": {
      "type": "list",
      "member": {
        "locationName": "Parameter",
        "type": "structure",
        "members": {
          "ParameterName": {},
          "ParameterValue": {},
          "Description": {},
          "Source": {},
          "ApplyType": {},
          "DataType": {},
          "AllowedValues": {},
          "IsModifiable": {
            "type": "boolean"
          },
          "MinimumEngineVersion": {},
          "ApplyMethod": {}
        }
      }
    },
    "S3m": {
      "type": "structure",
      "members": {
        "ReservedDBInstanceId": {},
        "ReservedDBInstancesOfferingId": {},
        "DBInstanceClass": {},
        "StartTime": {
          "type": "timestamp"
        },
        "Duration": {
          "type": "integer"
        },
        "FixedPrice": {
          "type": "double"
        },
        "UsagePrice": {
          "type": "double"
        },
        "CurrencyCode": {},
        "DBInstanceCount": {
          "type": "integer"
        },
        "ProductDescription": {},
        "OfferingType": {},
        "MultiAZ": {
          "type": "boolean"
        },
        "State": {},
        "RecurringCharges": {
          "shape": "S3o"
        }
      },
      "wrapper": true
    },
    "S3o": {
      "type": "list",
      "member": {
        "locationName": "RecurringCharge",
        "type": "structure",
        "members": {
          "RecurringChargeAmount": {
            "type": "double"
          },
          "RecurringChargeFrequency": {}
        },
        "wrapper": true
      }
    },
    "S3z": {
      "type": "structure",
      "members": {
        "DBParameterGroupName": {}
      }
    }
  }
}
},{}],120:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeDBEngineVersions": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "DBEngineVersions"
    },
    "DescribeDBInstances": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "DBInstances"
    },
    "DescribeDBParameterGroups": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "DBParameterGroups"
    },
    "DescribeDBParameters": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "Parameters"
    },
    "DescribeDBSecurityGroups": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "DBSecurityGroups"
    },
    "DescribeDBSnapshots": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "DBSnapshots"
    },
    "DescribeDBSubnetGroups": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "DBSubnetGroups"
    },
    "DescribeEngineDefaultParameters": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "EngineDefaults.Marker",
      "result_key": "EngineDefaults.Parameters"
    },
    "DescribeEventSubscriptions": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "EventSubscriptionsList"
    },
    "DescribeEvents": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "Events"
    },
    "DescribeOptionGroupOptions": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "OptionGroupOptions"
    },
    "DescribeOptionGroups": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "OptionGroupsList"
    },
    "DescribeOrderableDBInstanceOptions": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "OrderableDBInstanceOptions"
    },
    "DescribeReservedDBInstances": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "ReservedDBInstances"
    },
    "DescribeReservedDBInstancesOfferings": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "ReservedDBInstancesOfferings"
    },
    "ListTagsForResource": {
      "result_key": "TagList"
    }
  }
}
},{}],121:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2013-02-12",
    "endpointPrefix": "rds",
    "protocol": "query",
    "serviceAbbreviation": "Amazon RDS",
    "serviceFullName": "Amazon Relational Database Service",
    "serviceId": "RDS",
    "signatureVersion": "v4",
    "uid": "rds-2013-02-12",
    "xmlNamespace": "http://rds.amazonaws.com/doc/2013-02-12/"
  },
  "operations": {
    "AddSourceIdentifierToSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName",
          "SourceIdentifier"
        ],
        "members": {
          "SubscriptionName": {},
          "SourceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "AddSourceIdentifierToSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "AddTagsToResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName",
          "Tags"
        ],
        "members": {
          "ResourceName": {},
          "Tags": {
            "shape": "S9"
          }
        }
      }
    },
    "AuthorizeDBSecurityGroupIngress": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName"
        ],
        "members": {
          "DBSecurityGroupName": {},
          "CIDRIP": {},
          "EC2SecurityGroupName": {},
          "EC2SecurityGroupId": {},
          "EC2SecurityGroupOwnerId": {}
        }
      },
      "output": {
        "resultWrapper": "AuthorizeDBSecurityGroupIngressResult",
        "type": "structure",
        "members": {
          "DBSecurityGroup": {
            "shape": "Sd"
          }
        }
      }
    },
    "CopyDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "SourceDBSnapshotIdentifier",
          "TargetDBSnapshotIdentifier"
        ],
        "members": {
          "SourceDBSnapshotIdentifier": {},
          "TargetDBSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "CopyDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBSnapshot": {
            "shape": "Sk"
          }
        }
      }
    },
    "CreateDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "AllocatedStorage",
          "DBInstanceClass",
          "Engine",
          "MasterUsername",
          "MasterUserPassword"
        ],
        "members": {
          "DBName": {},
          "DBInstanceIdentifier": {},
          "AllocatedStorage": {
            "type": "integer"
          },
          "DBInstanceClass": {},
          "Engine": {},
          "MasterUsername": {},
          "MasterUserPassword": {},
          "DBSecurityGroups": {
            "shape": "Sp"
          },
          "VpcSecurityGroupIds": {
            "shape": "Sq"
          },
          "AvailabilityZone": {},
          "DBSubnetGroupName": {},
          "PreferredMaintenanceWindow": {},
          "DBParameterGroupName": {},
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "PreferredBackupWindow": {},
          "Port": {
            "type": "integer"
          },
          "MultiAZ": {
            "type": "boolean"
          },
          "EngineVersion": {},
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "CharacterSetName": {},
          "PubliclyAccessible": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "CreateDBInstanceReadReplica": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "SourceDBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "SourceDBInstanceIdentifier": {},
          "DBInstanceClass": {},
          "AvailabilityZone": {},
          "Port": {
            "type": "integer"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "PubliclyAccessible": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBInstanceReadReplicaResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "CreateDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName",
          "DBParameterGroupFamily",
          "Description"
        ],
        "members": {
          "DBParameterGroupName": {},
          "DBParameterGroupFamily": {},
          "Description": {}
        }
      },
      "output": {
        "resultWrapper": "CreateDBParameterGroupResult",
        "type": "structure",
        "members": {
          "DBParameterGroup": {
            "shape": "S1d"
          }
        }
      }
    },
    "CreateDBSecurityGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName",
          "DBSecurityGroupDescription"
        ],
        "members": {
          "DBSecurityGroupName": {},
          "DBSecurityGroupDescription": {}
        }
      },
      "output": {
        "resultWrapper": "CreateDBSecurityGroupResult",
        "type": "structure",
        "members": {
          "DBSecurityGroup": {
            "shape": "Sd"
          }
        }
      }
    },
    "CreateDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBSnapshotIdentifier",
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBSnapshotIdentifier": {},
          "DBInstanceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "CreateDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBSnapshot": {
            "shape": "Sk"
          }
        }
      }
    },
    "CreateDBSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSubnetGroupName",
          "DBSubnetGroupDescription",
          "SubnetIds"
        ],
        "members": {
          "DBSubnetGroupName": {},
          "DBSubnetGroupDescription": {},
          "SubnetIds": {
            "shape": "S1j"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBSubnetGroupResult",
        "type": "structure",
        "members": {
          "DBSubnetGroup": {
            "shape": "S11"
          }
        }
      }
    },
    "CreateEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName",
          "SnsTopicArn"
        ],
        "members": {
          "SubscriptionName": {},
          "SnsTopicArn": {},
          "SourceType": {},
          "EventCategories": {
            "shape": "S6"
          },
          "SourceIds": {
            "shape": "S5"
          },
          "Enabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "CreateOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "OptionGroupName",
          "EngineName",
          "MajorEngineVersion",
          "OptionGroupDescription"
        ],
        "members": {
          "OptionGroupName": {},
          "EngineName": {},
          "MajorEngineVersion": {},
          "OptionGroupDescription": {}
        }
      },
      "output": {
        "resultWrapper": "CreateOptionGroupResult",
        "type": "structure",
        "members": {
          "OptionGroup": {
            "shape": "S1p"
          }
        }
      }
    },
    "DeleteDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "SkipFinalSnapshot": {
            "type": "boolean"
          },
          "FinalDBSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "DeleteDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName"
        ],
        "members": {
          "DBParameterGroupName": {}
        }
      }
    },
    "DeleteDBSecurityGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName"
        ],
        "members": {
          "DBSecurityGroupName": {}
        }
      }
    },
    "DeleteDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBSnapshotIdentifier"
        ],
        "members": {
          "DBSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBSnapshot": {
            "shape": "Sk"
          }
        }
      }
    },
    "DeleteDBSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSubnetGroupName"
        ],
        "members": {
          "DBSubnetGroupName": {}
        }
      }
    },
    "DeleteEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName"
        ],
        "members": {
          "SubscriptionName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "DeleteOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "OptionGroupName"
        ],
        "members": {
          "OptionGroupName": {}
        }
      }
    },
    "DescribeDBEngineVersions": {
      "input": {
        "type": "structure",
        "members": {
          "Engine": {},
          "EngineVersion": {},
          "DBParameterGroupFamily": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "DefaultOnly": {
            "type": "boolean"
          },
          "ListSupportedCharacterSets": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeDBEngineVersionsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBEngineVersions": {
            "type": "list",
            "member": {
              "locationName": "DBEngineVersion",
              "type": "structure",
              "members": {
                "Engine": {},
                "EngineVersion": {},
                "DBParameterGroupFamily": {},
                "DBEngineDescription": {},
                "DBEngineVersionDescription": {},
                "DefaultCharacterSet": {
                  "shape": "S28"
                },
                "SupportedCharacterSets": {
                  "type": "list",
                  "member": {
                    "shape": "S28",
                    "locationName": "CharacterSet"
                  }
                }
              }
            }
          }
        }
      }
    },
    "DescribeDBInstances": {
      "input": {
        "type": "structure",
        "members": {
          "DBInstanceIdentifier": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBInstancesResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBInstances": {
            "type": "list",
            "member": {
              "shape": "St",
              "locationName": "DBInstance"
            }
          }
        }
      }
    },
    "DescribeDBLogFiles": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "FilenameContains": {},
          "FileLastWritten": {
            "type": "long"
          },
          "FileSize": {
            "type": "long"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBLogFilesResult",
        "type": "structure",
        "members": {
          "DescribeDBLogFiles": {
            "type": "list",
            "member": {
              "locationName": "DescribeDBLogFilesDetails",
              "type": "structure",
              "members": {
                "LogFileName": {},
                "LastWritten": {
                  "type": "long"
                },
                "Size": {
                  "type": "long"
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeDBParameterGroups": {
      "input": {
        "type": "structure",
        "members": {
          "DBParameterGroupName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBParameterGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBParameterGroups": {
            "type": "list",
            "member": {
              "shape": "S1d",
              "locationName": "DBParameterGroup"
            }
          }
        }
      }
    },
    "DescribeDBParameters": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName"
        ],
        "members": {
          "DBParameterGroupName": {},
          "Source": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBParametersResult",
        "type": "structure",
        "members": {
          "Parameters": {
            "shape": "S2n"
          },
          "Marker": {}
        }
      }
    },
    "DescribeDBSecurityGroups": {
      "input": {
        "type": "structure",
        "members": {
          "DBSecurityGroupName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBSecurityGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBSecurityGroups": {
            "type": "list",
            "member": {
              "shape": "Sd",
              "locationName": "DBSecurityGroup"
            }
          }
        }
      }
    },
    "DescribeDBSnapshots": {
      "input": {
        "type": "structure",
        "members": {
          "DBInstanceIdentifier": {},
          "DBSnapshotIdentifier": {},
          "SnapshotType": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBSnapshotsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBSnapshots": {
            "type": "list",
            "member": {
              "shape": "Sk",
              "locationName": "DBSnapshot"
            }
          }
        }
      }
    },
    "DescribeDBSubnetGroups": {
      "input": {
        "type": "structure",
        "members": {
          "DBSubnetGroupName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBSubnetGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBSubnetGroups": {
            "type": "list",
            "member": {
              "shape": "S11",
              "locationName": "DBSubnetGroup"
            }
          }
        }
      }
    },
    "DescribeEngineDefaultParameters": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupFamily"
        ],
        "members": {
          "DBParameterGroupFamily": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEngineDefaultParametersResult",
        "type": "structure",
        "members": {
          "EngineDefaults": {
            "type": "structure",
            "members": {
              "DBParameterGroupFamily": {},
              "Marker": {},
              "Parameters": {
                "shape": "S2n"
              }
            },
            "wrapper": true
          }
        }
      }
    },
    "DescribeEventCategories": {
      "input": {
        "type": "structure",
        "members": {
          "SourceType": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEventCategoriesResult",
        "type": "structure",
        "members": {
          "EventCategoriesMapList": {
            "type": "list",
            "member": {
              "locationName": "EventCategoriesMap",
              "type": "structure",
              "members": {
                "SourceType": {},
                "EventCategories": {
                  "shape": "S6"
                }
              },
              "wrapper": true
            }
          }
        }
      }
    },
    "DescribeEventSubscriptions": {
      "input": {
        "type": "structure",
        "members": {
          "SubscriptionName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEventSubscriptionsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "EventSubscriptionsList": {
            "type": "list",
            "member": {
              "shape": "S4",
              "locationName": "EventSubscription"
            }
          }
        }
      }
    },
    "DescribeEvents": {
      "input": {
        "type": "structure",
        "members": {
          "SourceIdentifier": {},
          "SourceType": {},
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "Duration": {
            "type": "integer"
          },
          "EventCategories": {
            "shape": "S6"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEventsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "Events": {
            "type": "list",
            "member": {
              "locationName": "Event",
              "type": "structure",
              "members": {
                "SourceIdentifier": {},
                "SourceType": {},
                "Message": {},
                "EventCategories": {
                  "shape": "S6"
                },
                "Date": {
                  "type": "timestamp"
                }
              }
            }
          }
        }
      }
    },
    "DescribeOptionGroupOptions": {
      "input": {
        "type": "structure",
        "required": [
          "EngineName"
        ],
        "members": {
          "EngineName": {},
          "MajorEngineVersion": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeOptionGroupOptionsResult",
        "type": "structure",
        "members": {
          "OptionGroupOptions": {
            "type": "list",
            "member": {
              "locationName": "OptionGroupOption",
              "type": "structure",
              "members": {
                "Name": {},
                "Description": {},
                "EngineName": {},
                "MajorEngineVersion": {},
                "MinimumRequiredMinorEngineVersion": {},
                "PortRequired": {
                  "type": "boolean"
                },
                "DefaultPort": {
                  "type": "integer"
                },
                "OptionsDependedOn": {
                  "type": "list",
                  "member": {
                    "locationName": "OptionName"
                  }
                },
                "Persistent": {
                  "type": "boolean"
                },
                "OptionGroupOptionSettings": {
                  "type": "list",
                  "member": {
                    "locationName": "OptionGroupOptionSetting",
                    "type": "structure",
                    "members": {
                      "SettingName": {},
                      "SettingDescription": {},
                      "DefaultValue": {},
                      "ApplyType": {},
                      "AllowedValues": {},
                      "IsModifiable": {
                        "type": "boolean"
                      }
                    }
                  }
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeOptionGroups": {
      "input": {
        "type": "structure",
        "members": {
          "OptionGroupName": {},
          "Marker": {},
          "MaxRecords": {
            "type": "integer"
          },
          "EngineName": {},
          "MajorEngineVersion": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeOptionGroupsResult",
        "type": "structure",
        "members": {
          "OptionGroupsList": {
            "type": "list",
            "member": {
              "shape": "S1p",
              "locationName": "OptionGroup"
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeOrderableDBInstanceOptions": {
      "input": {
        "type": "structure",
        "required": [
          "Engine"
        ],
        "members": {
          "Engine": {},
          "EngineVersion": {},
          "DBInstanceClass": {},
          "LicenseModel": {},
          "Vpc": {
            "type": "boolean"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeOrderableDBInstanceOptionsResult",
        "type": "structure",
        "members": {
          "OrderableDBInstanceOptions": {
            "type": "list",
            "member": {
              "locationName": "OrderableDBInstanceOption",
              "type": "structure",
              "members": {
                "Engine": {},
                "EngineVersion": {},
                "DBInstanceClass": {},
                "LicenseModel": {},
                "AvailabilityZones": {
                  "type": "list",
                  "member": {
                    "shape": "S14",
                    "locationName": "AvailabilityZone"
                  }
                },
                "MultiAZCapable": {
                  "type": "boolean"
                },
                "ReadReplicaCapable": {
                  "type": "boolean"
                },
                "Vpc": {
                  "type": "boolean"
                }
              },
              "wrapper": true
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeReservedDBInstances": {
      "input": {
        "type": "structure",
        "members": {
          "ReservedDBInstanceId": {},
          "ReservedDBInstancesOfferingId": {},
          "DBInstanceClass": {},
          "Duration": {},
          "ProductDescription": {},
          "OfferingType": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReservedDBInstancesResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ReservedDBInstances": {
            "type": "list",
            "member": {
              "shape": "S3w",
              "locationName": "ReservedDBInstance"
            }
          }
        }
      }
    },
    "DescribeReservedDBInstancesOfferings": {
      "input": {
        "type": "structure",
        "members": {
          "ReservedDBInstancesOfferingId": {},
          "DBInstanceClass": {},
          "Duration": {},
          "ProductDescription": {},
          "OfferingType": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReservedDBInstancesOfferingsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ReservedDBInstancesOfferings": {
            "type": "list",
            "member": {
              "locationName": "ReservedDBInstancesOffering",
              "type": "structure",
              "members": {
                "ReservedDBInstancesOfferingId": {},
                "DBInstanceClass": {},
                "Duration": {
                  "type": "integer"
                },
                "FixedPrice": {
                  "type": "double"
                },
                "UsagePrice": {
                  "type": "double"
                },
                "CurrencyCode": {},
                "ProductDescription": {},
                "OfferingType": {},
                "MultiAZ": {
                  "type": "boolean"
                },
                "RecurringCharges": {
                  "shape": "S3y"
                }
              },
              "wrapper": true
            }
          }
        }
      }
    },
    "DownloadDBLogFilePortion": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "LogFileName"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "LogFileName": {},
          "Marker": {},
          "NumberOfLines": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DownloadDBLogFilePortionResult",
        "type": "structure",
        "members": {
          "LogFileData": {},
          "Marker": {},
          "AdditionalDataPending": {
            "type": "boolean"
          }
        }
      }
    },
    "ListTagsForResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName"
        ],
        "members": {
          "ResourceName": {}
        }
      },
      "output": {
        "resultWrapper": "ListTagsForResourceResult",
        "type": "structure",
        "members": {
          "TagList": {
            "shape": "S9"
          }
        }
      }
    },
    "ModifyDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "AllocatedStorage": {
            "type": "integer"
          },
          "DBInstanceClass": {},
          "DBSecurityGroups": {
            "shape": "Sp"
          },
          "VpcSecurityGroupIds": {
            "shape": "Sq"
          },
          "ApplyImmediately": {
            "type": "boolean"
          },
          "MasterUserPassword": {},
          "DBParameterGroupName": {},
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "PreferredBackupWindow": {},
          "PreferredMaintenanceWindow": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "EngineVersion": {},
          "AllowMajorVersionUpgrade": {
            "type": "boolean"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "NewDBInstanceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "ModifyDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "ModifyDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName",
          "Parameters"
        ],
        "members": {
          "DBParameterGroupName": {},
          "Parameters": {
            "shape": "S2n"
          }
        }
      },
      "output": {
        "shape": "S4b",
        "resultWrapper": "ModifyDBParameterGroupResult"
      }
    },
    "ModifyDBSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSubnetGroupName",
          "SubnetIds"
        ],
        "members": {
          "DBSubnetGroupName": {},
          "DBSubnetGroupDescription": {},
          "SubnetIds": {
            "shape": "S1j"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyDBSubnetGroupResult",
        "type": "structure",
        "members": {
          "DBSubnetGroup": {
            "shape": "S11"
          }
        }
      }
    },
    "ModifyEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName"
        ],
        "members": {
          "SubscriptionName": {},
          "SnsTopicArn": {},
          "SourceType": {},
          "EventCategories": {
            "shape": "S6"
          },
          "Enabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "ModifyOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "OptionGroupName"
        ],
        "members": {
          "OptionGroupName": {},
          "OptionsToInclude": {
            "type": "list",
            "member": {
              "locationName": "OptionConfiguration",
              "type": "structure",
              "required": [
                "OptionName"
              ],
              "members": {
                "OptionName": {},
                "Port": {
                  "type": "integer"
                },
                "DBSecurityGroupMemberships": {
                  "shape": "Sp"
                },
                "VpcSecurityGroupMemberships": {
                  "shape": "Sq"
                },
                "OptionSettings": {
                  "type": "list",
                  "member": {
                    "shape": "S1t",
                    "locationName": "OptionSetting"
                  }
                }
              }
            }
          },
          "OptionsToRemove": {
            "type": "list",
            "member": {}
          },
          "ApplyImmediately": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyOptionGroupResult",
        "type": "structure",
        "members": {
          "OptionGroup": {
            "shape": "S1p"
          }
        }
      }
    },
    "PromoteReadReplica": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "PreferredBackupWindow": {}
        }
      },
      "output": {
        "resultWrapper": "PromoteReadReplicaResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "PurchaseReservedDBInstancesOffering": {
      "input": {
        "type": "structure",
        "required": [
          "ReservedDBInstancesOfferingId"
        ],
        "members": {
          "ReservedDBInstancesOfferingId": {},
          "ReservedDBInstanceId": {},
          "DBInstanceCount": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "PurchaseReservedDBInstancesOfferingResult",
        "type": "structure",
        "members": {
          "ReservedDBInstance": {
            "shape": "S3w"
          }
        }
      }
    },
    "RebootDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "ForceFailover": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "RebootDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "RemoveSourceIdentifierFromSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName",
          "SourceIdentifier"
        ],
        "members": {
          "SubscriptionName": {},
          "SourceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "RemoveTagsFromResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName",
          "TagKeys"
        ],
        "members": {
          "ResourceName": {},
          "TagKeys": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "ResetDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName"
        ],
        "members": {
          "DBParameterGroupName": {},
          "ResetAllParameters": {
            "type": "boolean"
          },
          "Parameters": {
            "shape": "S2n"
          }
        }
      },
      "output": {
        "shape": "S4b",
        "resultWrapper": "ResetDBParameterGroupResult"
      }
    },
    "RestoreDBInstanceFromDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "DBSnapshotIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "DBSnapshotIdentifier": {},
          "DBInstanceClass": {},
          "Port": {
            "type": "integer"
          },
          "AvailabilityZone": {},
          "DBSubnetGroupName": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "DBName": {},
          "Engine": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {}
        }
      },
      "output": {
        "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "RestoreDBInstanceToPointInTime": {
      "input": {
        "type": "structure",
        "required": [
          "SourceDBInstanceIdentifier",
          "TargetDBInstanceIdentifier"
        ],
        "members": {
          "SourceDBInstanceIdentifier": {},
          "TargetDBInstanceIdentifier": {},
          "RestoreTime": {
            "type": "timestamp"
          },
          "UseLatestRestorableTime": {
            "type": "boolean"
          },
          "DBInstanceClass": {},
          "Port": {
            "type": "integer"
          },
          "AvailabilityZone": {},
          "DBSubnetGroupName": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "DBName": {},
          "Engine": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {}
        }
      },
      "output": {
        "resultWrapper": "RestoreDBInstanceToPointInTimeResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "RevokeDBSecurityGroupIngress": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName"
        ],
        "members": {
          "DBSecurityGroupName": {},
          "CIDRIP": {},
          "EC2SecurityGroupName": {},
          "EC2SecurityGroupId": {},
          "EC2SecurityGroupOwnerId": {}
        }
      },
      "output": {
        "resultWrapper": "RevokeDBSecurityGroupIngressResult",
        "type": "structure",
        "members": {
          "DBSecurityGroup": {
            "shape": "Sd"
          }
        }
      }
    }
  },
  "shapes": {
    "S4": {
      "type": "structure",
      "members": {
        "CustomerAwsId": {},
        "CustSubscriptionId": {},
        "SnsTopicArn": {},
        "Status": {},
        "SubscriptionCreationTime": {},
        "SourceType": {},
        "SourceIdsList": {
          "shape": "S5"
        },
        "EventCategoriesList": {
          "shape": "S6"
        },
        "Enabled": {
          "type": "boolean"
        }
      },
      "wrapper": true
    },
    "S5": {
      "type": "list",
      "member": {
        "locationName": "SourceId"
      }
    },
    "S6": {
      "type": "list",
      "member": {
        "locationName": "EventCategory"
      }
    },
    "S9": {
      "type": "list",
      "member": {
        "locationName": "Tag",
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "Sd": {
      "type": "structure",
      "members": {
        "OwnerId": {},
        "DBSecurityGroupName": {},
        "DBSecurityGroupDescription": {},
        "VpcId": {},
        "EC2SecurityGroups": {
          "type": "list",
          "member": {
            "locationName": "EC2SecurityGroup",
            "type": "structure",
            "members": {
              "Status": {},
              "EC2SecurityGroupName": {},
              "EC2SecurityGroupId": {},
              "EC2SecurityGroupOwnerId": {}
            }
          }
        },
        "IPRanges": {
          "type": "list",
          "member": {
            "locationName": "IPRange",
            "type": "structure",
            "members": {
              "Status": {},
              "CIDRIP": {}
            }
          }
        }
      },
      "wrapper": true
    },
    "Sk": {
      "type": "structure",
      "members": {
        "DBSnapshotIdentifier": {},
        "DBInstanceIdentifier": {},
        "SnapshotCreateTime": {
          "type": "timestamp"
        },
        "Engine": {},
        "AllocatedStorage": {
          "type": "integer"
        },
        "Status": {},
        "Port": {
          "type": "integer"
        },
        "AvailabilityZone": {},
        "VpcId": {},
        "InstanceCreateTime": {
          "type": "timestamp"
        },
        "MasterUsername": {},
        "EngineVersion": {},
        "LicenseModel": {},
        "SnapshotType": {},
        "Iops": {
          "type": "integer"
        },
        "OptionGroupName": {}
      },
      "wrapper": true
    },
    "Sp": {
      "type": "list",
      "member": {
        "locationName": "DBSecurityGroupName"
      }
    },
    "Sq": {
      "type": "list",
      "member": {
        "locationName": "VpcSecurityGroupId"
      }
    },
    "St": {
      "type": "structure",
      "members": {
        "DBInstanceIdentifier": {},
        "DBInstanceClass": {},
        "Engine": {},
        "DBInstanceStatus": {},
        "MasterUsername": {},
        "DBName": {},
        "Endpoint": {
          "type": "structure",
          "members": {
            "Address": {},
            "Port": {
              "type": "integer"
            }
          }
        },
        "AllocatedStorage": {
          "type": "integer"
        },
        "InstanceCreateTime": {
          "type": "timestamp"
        },
        "PreferredBackupWindow": {},
        "BackupRetentionPeriod": {
          "type": "integer"
        },
        "DBSecurityGroups": {
          "shape": "Sv"
        },
        "VpcSecurityGroups": {
          "shape": "Sx"
        },
        "DBParameterGroups": {
          "type": "list",
          "member": {
            "locationName": "DBParameterGroup",
            "type": "structure",
            "members": {
              "DBParameterGroupName": {},
              "ParameterApplyStatus": {}
            }
          }
        },
        "AvailabilityZone": {},
        "DBSubnetGroup": {
          "shape": "S11"
        },
        "PreferredMaintenanceWindow": {},
        "PendingModifiedValues": {
          "type": "structure",
          "members": {
            "DBInstanceClass": {},
            "AllocatedStorage": {
              "type": "integer"
            },
            "MasterUserPassword": {},
            "Port": {
              "type": "integer"
            },
            "BackupRetentionPeriod": {
              "type": "integer"
            },
            "MultiAZ": {
              "type": "boolean"
            },
            "EngineVersion": {},
            "Iops": {
              "type": "integer"
            },
            "DBInstanceIdentifier": {}
          }
        },
        "LatestRestorableTime": {
          "type": "timestamp"
        },
        "MultiAZ": {
          "type": "boolean"
        },
        "EngineVersion": {},
        "AutoMinorVersionUpgrade": {
          "type": "boolean"
        },
        "ReadReplicaSourceDBInstanceIdentifier": {},
        "ReadReplicaDBInstanceIdentifiers": {
          "type": "list",
          "member": {
            "locationName": "ReadReplicaDBInstanceIdentifier"
          }
        },
        "LicenseModel": {},
        "Iops": {
          "type": "integer"
        },
        "OptionGroupMemberships": {
          "type": "list",
          "member": {
            "locationName": "OptionGroupMembership",
            "type": "structure",
            "members": {
              "OptionGroupName": {},
              "Status": {}
            }
          }
        },
        "CharacterSetName": {},
        "SecondaryAvailabilityZone": {},
        "PubliclyAccessible": {
          "type": "boolean"
        }
      },
      "wrapper": true
    },
    "Sv": {
      "type": "list",
      "member": {
        "locationName": "DBSecurityGroup",
        "type": "structure",
        "members": {
          "DBSecurityGroupName": {},
          "Status": {}
        }
      }
    },
    "Sx": {
      "type": "list",
      "member": {
        "locationName": "VpcSecurityGroupMembership",
        "type": "structure",
        "members": {
          "VpcSecurityGroupId": {},
          "Status": {}
        }
      }
    },
    "S11": {
      "type": "structure",
      "members": {
        "DBSubnetGroupName": {},
        "DBSubnetGroupDescription": {},
        "VpcId": {},
        "SubnetGroupStatus": {},
        "Subnets": {
          "type": "list",
          "member": {
            "locationName": "Subnet",
            "type": "structure",
            "members": {
              "SubnetIdentifier": {},
              "SubnetAvailabilityZone": {
                "shape": "S14"
              },
              "SubnetStatus": {}
            }
          }
        }
      },
      "wrapper": true
    },
    "S14": {
      "type": "structure",
      "members": {
        "Name": {},
        "ProvisionedIopsCapable": {
          "type": "boolean"
        }
      },
      "wrapper": true
    },
    "S1d": {
      "type": "structure",
      "members": {
        "DBParameterGroupName": {},
        "DBParameterGroupFamily": {},
        "Description": {}
      },
      "wrapper": true
    },
    "S1j": {
      "type": "list",
      "member": {
        "locationName": "SubnetIdentifier"
      }
    },
    "S1p": {
      "type": "structure",
      "members": {
        "OptionGroupName": {},
        "OptionGroupDescription": {},
        "EngineName": {},
        "MajorEngineVersion": {},
        "Options": {
          "type": "list",
          "member": {
            "locationName": "Option",
            "type": "structure",
            "members": {
              "OptionName": {},
              "OptionDescription": {},
              "Persistent": {
                "type": "boolean"
              },
              "Port": {
                "type": "integer"
              },
              "OptionSettings": {
                "type": "list",
                "member": {
                  "shape": "S1t",
                  "locationName": "OptionSetting"
                }
              },
              "DBSecurityGroupMemberships": {
                "shape": "Sv"
              },
              "VpcSecurityGroupMemberships": {
                "shape": "Sx"
              }
            }
          }
        },
        "AllowsVpcAndNonVpcInstanceMemberships": {
          "type": "boolean"
        },
        "VpcId": {}
      },
      "wrapper": true
    },
    "S1t": {
      "type": "structure",
      "members": {
        "Name": {},
        "Value": {},
        "DefaultValue": {},
        "Description": {},
        "ApplyType": {},
        "DataType": {},
        "AllowedValues": {},
        "IsModifiable": {
          "type": "boolean"
        },
        "IsCollection": {
          "type": "boolean"
        }
      }
    },
    "S28": {
      "type": "structure",
      "members": {
        "CharacterSetName": {},
        "CharacterSetDescription": {}
      }
    },
    "S2n": {
      "type": "list",
      "member": {
        "locationName": "Parameter",
        "type": "structure",
        "members": {
          "ParameterName": {},
          "ParameterValue": {},
          "Description": {},
          "Source": {},
          "ApplyType": {},
          "DataType": {},
          "AllowedValues": {},
          "IsModifiable": {
            "type": "boolean"
          },
          "MinimumEngineVersion": {},
          "ApplyMethod": {}
        }
      }
    },
    "S3w": {
      "type": "structure",
      "members": {
        "ReservedDBInstanceId": {},
        "ReservedDBInstancesOfferingId": {},
        "DBInstanceClass": {},
        "StartTime": {
          "type": "timestamp"
        },
        "Duration": {
          "type": "integer"
        },
        "FixedPrice": {
          "type": "double"
        },
        "UsagePrice": {
          "type": "double"
        },
        "CurrencyCode": {},
        "DBInstanceCount": {
          "type": "integer"
        },
        "ProductDescription": {},
        "OfferingType": {},
        "MultiAZ": {
          "type": "boolean"
        },
        "State": {},
        "RecurringCharges": {
          "shape": "S3y"
        }
      },
      "wrapper": true
    },
    "S3y": {
      "type": "list",
      "member": {
        "locationName": "RecurringCharge",
        "type": "structure",
        "members": {
          "RecurringChargeAmount": {
            "type": "double"
          },
          "RecurringChargeFrequency": {}
        },
        "wrapper": true
      }
    },
    "S4b": {
      "type": "structure",
      "members": {
        "DBParameterGroupName": {}
      }
    }
  }
}
},{}],122:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeDBEngineVersions": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "DBEngineVersions"
    },
    "DescribeDBInstances": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "DBInstances"
    },
    "DescribeDBLogFiles": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "DescribeDBLogFiles"
    },
    "DescribeDBParameterGroups": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "DBParameterGroups"
    },
    "DescribeDBParameters": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "Parameters"
    },
    "DescribeDBSecurityGroups": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "DBSecurityGroups"
    },
    "DescribeDBSnapshots": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "DBSnapshots"
    },
    "DescribeDBSubnetGroups": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "DBSubnetGroups"
    },
    "DescribeEngineDefaultParameters": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "EngineDefaults.Marker",
      "result_key": "EngineDefaults.Parameters"
    },
    "DescribeEventSubscriptions": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "EventSubscriptionsList"
    },
    "DescribeEvents": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "Events"
    },
    "DescribeOptionGroupOptions": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "OptionGroupOptions"
    },
    "DescribeOptionGroups": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "OptionGroupsList"
    },
    "DescribeOrderableDBInstanceOptions": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "OrderableDBInstanceOptions"
    },
    "DescribeReservedDBInstances": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "ReservedDBInstances"
    },
    "DescribeReservedDBInstancesOfferings": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "ReservedDBInstancesOfferings"
    },
    "DownloadDBLogFilePortion": {
      "input_token": "Marker",
      "limit_key": "NumberOfLines",
      "more_results": "AdditionalDataPending",
      "output_token": "Marker",
      "result_key": "LogFileData"
    },
    "ListTagsForResource": {
      "result_key": "TagList"
    }
  }
}
},{}],123:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2013-09-09",
    "endpointPrefix": "rds",
    "protocol": "query",
    "serviceAbbreviation": "Amazon RDS",
    "serviceFullName": "Amazon Relational Database Service",
    "serviceId": "RDS",
    "signatureVersion": "v4",
    "uid": "rds-2013-09-09",
    "xmlNamespace": "http://rds.amazonaws.com/doc/2013-09-09/"
  },
  "operations": {
    "AddSourceIdentifierToSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName",
          "SourceIdentifier"
        ],
        "members": {
          "SubscriptionName": {},
          "SourceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "AddSourceIdentifierToSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "AddTagsToResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName",
          "Tags"
        ],
        "members": {
          "ResourceName": {},
          "Tags": {
            "shape": "S9"
          }
        }
      }
    },
    "AuthorizeDBSecurityGroupIngress": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName"
        ],
        "members": {
          "DBSecurityGroupName": {},
          "CIDRIP": {},
          "EC2SecurityGroupName": {},
          "EC2SecurityGroupId": {},
          "EC2SecurityGroupOwnerId": {}
        }
      },
      "output": {
        "resultWrapper": "AuthorizeDBSecurityGroupIngressResult",
        "type": "structure",
        "members": {
          "DBSecurityGroup": {
            "shape": "Sd"
          }
        }
      }
    },
    "CopyDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "SourceDBSnapshotIdentifier",
          "TargetDBSnapshotIdentifier"
        ],
        "members": {
          "SourceDBSnapshotIdentifier": {},
          "TargetDBSnapshotIdentifier": {},
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CopyDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBSnapshot": {
            "shape": "Sk"
          }
        }
      }
    },
    "CreateDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "AllocatedStorage",
          "DBInstanceClass",
          "Engine",
          "MasterUsername",
          "MasterUserPassword"
        ],
        "members": {
          "DBName": {},
          "DBInstanceIdentifier": {},
          "AllocatedStorage": {
            "type": "integer"
          },
          "DBInstanceClass": {},
          "Engine": {},
          "MasterUsername": {},
          "MasterUserPassword": {},
          "DBSecurityGroups": {
            "shape": "Sp"
          },
          "VpcSecurityGroupIds": {
            "shape": "Sq"
          },
          "AvailabilityZone": {},
          "DBSubnetGroupName": {},
          "PreferredMaintenanceWindow": {},
          "DBParameterGroupName": {},
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "PreferredBackupWindow": {},
          "Port": {
            "type": "integer"
          },
          "MultiAZ": {
            "type": "boolean"
          },
          "EngineVersion": {},
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "CharacterSetName": {},
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "CreateDBInstanceReadReplica": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "SourceDBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "SourceDBInstanceIdentifier": {},
          "DBInstanceClass": {},
          "AvailabilityZone": {},
          "Port": {
            "type": "integer"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "Tags": {
            "shape": "S9"
          },
          "DBSubnetGroupName": {}
        }
      },
      "output": {
        "resultWrapper": "CreateDBInstanceReadReplicaResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "CreateDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName",
          "DBParameterGroupFamily",
          "Description"
        ],
        "members": {
          "DBParameterGroupName": {},
          "DBParameterGroupFamily": {},
          "Description": {},
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBParameterGroupResult",
        "type": "structure",
        "members": {
          "DBParameterGroup": {
            "shape": "S1f"
          }
        }
      }
    },
    "CreateDBSecurityGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName",
          "DBSecurityGroupDescription"
        ],
        "members": {
          "DBSecurityGroupName": {},
          "DBSecurityGroupDescription": {},
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBSecurityGroupResult",
        "type": "structure",
        "members": {
          "DBSecurityGroup": {
            "shape": "Sd"
          }
        }
      }
    },
    "CreateDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBSnapshotIdentifier",
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBSnapshotIdentifier": {},
          "DBInstanceIdentifier": {},
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBSnapshot": {
            "shape": "Sk"
          }
        }
      }
    },
    "CreateDBSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSubnetGroupName",
          "DBSubnetGroupDescription",
          "SubnetIds"
        ],
        "members": {
          "DBSubnetGroupName": {},
          "DBSubnetGroupDescription": {},
          "SubnetIds": {
            "shape": "S1l"
          },
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBSubnetGroupResult",
        "type": "structure",
        "members": {
          "DBSubnetGroup": {
            "shape": "S11"
          }
        }
      }
    },
    "CreateEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName",
          "SnsTopicArn"
        ],
        "members": {
          "SubscriptionName": {},
          "SnsTopicArn": {},
          "SourceType": {},
          "EventCategories": {
            "shape": "S6"
          },
          "SourceIds": {
            "shape": "S5"
          },
          "Enabled": {
            "type": "boolean"
          },
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "CreateOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "OptionGroupName",
          "EngineName",
          "MajorEngineVersion",
          "OptionGroupDescription"
        ],
        "members": {
          "OptionGroupName": {},
          "EngineName": {},
          "MajorEngineVersion": {},
          "OptionGroupDescription": {},
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateOptionGroupResult",
        "type": "structure",
        "members": {
          "OptionGroup": {
            "shape": "S1r"
          }
        }
      }
    },
    "DeleteDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "SkipFinalSnapshot": {
            "type": "boolean"
          },
          "FinalDBSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "DeleteDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName"
        ],
        "members": {
          "DBParameterGroupName": {}
        }
      }
    },
    "DeleteDBSecurityGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName"
        ],
        "members": {
          "DBSecurityGroupName": {}
        }
      }
    },
    "DeleteDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBSnapshotIdentifier"
        ],
        "members": {
          "DBSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBSnapshot": {
            "shape": "Sk"
          }
        }
      }
    },
    "DeleteDBSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSubnetGroupName"
        ],
        "members": {
          "DBSubnetGroupName": {}
        }
      }
    },
    "DeleteEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName"
        ],
        "members": {
          "SubscriptionName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "DeleteOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "OptionGroupName"
        ],
        "members": {
          "OptionGroupName": {}
        }
      }
    },
    "DescribeDBEngineVersions": {
      "input": {
        "type": "structure",
        "members": {
          "Engine": {},
          "EngineVersion": {},
          "DBParameterGroupFamily": {},
          "Filters": {
            "shape": "S27"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "DefaultOnly": {
            "type": "boolean"
          },
          "ListSupportedCharacterSets": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeDBEngineVersionsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBEngineVersions": {
            "type": "list",
            "member": {
              "locationName": "DBEngineVersion",
              "type": "structure",
              "members": {
                "Engine": {},
                "EngineVersion": {},
                "DBParameterGroupFamily": {},
                "DBEngineDescription": {},
                "DBEngineVersionDescription": {},
                "DefaultCharacterSet": {
                  "shape": "S2d"
                },
                "SupportedCharacterSets": {
                  "type": "list",
                  "member": {
                    "shape": "S2d",
                    "locationName": "CharacterSet"
                  }
                }
              }
            }
          }
        }
      }
    },
    "DescribeDBInstances": {
      "input": {
        "type": "structure",
        "members": {
          "DBInstanceIdentifier": {},
          "Filters": {
            "shape": "S27"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBInstancesResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBInstances": {
            "type": "list",
            "member": {
              "shape": "St",
              "locationName": "DBInstance"
            }
          }
        }
      }
    },
    "DescribeDBLogFiles": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "FilenameContains": {},
          "FileLastWritten": {
            "type": "long"
          },
          "FileSize": {
            "type": "long"
          },
          "Filters": {
            "shape": "S27"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBLogFilesResult",
        "type": "structure",
        "members": {
          "DescribeDBLogFiles": {
            "type": "list",
            "member": {
              "locationName": "DescribeDBLogFilesDetails",
              "type": "structure",
              "members": {
                "LogFileName": {},
                "LastWritten": {
                  "type": "long"
                },
                "Size": {
                  "type": "long"
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeDBParameterGroups": {
      "input": {
        "type": "structure",
        "members": {
          "DBParameterGroupName": {},
          "Filters": {
            "shape": "S27"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBParameterGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBParameterGroups": {
            "type": "list",
            "member": {
              "shape": "S1f",
              "locationName": "DBParameterGroup"
            }
          }
        }
      }
    },
    "DescribeDBParameters": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName"
        ],
        "members": {
          "DBParameterGroupName": {},
          "Source": {},
          "Filters": {
            "shape": "S27"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBParametersResult",
        "type": "structure",
        "members": {
          "Parameters": {
            "shape": "S2s"
          },
          "Marker": {}
        }
      }
    },
    "DescribeDBSecurityGroups": {
      "input": {
        "type": "structure",
        "members": {
          "DBSecurityGroupName": {},
          "Filters": {
            "shape": "S27"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBSecurityGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBSecurityGroups": {
            "type": "list",
            "member": {
              "shape": "Sd",
              "locationName": "DBSecurityGroup"
            }
          }
        }
      }
    },
    "DescribeDBSnapshots": {
      "input": {
        "type": "structure",
        "members": {
          "DBInstanceIdentifier": {},
          "DBSnapshotIdentifier": {},
          "SnapshotType": {},
          "Filters": {
            "shape": "S27"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBSnapshotsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBSnapshots": {
            "type": "list",
            "member": {
              "shape": "Sk",
              "locationName": "DBSnapshot"
            }
          }
        }
      }
    },
    "DescribeDBSubnetGroups": {
      "input": {
        "type": "structure",
        "members": {
          "DBSubnetGroupName": {},
          "Filters": {
            "shape": "S27"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBSubnetGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBSubnetGroups": {
            "type": "list",
            "member": {
              "shape": "S11",
              "locationName": "DBSubnetGroup"
            }
          }
        }
      }
    },
    "DescribeEngineDefaultParameters": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupFamily"
        ],
        "members": {
          "DBParameterGroupFamily": {},
          "Filters": {
            "shape": "S27"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEngineDefaultParametersResult",
        "type": "structure",
        "members": {
          "EngineDefaults": {
            "type": "structure",
            "members": {
              "DBParameterGroupFamily": {},
              "Marker": {},
              "Parameters": {
                "shape": "S2s"
              }
            },
            "wrapper": true
          }
        }
      }
    },
    "DescribeEventCategories": {
      "input": {
        "type": "structure",
        "members": {
          "SourceType": {},
          "Filters": {
            "shape": "S27"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeEventCategoriesResult",
        "type": "structure",
        "members": {
          "EventCategoriesMapList": {
            "type": "list",
            "member": {
              "locationName": "EventCategoriesMap",
              "type": "structure",
              "members": {
                "SourceType": {},
                "EventCategories": {
                  "shape": "S6"
                }
              },
              "wrapper": true
            }
          }
        }
      }
    },
    "DescribeEventSubscriptions": {
      "input": {
        "type": "structure",
        "members": {
          "SubscriptionName": {},
          "Filters": {
            "shape": "S27"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEventSubscriptionsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "EventSubscriptionsList": {
            "type": "list",
            "member": {
              "shape": "S4",
              "locationName": "EventSubscription"
            }
          }
        }
      }
    },
    "DescribeEvents": {
      "input": {
        "type": "structure",
        "members": {
          "SourceIdentifier": {},
          "SourceType": {},
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "Duration": {
            "type": "integer"
          },
          "EventCategories": {
            "shape": "S6"
          },
          "Filters": {
            "shape": "S27"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEventsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "Events": {
            "type": "list",
            "member": {
              "locationName": "Event",
              "type": "structure",
              "members": {
                "SourceIdentifier": {},
                "SourceType": {},
                "Message": {},
                "EventCategories": {
                  "shape": "S6"
                },
                "Date": {
                  "type": "timestamp"
                }
              }
            }
          }
        }
      }
    },
    "DescribeOptionGroupOptions": {
      "input": {
        "type": "structure",
        "required": [
          "EngineName"
        ],
        "members": {
          "EngineName": {},
          "MajorEngineVersion": {},
          "Filters": {
            "shape": "S27"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeOptionGroupOptionsResult",
        "type": "structure",
        "members": {
          "OptionGroupOptions": {
            "type": "list",
            "member": {
              "locationName": "OptionGroupOption",
              "type": "structure",
              "members": {
                "Name": {},
                "Description": {},
                "EngineName": {},
                "MajorEngineVersion": {},
                "MinimumRequiredMinorEngineVersion": {},
                "PortRequired": {
                  "type": "boolean"
                },
                "DefaultPort": {
                  "type": "integer"
                },
                "OptionsDependedOn": {
                  "type": "list",
                  "member": {
                    "locationName": "OptionName"
                  }
                },
                "Persistent": {
                  "type": "boolean"
                },
                "Permanent": {
                  "type": "boolean"
                },
                "OptionGroupOptionSettings": {
                  "type": "list",
                  "member": {
                    "locationName": "OptionGroupOptionSetting",
                    "type": "structure",
                    "members": {
                      "SettingName": {},
                      "SettingDescription": {},
                      "DefaultValue": {},
                      "ApplyType": {},
                      "AllowedValues": {},
                      "IsModifiable": {
                        "type": "boolean"
                      }
                    }
                  }
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeOptionGroups": {
      "input": {
        "type": "structure",
        "members": {
          "OptionGroupName": {},
          "Filters": {
            "shape": "S27"
          },
          "Marker": {},
          "MaxRecords": {
            "type": "integer"
          },
          "EngineName": {},
          "MajorEngineVersion": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeOptionGroupsResult",
        "type": "structure",
        "members": {
          "OptionGroupsList": {
            "type": "list",
            "member": {
              "shape": "S1r",
              "locationName": "OptionGroup"
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeOrderableDBInstanceOptions": {
      "input": {
        "type": "structure",
        "required": [
          "Engine"
        ],
        "members": {
          "Engine": {},
          "EngineVersion": {},
          "DBInstanceClass": {},
          "LicenseModel": {},
          "Vpc": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "S27"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeOrderableDBInstanceOptionsResult",
        "type": "structure",
        "members": {
          "OrderableDBInstanceOptions": {
            "type": "list",
            "member": {
              "locationName": "OrderableDBInstanceOption",
              "type": "structure",
              "members": {
                "Engine": {},
                "EngineVersion": {},
                "DBInstanceClass": {},
                "LicenseModel": {},
                "AvailabilityZones": {
                  "type": "list",
                  "member": {
                    "shape": "S14",
                    "locationName": "AvailabilityZone"
                  }
                },
                "MultiAZCapable": {
                  "type": "boolean"
                },
                "ReadReplicaCapable": {
                  "type": "boolean"
                },
                "Vpc": {
                  "type": "boolean"
                }
              },
              "wrapper": true
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeReservedDBInstances": {
      "input": {
        "type": "structure",
        "members": {
          "ReservedDBInstanceId": {},
          "ReservedDBInstancesOfferingId": {},
          "DBInstanceClass": {},
          "Duration": {},
          "ProductDescription": {},
          "OfferingType": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "S27"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReservedDBInstancesResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ReservedDBInstances": {
            "type": "list",
            "member": {
              "shape": "S41",
              "locationName": "ReservedDBInstance"
            }
          }
        }
      }
    },
    "DescribeReservedDBInstancesOfferings": {
      "input": {
        "type": "structure",
        "members": {
          "ReservedDBInstancesOfferingId": {},
          "DBInstanceClass": {},
          "Duration": {},
          "ProductDescription": {},
          "OfferingType": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "S27"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReservedDBInstancesOfferingsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ReservedDBInstancesOfferings": {
            "type": "list",
            "member": {
              "locationName": "ReservedDBInstancesOffering",
              "type": "structure",
              "members": {
                "ReservedDBInstancesOfferingId": {},
                "DBInstanceClass": {},
                "Duration": {
                  "type": "integer"
                },
                "FixedPrice": {
                  "type": "double"
                },
                "UsagePrice": {
                  "type": "double"
                },
                "CurrencyCode": {},
                "ProductDescription": {},
                "OfferingType": {},
                "MultiAZ": {
                  "type": "boolean"
                },
                "RecurringCharges": {
                  "shape": "S43"
                }
              },
              "wrapper": true
            }
          }
        }
      }
    },
    "DownloadDBLogFilePortion": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "LogFileName"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "LogFileName": {},
          "Marker": {},
          "NumberOfLines": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DownloadDBLogFilePortionResult",
        "type": "structure",
        "members": {
          "LogFileData": {},
          "Marker": {},
          "AdditionalDataPending": {
            "type": "boolean"
          }
        }
      }
    },
    "ListTagsForResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName"
        ],
        "members": {
          "ResourceName": {},
          "Filters": {
            "shape": "S27"
          }
        }
      },
      "output": {
        "resultWrapper": "ListTagsForResourceResult",
        "type": "structure",
        "members": {
          "TagList": {
            "shape": "S9"
          }
        }
      }
    },
    "ModifyDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "AllocatedStorage": {
            "type": "integer"
          },
          "DBInstanceClass": {},
          "DBSecurityGroups": {
            "shape": "Sp"
          },
          "VpcSecurityGroupIds": {
            "shape": "Sq"
          },
          "ApplyImmediately": {
            "type": "boolean"
          },
          "MasterUserPassword": {},
          "DBParameterGroupName": {},
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "PreferredBackupWindow": {},
          "PreferredMaintenanceWindow": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "EngineVersion": {},
          "AllowMajorVersionUpgrade": {
            "type": "boolean"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "NewDBInstanceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "ModifyDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "ModifyDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName",
          "Parameters"
        ],
        "members": {
          "DBParameterGroupName": {},
          "Parameters": {
            "shape": "S2s"
          }
        }
      },
      "output": {
        "shape": "S4g",
        "resultWrapper": "ModifyDBParameterGroupResult"
      }
    },
    "ModifyDBSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSubnetGroupName",
          "SubnetIds"
        ],
        "members": {
          "DBSubnetGroupName": {},
          "DBSubnetGroupDescription": {},
          "SubnetIds": {
            "shape": "S1l"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyDBSubnetGroupResult",
        "type": "structure",
        "members": {
          "DBSubnetGroup": {
            "shape": "S11"
          }
        }
      }
    },
    "ModifyEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName"
        ],
        "members": {
          "SubscriptionName": {},
          "SnsTopicArn": {},
          "SourceType": {},
          "EventCategories": {
            "shape": "S6"
          },
          "Enabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "ModifyOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "OptionGroupName"
        ],
        "members": {
          "OptionGroupName": {},
          "OptionsToInclude": {
            "type": "list",
            "member": {
              "locationName": "OptionConfiguration",
              "type": "structure",
              "required": [
                "OptionName"
              ],
              "members": {
                "OptionName": {},
                "Port": {
                  "type": "integer"
                },
                "DBSecurityGroupMemberships": {
                  "shape": "Sp"
                },
                "VpcSecurityGroupMemberships": {
                  "shape": "Sq"
                },
                "OptionSettings": {
                  "type": "list",
                  "member": {
                    "shape": "S1v",
                    "locationName": "OptionSetting"
                  }
                }
              }
            }
          },
          "OptionsToRemove": {
            "type": "list",
            "member": {}
          },
          "ApplyImmediately": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyOptionGroupResult",
        "type": "structure",
        "members": {
          "OptionGroup": {
            "shape": "S1r"
          }
        }
      }
    },
    "PromoteReadReplica": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "PreferredBackupWindow": {}
        }
      },
      "output": {
        "resultWrapper": "PromoteReadReplicaResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "PurchaseReservedDBInstancesOffering": {
      "input": {
        "type": "structure",
        "required": [
          "ReservedDBInstancesOfferingId"
        ],
        "members": {
          "ReservedDBInstancesOfferingId": {},
          "ReservedDBInstanceId": {},
          "DBInstanceCount": {
            "type": "integer"
          },
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "PurchaseReservedDBInstancesOfferingResult",
        "type": "structure",
        "members": {
          "ReservedDBInstance": {
            "shape": "S41"
          }
        }
      }
    },
    "RebootDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "ForceFailover": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "RebootDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "RemoveSourceIdentifierFromSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName",
          "SourceIdentifier"
        ],
        "members": {
          "SubscriptionName": {},
          "SourceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "RemoveTagsFromResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName",
          "TagKeys"
        ],
        "members": {
          "ResourceName": {},
          "TagKeys": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "ResetDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName"
        ],
        "members": {
          "DBParameterGroupName": {},
          "ResetAllParameters": {
            "type": "boolean"
          },
          "Parameters": {
            "shape": "S2s"
          }
        }
      },
      "output": {
        "shape": "S4g",
        "resultWrapper": "ResetDBParameterGroupResult"
      }
    },
    "RestoreDBInstanceFromDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "DBSnapshotIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "DBSnapshotIdentifier": {},
          "DBInstanceClass": {},
          "Port": {
            "type": "integer"
          },
          "AvailabilityZone": {},
          "DBSubnetGroupName": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "DBName": {},
          "Engine": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "RestoreDBInstanceToPointInTime": {
      "input": {
        "type": "structure",
        "required": [
          "SourceDBInstanceIdentifier",
          "TargetDBInstanceIdentifier"
        ],
        "members": {
          "SourceDBInstanceIdentifier": {},
          "TargetDBInstanceIdentifier": {},
          "RestoreTime": {
            "type": "timestamp"
          },
          "UseLatestRestorableTime": {
            "type": "boolean"
          },
          "DBInstanceClass": {},
          "Port": {
            "type": "integer"
          },
          "AvailabilityZone": {},
          "DBSubnetGroupName": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "DBName": {},
          "Engine": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "RestoreDBInstanceToPointInTimeResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "St"
          }
        }
      }
    },
    "RevokeDBSecurityGroupIngress": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName"
        ],
        "members": {
          "DBSecurityGroupName": {},
          "CIDRIP": {},
          "EC2SecurityGroupName": {},
          "EC2SecurityGroupId": {},
          "EC2SecurityGroupOwnerId": {}
        }
      },
      "output": {
        "resultWrapper": "RevokeDBSecurityGroupIngressResult",
        "type": "structure",
        "members": {
          "DBSecurityGroup": {
            "shape": "Sd"
          }
        }
      }
    }
  },
  "shapes": {
    "S4": {
      "type": "structure",
      "members": {
        "CustomerAwsId": {},
        "CustSubscriptionId": {},
        "SnsTopicArn": {},
        "Status": {},
        "SubscriptionCreationTime": {},
        "SourceType": {},
        "SourceIdsList": {
          "shape": "S5"
        },
        "EventCategoriesList": {
          "shape": "S6"
        },
        "Enabled": {
          "type": "boolean"
        }
      },
      "wrapper": true
    },
    "S5": {
      "type": "list",
      "member": {
        "locationName": "SourceId"
      }
    },
    "S6": {
      "type": "list",
      "member": {
        "locationName": "EventCategory"
      }
    },
    "S9": {
      "type": "list",
      "member": {
        "locationName": "Tag",
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "Sd": {
      "type": "structure",
      "members": {
        "OwnerId": {},
        "DBSecurityGroupName": {},
        "DBSecurityGroupDescription": {},
        "VpcId": {},
        "EC2SecurityGroups": {
          "type": "list",
          "member": {
            "locationName": "EC2SecurityGroup",
            "type": "structure",
            "members": {
              "Status": {},
              "EC2SecurityGroupName": {},
              "EC2SecurityGroupId": {},
              "EC2SecurityGroupOwnerId": {}
            }
          }
        },
        "IPRanges": {
          "type": "list",
          "member": {
            "locationName": "IPRange",
            "type": "structure",
            "members": {
              "Status": {},
              "CIDRIP": {}
            }
          }
        }
      },
      "wrapper": true
    },
    "Sk": {
      "type": "structure",
      "members": {
        "DBSnapshotIdentifier": {},
        "DBInstanceIdentifier": {},
        "SnapshotCreateTime": {
          "type": "timestamp"
        },
        "Engine": {},
        "AllocatedStorage": {
          "type": "integer"
        },
        "Status": {},
        "Port": {
          "type": "integer"
        },
        "AvailabilityZone": {},
        "VpcId": {},
        "InstanceCreateTime": {
          "type": "timestamp"
        },
        "MasterUsername": {},
        "EngineVersion": {},
        "LicenseModel": {},
        "SnapshotType": {},
        "Iops": {
          "type": "integer"
        },
        "OptionGroupName": {},
        "PercentProgress": {
          "type": "integer"
        },
        "SourceRegion": {}
      },
      "wrapper": true
    },
    "Sp": {
      "type": "list",
      "member": {
        "locationName": "DBSecurityGroupName"
      }
    },
    "Sq": {
      "type": "list",
      "member": {
        "locationName": "VpcSecurityGroupId"
      }
    },
    "St": {
      "type": "structure",
      "members": {
        "DBInstanceIdentifier": {},
        "DBInstanceClass": {},
        "Engine": {},
        "DBInstanceStatus": {},
        "MasterUsername": {},
        "DBName": {},
        "Endpoint": {
          "type": "structure",
          "members": {
            "Address": {},
            "Port": {
              "type": "integer"
            }
          }
        },
        "AllocatedStorage": {
          "type": "integer"
        },
        "InstanceCreateTime": {
          "type": "timestamp"
        },
        "PreferredBackupWindow": {},
        "BackupRetentionPeriod": {
          "type": "integer"
        },
        "DBSecurityGroups": {
          "shape": "Sv"
        },
        "VpcSecurityGroups": {
          "shape": "Sx"
        },
        "DBParameterGroups": {
          "type": "list",
          "member": {
            "locationName": "DBParameterGroup",
            "type": "structure",
            "members": {
              "DBParameterGroupName": {},
              "ParameterApplyStatus": {}
            }
          }
        },
        "AvailabilityZone": {},
        "DBSubnetGroup": {
          "shape": "S11"
        },
        "PreferredMaintenanceWindow": {},
        "PendingModifiedValues": {
          "type": "structure",
          "members": {
            "DBInstanceClass": {},
            "AllocatedStorage": {
              "type": "integer"
            },
            "MasterUserPassword": {},
            "Port": {
              "type": "integer"
            },
            "BackupRetentionPeriod": {
              "type": "integer"
            },
            "MultiAZ": {
              "type": "boolean"
            },
            "EngineVersion": {},
            "Iops": {
              "type": "integer"
            },
            "DBInstanceIdentifier": {}
          }
        },
        "LatestRestorableTime": {
          "type": "timestamp"
        },
        "MultiAZ": {
          "type": "boolean"
        },
        "EngineVersion": {},
        "AutoMinorVersionUpgrade": {
          "type": "boolean"
        },
        "ReadReplicaSourceDBInstanceIdentifier": {},
        "ReadReplicaDBInstanceIdentifiers": {
          "type": "list",
          "member": {
            "locationName": "ReadReplicaDBInstanceIdentifier"
          }
        },
        "LicenseModel": {},
        "Iops": {
          "type": "integer"
        },
        "OptionGroupMemberships": {
          "type": "list",
          "member": {
            "locationName": "OptionGroupMembership",
            "type": "structure",
            "members": {
              "OptionGroupName": {},
              "Status": {}
            }
          }
        },
        "CharacterSetName": {},
        "SecondaryAvailabilityZone": {},
        "PubliclyAccessible": {
          "type": "boolean"
        },
        "StatusInfos": {
          "type": "list",
          "member": {
            "locationName": "DBInstanceStatusInfo",
            "type": "structure",
            "members": {
              "StatusType": {},
              "Normal": {
                "type": "boolean"
              },
              "Status": {},
              "Message": {}
            }
          }
        }
      },
      "wrapper": true
    },
    "Sv": {
      "type": "list",
      "member": {
        "locationName": "DBSecurityGroup",
        "type": "structure",
        "members": {
          "DBSecurityGroupName": {},
          "Status": {}
        }
      }
    },
    "Sx": {
      "type": "list",
      "member": {
        "locationName": "VpcSecurityGroupMembership",
        "type": "structure",
        "members": {
          "VpcSecurityGroupId": {},
          "Status": {}
        }
      }
    },
    "S11": {
      "type": "structure",
      "members": {
        "DBSubnetGroupName": {},
        "DBSubnetGroupDescription": {},
        "VpcId": {},
        "SubnetGroupStatus": {},
        "Subnets": {
          "type": "list",
          "member": {
            "locationName": "Subnet",
            "type": "structure",
            "members": {
              "SubnetIdentifier": {},
              "SubnetAvailabilityZone": {
                "shape": "S14"
              },
              "SubnetStatus": {}
            }
          }
        }
      },
      "wrapper": true
    },
    "S14": {
      "type": "structure",
      "members": {
        "Name": {},
        "ProvisionedIopsCapable": {
          "type": "boolean"
        }
      },
      "wrapper": true
    },
    "S1f": {
      "type": "structure",
      "members": {
        "DBParameterGroupName": {},
        "DBParameterGroupFamily": {},
        "Description": {}
      },
      "wrapper": true
    },
    "S1l": {
      "type": "list",
      "member": {
        "locationName": "SubnetIdentifier"
      }
    },
    "S1r": {
      "type": "structure",
      "members": {
        "OptionGroupName": {},
        "OptionGroupDescription": {},
        "EngineName": {},
        "MajorEngineVersion": {},
        "Options": {
          "type": "list",
          "member": {
            "locationName": "Option",
            "type": "structure",
            "members": {
              "OptionName": {},
              "OptionDescription": {},
              "Persistent": {
                "type": "boolean"
              },
              "Permanent": {
                "type": "boolean"
              },
              "Port": {
                "type": "integer"
              },
              "OptionSettings": {
                "type": "list",
                "member": {
                  "shape": "S1v",
                  "locationName": "OptionSetting"
                }
              },
              "DBSecurityGroupMemberships": {
                "shape": "Sv"
              },
              "VpcSecurityGroupMemberships": {
                "shape": "Sx"
              }
            }
          }
        },
        "AllowsVpcAndNonVpcInstanceMemberships": {
          "type": "boolean"
        },
        "VpcId": {}
      },
      "wrapper": true
    },
    "S1v": {
      "type": "structure",
      "members": {
        "Name": {},
        "Value": {},
        "DefaultValue": {},
        "Description": {},
        "ApplyType": {},
        "DataType": {},
        "AllowedValues": {},
        "IsModifiable": {
          "type": "boolean"
        },
        "IsCollection": {
          "type": "boolean"
        }
      }
    },
    "S27": {
      "type": "list",
      "member": {
        "locationName": "Filter",
        "type": "structure",
        "required": [
          "Name",
          "Values"
        ],
        "members": {
          "Name": {},
          "Values": {
            "type": "list",
            "member": {
              "locationName": "Value"
            }
          }
        }
      }
    },
    "S2d": {
      "type": "structure",
      "members": {
        "CharacterSetName": {},
        "CharacterSetDescription": {}
      }
    },
    "S2s": {
      "type": "list",
      "member": {
        "locationName": "Parameter",
        "type": "structure",
        "members": {
          "ParameterName": {},
          "ParameterValue": {},
          "Description": {},
          "Source": {},
          "ApplyType": {},
          "DataType": {},
          "AllowedValues": {},
          "IsModifiable": {
            "type": "boolean"
          },
          "MinimumEngineVersion": {},
          "ApplyMethod": {}
        }
      }
    },
    "S41": {
      "type": "structure",
      "members": {
        "ReservedDBInstanceId": {},
        "ReservedDBInstancesOfferingId": {},
        "DBInstanceClass": {},
        "StartTime": {
          "type": "timestamp"
        },
        "Duration": {
          "type": "integer"
        },
        "FixedPrice": {
          "type": "double"
        },
        "UsagePrice": {
          "type": "double"
        },
        "CurrencyCode": {},
        "DBInstanceCount": {
          "type": "integer"
        },
        "ProductDescription": {},
        "OfferingType": {},
        "MultiAZ": {
          "type": "boolean"
        },
        "State": {},
        "RecurringCharges": {
          "shape": "S43"
        }
      },
      "wrapper": true
    },
    "S43": {
      "type": "list",
      "member": {
        "locationName": "RecurringCharge",
        "type": "structure",
        "members": {
          "RecurringChargeAmount": {
            "type": "double"
          },
          "RecurringChargeFrequency": {}
        },
        "wrapper": true
      }
    },
    "S4g": {
      "type": "structure",
      "members": {
        "DBParameterGroupName": {}
      }
    }
  }
}
},{}],124:[function(require,module,exports){
arguments[4][122][0].apply(exports,arguments)
},{"dup":122}],125:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "DBInstanceAvailable": {
      "delay": 30,
      "operation": "DescribeDBInstances",
      "maxAttempts": 60,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "deleted",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "deleting",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "incompatible-restore",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "incompatible-parameters",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "incompatible-parameters",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "incompatible-restore",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        }
      ]
    },
    "DBInstanceDeleted": {
      "delay": 30,
      "operation": "DescribeDBInstances",
      "maxAttempts": 60,
      "acceptors": [
        {
          "expected": "deleted",
          "matcher": "pathAll",
          "state": "success",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "creating",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "modifying",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "rebooting",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "resetting-master-credentials",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        }
      ]
    }
  }
}

},{}],126:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2014-09-01",
    "endpointPrefix": "rds",
    "protocol": "query",
    "serviceAbbreviation": "Amazon RDS",
    "serviceFullName": "Amazon Relational Database Service",
    "serviceId": "RDS",
    "signatureVersion": "v4",
    "uid": "rds-2014-09-01",
    "xmlNamespace": "http://rds.amazonaws.com/doc/2014-09-01/"
  },
  "operations": {
    "AddSourceIdentifierToSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName",
          "SourceIdentifier"
        ],
        "members": {
          "SubscriptionName": {},
          "SourceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "AddSourceIdentifierToSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "AddTagsToResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName",
          "Tags"
        ],
        "members": {
          "ResourceName": {},
          "Tags": {
            "shape": "S9"
          }
        }
      }
    },
    "AuthorizeDBSecurityGroupIngress": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName"
        ],
        "members": {
          "DBSecurityGroupName": {},
          "CIDRIP": {},
          "EC2SecurityGroupName": {},
          "EC2SecurityGroupId": {},
          "EC2SecurityGroupOwnerId": {}
        }
      },
      "output": {
        "resultWrapper": "AuthorizeDBSecurityGroupIngressResult",
        "type": "structure",
        "members": {
          "DBSecurityGroup": {
            "shape": "Sd"
          }
        }
      }
    },
    "CopyDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "SourceDBParameterGroupIdentifier",
          "TargetDBParameterGroupIdentifier",
          "TargetDBParameterGroupDescription"
        ],
        "members": {
          "SourceDBParameterGroupIdentifier": {},
          "TargetDBParameterGroupIdentifier": {},
          "TargetDBParameterGroupDescription": {},
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CopyDBParameterGroupResult",
        "type": "structure",
        "members": {
          "DBParameterGroup": {
            "shape": "Sk"
          }
        }
      }
    },
    "CopyDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "SourceDBSnapshotIdentifier",
          "TargetDBSnapshotIdentifier"
        ],
        "members": {
          "SourceDBSnapshotIdentifier": {},
          "TargetDBSnapshotIdentifier": {},
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CopyDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBSnapshot": {
            "shape": "Sn"
          }
        }
      }
    },
    "CopyOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "SourceOptionGroupIdentifier",
          "TargetOptionGroupIdentifier",
          "TargetOptionGroupDescription"
        ],
        "members": {
          "SourceOptionGroupIdentifier": {},
          "TargetOptionGroupIdentifier": {},
          "TargetOptionGroupDescription": {},
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CopyOptionGroupResult",
        "type": "structure",
        "members": {
          "OptionGroup": {
            "shape": "St"
          }
        }
      }
    },
    "CreateDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "AllocatedStorage",
          "DBInstanceClass",
          "Engine",
          "MasterUsername",
          "MasterUserPassword"
        ],
        "members": {
          "DBName": {},
          "DBInstanceIdentifier": {},
          "AllocatedStorage": {
            "type": "integer"
          },
          "DBInstanceClass": {},
          "Engine": {},
          "MasterUsername": {},
          "MasterUserPassword": {},
          "DBSecurityGroups": {
            "shape": "S13"
          },
          "VpcSecurityGroupIds": {
            "shape": "S14"
          },
          "AvailabilityZone": {},
          "DBSubnetGroupName": {},
          "PreferredMaintenanceWindow": {},
          "DBParameterGroupName": {},
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "PreferredBackupWindow": {},
          "Port": {
            "type": "integer"
          },
          "MultiAZ": {
            "type": "boolean"
          },
          "EngineVersion": {},
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "CharacterSetName": {},
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "Tags": {
            "shape": "S9"
          },
          "StorageType": {},
          "TdeCredentialArn": {},
          "TdeCredentialPassword": {}
        }
      },
      "output": {
        "resultWrapper": "CreateDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S17"
          }
        }
      }
    },
    "CreateDBInstanceReadReplica": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "SourceDBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "SourceDBInstanceIdentifier": {},
          "DBInstanceClass": {},
          "AvailabilityZone": {},
          "Port": {
            "type": "integer"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "Tags": {
            "shape": "S9"
          },
          "DBSubnetGroupName": {},
          "StorageType": {}
        }
      },
      "output": {
        "resultWrapper": "CreateDBInstanceReadReplicaResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S17"
          }
        }
      }
    },
    "CreateDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName",
          "DBParameterGroupFamily",
          "Description"
        ],
        "members": {
          "DBParameterGroupName": {},
          "DBParameterGroupFamily": {},
          "Description": {},
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBParameterGroupResult",
        "type": "structure",
        "members": {
          "DBParameterGroup": {
            "shape": "Sk"
          }
        }
      }
    },
    "CreateDBSecurityGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName",
          "DBSecurityGroupDescription"
        ],
        "members": {
          "DBSecurityGroupName": {},
          "DBSecurityGroupDescription": {},
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBSecurityGroupResult",
        "type": "structure",
        "members": {
          "DBSecurityGroup": {
            "shape": "Sd"
          }
        }
      }
    },
    "CreateDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBSnapshotIdentifier",
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBSnapshotIdentifier": {},
          "DBInstanceIdentifier": {},
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBSnapshot": {
            "shape": "Sn"
          }
        }
      }
    },
    "CreateDBSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSubnetGroupName",
          "DBSubnetGroupDescription",
          "SubnetIds"
        ],
        "members": {
          "DBSubnetGroupName": {},
          "DBSubnetGroupDescription": {},
          "SubnetIds": {
            "shape": "S1u"
          },
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBSubnetGroupResult",
        "type": "structure",
        "members": {
          "DBSubnetGroup": {
            "shape": "S1b"
          }
        }
      }
    },
    "CreateEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName",
          "SnsTopicArn"
        ],
        "members": {
          "SubscriptionName": {},
          "SnsTopicArn": {},
          "SourceType": {},
          "EventCategories": {
            "shape": "S6"
          },
          "SourceIds": {
            "shape": "S5"
          },
          "Enabled": {
            "type": "boolean"
          },
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "CreateOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "OptionGroupName",
          "EngineName",
          "MajorEngineVersion",
          "OptionGroupDescription"
        ],
        "members": {
          "OptionGroupName": {},
          "EngineName": {},
          "MajorEngineVersion": {},
          "OptionGroupDescription": {},
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateOptionGroupResult",
        "type": "structure",
        "members": {
          "OptionGroup": {
            "shape": "St"
          }
        }
      }
    },
    "DeleteDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "SkipFinalSnapshot": {
            "type": "boolean"
          },
          "FinalDBSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S17"
          }
        }
      }
    },
    "DeleteDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName"
        ],
        "members": {
          "DBParameterGroupName": {}
        }
      }
    },
    "DeleteDBSecurityGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName"
        ],
        "members": {
          "DBSecurityGroupName": {}
        }
      }
    },
    "DeleteDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBSnapshotIdentifier"
        ],
        "members": {
          "DBSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBSnapshot": {
            "shape": "Sn"
          }
        }
      }
    },
    "DeleteDBSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSubnetGroupName"
        ],
        "members": {
          "DBSubnetGroupName": {}
        }
      }
    },
    "DeleteEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName"
        ],
        "members": {
          "SubscriptionName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "DeleteOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "OptionGroupName"
        ],
        "members": {
          "OptionGroupName": {}
        }
      }
    },
    "DescribeDBEngineVersions": {
      "input": {
        "type": "structure",
        "members": {
          "Engine": {},
          "EngineVersion": {},
          "DBParameterGroupFamily": {},
          "Filters": {
            "shape": "S2b"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "DefaultOnly": {
            "type": "boolean"
          },
          "ListSupportedCharacterSets": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeDBEngineVersionsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBEngineVersions": {
            "type": "list",
            "member": {
              "locationName": "DBEngineVersion",
              "type": "structure",
              "members": {
                "Engine": {},
                "EngineVersion": {},
                "DBParameterGroupFamily": {},
                "DBEngineDescription": {},
                "DBEngineVersionDescription": {},
                "DefaultCharacterSet": {
                  "shape": "S2h"
                },
                "SupportedCharacterSets": {
                  "type": "list",
                  "member": {
                    "shape": "S2h",
                    "locationName": "CharacterSet"
                  }
                }
              }
            }
          }
        }
      }
    },
    "DescribeDBInstances": {
      "input": {
        "type": "structure",
        "members": {
          "DBInstanceIdentifier": {},
          "Filters": {
            "shape": "S2b"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBInstancesResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBInstances": {
            "type": "list",
            "member": {
              "shape": "S17",
              "locationName": "DBInstance"
            }
          }
        }
      }
    },
    "DescribeDBLogFiles": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "FilenameContains": {},
          "FileLastWritten": {
            "type": "long"
          },
          "FileSize": {
            "type": "long"
          },
          "Filters": {
            "shape": "S2b"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBLogFilesResult",
        "type": "structure",
        "members": {
          "DescribeDBLogFiles": {
            "type": "list",
            "member": {
              "locationName": "DescribeDBLogFilesDetails",
              "type": "structure",
              "members": {
                "LogFileName": {},
                "LastWritten": {
                  "type": "long"
                },
                "Size": {
                  "type": "long"
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeDBParameterGroups": {
      "input": {
        "type": "structure",
        "members": {
          "DBParameterGroupName": {},
          "Filters": {
            "shape": "S2b"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBParameterGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBParameterGroups": {
            "type": "list",
            "member": {
              "shape": "Sk",
              "locationName": "DBParameterGroup"
            }
          }
        }
      }
    },
    "DescribeDBParameters": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName"
        ],
        "members": {
          "DBParameterGroupName": {},
          "Source": {},
          "Filters": {
            "shape": "S2b"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBParametersResult",
        "type": "structure",
        "members": {
          "Parameters": {
            "shape": "S2w"
          },
          "Marker": {}
        }
      }
    },
    "DescribeDBSecurityGroups": {
      "input": {
        "type": "structure",
        "members": {
          "DBSecurityGroupName": {},
          "Filters": {
            "shape": "S2b"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBSecurityGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBSecurityGroups": {
            "type": "list",
            "member": {
              "shape": "Sd",
              "locationName": "DBSecurityGroup"
            }
          }
        }
      }
    },
    "DescribeDBSnapshots": {
      "input": {
        "type": "structure",
        "members": {
          "DBInstanceIdentifier": {},
          "DBSnapshotIdentifier": {},
          "SnapshotType": {},
          "Filters": {
            "shape": "S2b"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBSnapshotsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBSnapshots": {
            "type": "list",
            "member": {
              "shape": "Sn",
              "locationName": "DBSnapshot"
            }
          }
        }
      }
    },
    "DescribeDBSubnetGroups": {
      "input": {
        "type": "structure",
        "members": {
          "DBSubnetGroupName": {},
          "Filters": {
            "shape": "S2b"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBSubnetGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBSubnetGroups": {
            "type": "list",
            "member": {
              "shape": "S1b",
              "locationName": "DBSubnetGroup"
            }
          }
        }
      }
    },
    "DescribeEngineDefaultParameters": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupFamily"
        ],
        "members": {
          "DBParameterGroupFamily": {},
          "Filters": {
            "shape": "S2b"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEngineDefaultParametersResult",
        "type": "structure",
        "members": {
          "EngineDefaults": {
            "type": "structure",
            "members": {
              "DBParameterGroupFamily": {},
              "Marker": {},
              "Parameters": {
                "shape": "S2w"
              }
            },
            "wrapper": true
          }
        }
      }
    },
    "DescribeEventCategories": {
      "input": {
        "type": "structure",
        "members": {
          "SourceType": {},
          "Filters": {
            "shape": "S2b"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeEventCategoriesResult",
        "type": "structure",
        "members": {
          "EventCategoriesMapList": {
            "type": "list",
            "member": {
              "locationName": "EventCategoriesMap",
              "type": "structure",
              "members": {
                "SourceType": {},
                "EventCategories": {
                  "shape": "S6"
                }
              },
              "wrapper": true
            }
          }
        }
      }
    },
    "DescribeEventSubscriptions": {
      "input": {
        "type": "structure",
        "members": {
          "SubscriptionName": {},
          "Filters": {
            "shape": "S2b"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEventSubscriptionsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "EventSubscriptionsList": {
            "type": "list",
            "member": {
              "shape": "S4",
              "locationName": "EventSubscription"
            }
          }
        }
      }
    },
    "DescribeEvents": {
      "input": {
        "type": "structure",
        "members": {
          "SourceIdentifier": {},
          "SourceType": {},
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "Duration": {
            "type": "integer"
          },
          "EventCategories": {
            "shape": "S6"
          },
          "Filters": {
            "shape": "S2b"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEventsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "Events": {
            "type": "list",
            "member": {
              "locationName": "Event",
              "type": "structure",
              "members": {
                "SourceIdentifier": {},
                "SourceType": {},
                "Message": {},
                "EventCategories": {
                  "shape": "S6"
                },
                "Date": {
                  "type": "timestamp"
                }
              }
            }
          }
        }
      }
    },
    "DescribeOptionGroupOptions": {
      "input": {
        "type": "structure",
        "required": [
          "EngineName"
        ],
        "members": {
          "EngineName": {},
          "MajorEngineVersion": {},
          "Filters": {
            "shape": "S2b"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeOptionGroupOptionsResult",
        "type": "structure",
        "members": {
          "OptionGroupOptions": {
            "type": "list",
            "member": {
              "locationName": "OptionGroupOption",
              "type": "structure",
              "members": {
                "Name": {},
                "Description": {},
                "EngineName": {},
                "MajorEngineVersion": {},
                "MinimumRequiredMinorEngineVersion": {},
                "PortRequired": {
                  "type": "boolean"
                },
                "DefaultPort": {
                  "type": "integer"
                },
                "OptionsDependedOn": {
                  "type": "list",
                  "member": {
                    "locationName": "OptionName"
                  }
                },
                "Persistent": {
                  "type": "boolean"
                },
                "Permanent": {
                  "type": "boolean"
                },
                "OptionGroupOptionSettings": {
                  "type": "list",
                  "member": {
                    "locationName": "OptionGroupOptionSetting",
                    "type": "structure",
                    "members": {
                      "SettingName": {},
                      "SettingDescription": {},
                      "DefaultValue": {},
                      "ApplyType": {},
                      "AllowedValues": {},
                      "IsModifiable": {
                        "type": "boolean"
                      }
                    }
                  }
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeOptionGroups": {
      "input": {
        "type": "structure",
        "members": {
          "OptionGroupName": {},
          "Filters": {
            "shape": "S2b"
          },
          "Marker": {},
          "MaxRecords": {
            "type": "integer"
          },
          "EngineName": {},
          "MajorEngineVersion": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeOptionGroupsResult",
        "type": "structure",
        "members": {
          "OptionGroupsList": {
            "type": "list",
            "member": {
              "shape": "St",
              "locationName": "OptionGroup"
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeOrderableDBInstanceOptions": {
      "input": {
        "type": "structure",
        "required": [
          "Engine"
        ],
        "members": {
          "Engine": {},
          "EngineVersion": {},
          "DBInstanceClass": {},
          "LicenseModel": {},
          "Vpc": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "S2b"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeOrderableDBInstanceOptionsResult",
        "type": "structure",
        "members": {
          "OrderableDBInstanceOptions": {
            "type": "list",
            "member": {
              "locationName": "OrderableDBInstanceOption",
              "type": "structure",
              "members": {
                "Engine": {},
                "EngineVersion": {},
                "DBInstanceClass": {},
                "LicenseModel": {},
                "AvailabilityZones": {
                  "type": "list",
                  "member": {
                    "shape": "S1e",
                    "locationName": "AvailabilityZone"
                  }
                },
                "MultiAZCapable": {
                  "type": "boolean"
                },
                "ReadReplicaCapable": {
                  "type": "boolean"
                },
                "Vpc": {
                  "type": "boolean"
                },
                "StorageType": {},
                "SupportsIops": {
                  "type": "boolean"
                }
              },
              "wrapper": true
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeReservedDBInstances": {
      "input": {
        "type": "structure",
        "members": {
          "ReservedDBInstanceId": {},
          "ReservedDBInstancesOfferingId": {},
          "DBInstanceClass": {},
          "Duration": {},
          "ProductDescription": {},
          "OfferingType": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "S2b"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReservedDBInstancesResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ReservedDBInstances": {
            "type": "list",
            "member": {
              "shape": "S45",
              "locationName": "ReservedDBInstance"
            }
          }
        }
      }
    },
    "DescribeReservedDBInstancesOfferings": {
      "input": {
        "type": "structure",
        "members": {
          "ReservedDBInstancesOfferingId": {},
          "DBInstanceClass": {},
          "Duration": {},
          "ProductDescription": {},
          "OfferingType": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "S2b"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReservedDBInstancesOfferingsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ReservedDBInstancesOfferings": {
            "type": "list",
            "member": {
              "locationName": "ReservedDBInstancesOffering",
              "type": "structure",
              "members": {
                "ReservedDBInstancesOfferingId": {},
                "DBInstanceClass": {},
                "Duration": {
                  "type": "integer"
                },
                "FixedPrice": {
                  "type": "double"
                },
                "UsagePrice": {
                  "type": "double"
                },
                "CurrencyCode": {},
                "ProductDescription": {},
                "OfferingType": {},
                "MultiAZ": {
                  "type": "boolean"
                },
                "RecurringCharges": {
                  "shape": "S47"
                }
              },
              "wrapper": true
            }
          }
        }
      }
    },
    "DownloadDBLogFilePortion": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "LogFileName"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "LogFileName": {},
          "Marker": {},
          "NumberOfLines": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DownloadDBLogFilePortionResult",
        "type": "structure",
        "members": {
          "LogFileData": {},
          "Marker": {},
          "AdditionalDataPending": {
            "type": "boolean"
          }
        }
      }
    },
    "ListTagsForResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName"
        ],
        "members": {
          "ResourceName": {},
          "Filters": {
            "shape": "S2b"
          }
        }
      },
      "output": {
        "resultWrapper": "ListTagsForResourceResult",
        "type": "structure",
        "members": {
          "TagList": {
            "shape": "S9"
          }
        }
      }
    },
    "ModifyDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "AllocatedStorage": {
            "type": "integer"
          },
          "DBInstanceClass": {},
          "DBSecurityGroups": {
            "shape": "S13"
          },
          "VpcSecurityGroupIds": {
            "shape": "S14"
          },
          "ApplyImmediately": {
            "type": "boolean"
          },
          "MasterUserPassword": {},
          "DBParameterGroupName": {},
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "PreferredBackupWindow": {},
          "PreferredMaintenanceWindow": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "EngineVersion": {},
          "AllowMajorVersionUpgrade": {
            "type": "boolean"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "NewDBInstanceIdentifier": {},
          "StorageType": {},
          "TdeCredentialArn": {},
          "TdeCredentialPassword": {}
        }
      },
      "output": {
        "resultWrapper": "ModifyDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S17"
          }
        }
      }
    },
    "ModifyDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName",
          "Parameters"
        ],
        "members": {
          "DBParameterGroupName": {},
          "Parameters": {
            "shape": "S2w"
          }
        }
      },
      "output": {
        "shape": "S4k",
        "resultWrapper": "ModifyDBParameterGroupResult"
      }
    },
    "ModifyDBSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSubnetGroupName",
          "SubnetIds"
        ],
        "members": {
          "DBSubnetGroupName": {},
          "DBSubnetGroupDescription": {},
          "SubnetIds": {
            "shape": "S1u"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyDBSubnetGroupResult",
        "type": "structure",
        "members": {
          "DBSubnetGroup": {
            "shape": "S1b"
          }
        }
      }
    },
    "ModifyEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName"
        ],
        "members": {
          "SubscriptionName": {},
          "SnsTopicArn": {},
          "SourceType": {},
          "EventCategories": {
            "shape": "S6"
          },
          "Enabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "ModifyOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "OptionGroupName"
        ],
        "members": {
          "OptionGroupName": {},
          "OptionsToInclude": {
            "type": "list",
            "member": {
              "locationName": "OptionConfiguration",
              "type": "structure",
              "required": [
                "OptionName"
              ],
              "members": {
                "OptionName": {},
                "Port": {
                  "type": "integer"
                },
                "DBSecurityGroupMemberships": {
                  "shape": "S13"
                },
                "VpcSecurityGroupMemberships": {
                  "shape": "S14"
                },
                "OptionSettings": {
                  "type": "list",
                  "member": {
                    "shape": "Sx",
                    "locationName": "OptionSetting"
                  }
                }
              }
            }
          },
          "OptionsToRemove": {
            "type": "list",
            "member": {}
          },
          "ApplyImmediately": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyOptionGroupResult",
        "type": "structure",
        "members": {
          "OptionGroup": {
            "shape": "St"
          }
        }
      }
    },
    "PromoteReadReplica": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "PreferredBackupWindow": {}
        }
      },
      "output": {
        "resultWrapper": "PromoteReadReplicaResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S17"
          }
        }
      }
    },
    "PurchaseReservedDBInstancesOffering": {
      "input": {
        "type": "structure",
        "required": [
          "ReservedDBInstancesOfferingId"
        ],
        "members": {
          "ReservedDBInstancesOfferingId": {},
          "ReservedDBInstanceId": {},
          "DBInstanceCount": {
            "type": "integer"
          },
          "Tags": {
            "shape": "S9"
          }
        }
      },
      "output": {
        "resultWrapper": "PurchaseReservedDBInstancesOfferingResult",
        "type": "structure",
        "members": {
          "ReservedDBInstance": {
            "shape": "S45"
          }
        }
      }
    },
    "RebootDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "ForceFailover": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "RebootDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S17"
          }
        }
      }
    },
    "RemoveSourceIdentifierFromSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName",
          "SourceIdentifier"
        ],
        "members": {
          "SubscriptionName": {},
          "SourceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S4"
          }
        }
      }
    },
    "RemoveTagsFromResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName",
          "TagKeys"
        ],
        "members": {
          "ResourceName": {},
          "TagKeys": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "ResetDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName"
        ],
        "members": {
          "DBParameterGroupName": {},
          "ResetAllParameters": {
            "type": "boolean"
          },
          "Parameters": {
            "shape": "S2w"
          }
        }
      },
      "output": {
        "shape": "S4k",
        "resultWrapper": "ResetDBParameterGroupResult"
      }
    },
    "RestoreDBInstanceFromDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "DBSnapshotIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "DBSnapshotIdentifier": {},
          "DBInstanceClass": {},
          "Port": {
            "type": "integer"
          },
          "AvailabilityZone": {},
          "DBSubnetGroupName": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "DBName": {},
          "Engine": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "Tags": {
            "shape": "S9"
          },
          "StorageType": {},
          "TdeCredentialArn": {},
          "TdeCredentialPassword": {}
        }
      },
      "output": {
        "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S17"
          }
        }
      }
    },
    "RestoreDBInstanceToPointInTime": {
      "input": {
        "type": "structure",
        "required": [
          "SourceDBInstanceIdentifier",
          "TargetDBInstanceIdentifier"
        ],
        "members": {
          "SourceDBInstanceIdentifier": {},
          "TargetDBInstanceIdentifier": {},
          "RestoreTime": {
            "type": "timestamp"
          },
          "UseLatestRestorableTime": {
            "type": "boolean"
          },
          "DBInstanceClass": {},
          "Port": {
            "type": "integer"
          },
          "AvailabilityZone": {},
          "DBSubnetGroupName": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "DBName": {},
          "Engine": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "Tags": {
            "shape": "S9"
          },
          "StorageType": {},
          "TdeCredentialArn": {},
          "TdeCredentialPassword": {}
        }
      },
      "output": {
        "resultWrapper": "RestoreDBInstanceToPointInTimeResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S17"
          }
        }
      }
    },
    "RevokeDBSecurityGroupIngress": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName"
        ],
        "members": {
          "DBSecurityGroupName": {},
          "CIDRIP": {},
          "EC2SecurityGroupName": {},
          "EC2SecurityGroupId": {},
          "EC2SecurityGroupOwnerId": {}
        }
      },
      "output": {
        "resultWrapper": "RevokeDBSecurityGroupIngressResult",
        "type": "structure",
        "members": {
          "DBSecurityGroup": {
            "shape": "Sd"
          }
        }
      }
    }
  },
  "shapes": {
    "S4": {
      "type": "structure",
      "members": {
        "CustomerAwsId": {},
        "CustSubscriptionId": {},
        "SnsTopicArn": {},
        "Status": {},
        "SubscriptionCreationTime": {},
        "SourceType": {},
        "SourceIdsList": {
          "shape": "S5"
        },
        "EventCategoriesList": {
          "shape": "S6"
        },
        "Enabled": {
          "type": "boolean"
        }
      },
      "wrapper": true
    },
    "S5": {
      "type": "list",
      "member": {
        "locationName": "SourceId"
      }
    },
    "S6": {
      "type": "list",
      "member": {
        "locationName": "EventCategory"
      }
    },
    "S9": {
      "type": "list",
      "member": {
        "locationName": "Tag",
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "Sd": {
      "type": "structure",
      "members": {
        "OwnerId": {},
        "DBSecurityGroupName": {},
        "DBSecurityGroupDescription": {},
        "VpcId": {},
        "EC2SecurityGroups": {
          "type": "list",
          "member": {
            "locationName": "EC2SecurityGroup",
            "type": "structure",
            "members": {
              "Status": {},
              "EC2SecurityGroupName": {},
              "EC2SecurityGroupId": {},
              "EC2SecurityGroupOwnerId": {}
            }
          }
        },
        "IPRanges": {
          "type": "list",
          "member": {
            "locationName": "IPRange",
            "type": "structure",
            "members": {
              "Status": {},
              "CIDRIP": {}
            }
          }
        }
      },
      "wrapper": true
    },
    "Sk": {
      "type": "structure",
      "members": {
        "DBParameterGroupName": {},
        "DBParameterGroupFamily": {},
        "Description": {}
      },
      "wrapper": true
    },
    "Sn": {
      "type": "structure",
      "members": {
        "DBSnapshotIdentifier": {},
        "DBInstanceIdentifier": {},
        "SnapshotCreateTime": {
          "type": "timestamp"
        },
        "Engine": {},
        "AllocatedStorage": {
          "type": "integer"
        },
        "Status": {},
        "Port": {
          "type": "integer"
        },
        "AvailabilityZone": {},
        "VpcId": {},
        "InstanceCreateTime": {
          "type": "timestamp"
        },
        "MasterUsername": {},
        "EngineVersion": {},
        "LicenseModel": {},
        "SnapshotType": {},
        "Iops": {
          "type": "integer"
        },
        "OptionGroupName": {},
        "PercentProgress": {
          "type": "integer"
        },
        "SourceRegion": {},
        "StorageType": {},
        "TdeCredentialArn": {}
      },
      "wrapper": true
    },
    "St": {
      "type": "structure",
      "members": {
        "OptionGroupName": {},
        "OptionGroupDescription": {},
        "EngineName": {},
        "MajorEngineVersion": {},
        "Options": {
          "type": "list",
          "member": {
            "locationName": "Option",
            "type": "structure",
            "members": {
              "OptionName": {},
              "OptionDescription": {},
              "Persistent": {
                "type": "boolean"
              },
              "Permanent": {
                "type": "boolean"
              },
              "Port": {
                "type": "integer"
              },
              "OptionSettings": {
                "type": "list",
                "member": {
                  "shape": "Sx",
                  "locationName": "OptionSetting"
                }
              },
              "DBSecurityGroupMemberships": {
                "shape": "Sy"
              },
              "VpcSecurityGroupMemberships": {
                "shape": "S10"
              }
            }
          }
        },
        "AllowsVpcAndNonVpcInstanceMemberships": {
          "type": "boolean"
        },
        "VpcId": {}
      },
      "wrapper": true
    },
    "Sx": {
      "type": "structure",
      "members": {
        "Name": {},
        "Value": {},
        "DefaultValue": {},
        "Description": {},
        "ApplyType": {},
        "DataType": {},
        "AllowedValues": {},
        "IsModifiable": {
          "type": "boolean"
        },
        "IsCollection": {
          "type": "boolean"
        }
      }
    },
    "Sy": {
      "type": "list",
      "member": {
        "locationName": "DBSecurityGroup",
        "type": "structure",
        "members": {
          "DBSecurityGroupName": {},
          "Status": {}
        }
      }
    },
    "S10": {
      "type": "list",
      "member": {
        "locationName": "VpcSecurityGroupMembership",
        "type": "structure",
        "members": {
          "VpcSecurityGroupId": {},
          "Status": {}
        }
      }
    },
    "S13": {
      "type": "list",
      "member": {
        "locationName": "DBSecurityGroupName"
      }
    },
    "S14": {
      "type": "list",
      "member": {
        "locationName": "VpcSecurityGroupId"
      }
    },
    "S17": {
      "type": "structure",
      "members": {
        "DBInstanceIdentifier": {},
        "DBInstanceClass": {},
        "Engine": {},
        "DBInstanceStatus": {},
        "MasterUsername": {},
        "DBName": {},
        "Endpoint": {
          "type": "structure",
          "members": {
            "Address": {},
            "Port": {
              "type": "integer"
            }
          }
        },
        "AllocatedStorage": {
          "type": "integer"
        },
        "InstanceCreateTime": {
          "type": "timestamp"
        },
        "PreferredBackupWindow": {},
        "BackupRetentionPeriod": {
          "type": "integer"
        },
        "DBSecurityGroups": {
          "shape": "Sy"
        },
        "VpcSecurityGroups": {
          "shape": "S10"
        },
        "DBParameterGroups": {
          "type": "list",
          "member": {
            "locationName": "DBParameterGroup",
            "type": "structure",
            "members": {
              "DBParameterGroupName": {},
              "ParameterApplyStatus": {}
            }
          }
        },
        "AvailabilityZone": {},
        "DBSubnetGroup": {
          "shape": "S1b"
        },
        "PreferredMaintenanceWindow": {},
        "PendingModifiedValues": {
          "type": "structure",
          "members": {
            "DBInstanceClass": {},
            "AllocatedStorage": {
              "type": "integer"
            },
            "MasterUserPassword": {},
            "Port": {
              "type": "integer"
            },
            "BackupRetentionPeriod": {
              "type": "integer"
            },
            "MultiAZ": {
              "type": "boolean"
            },
            "EngineVersion": {},
            "Iops": {
              "type": "integer"
            },
            "DBInstanceIdentifier": {},
            "StorageType": {}
          }
        },
        "LatestRestorableTime": {
          "type": "timestamp"
        },
        "MultiAZ": {
          "type": "boolean"
        },
        "EngineVersion": {},
        "AutoMinorVersionUpgrade": {
          "type": "boolean"
        },
        "ReadReplicaSourceDBInstanceIdentifier": {},
        "ReadReplicaDBInstanceIdentifiers": {
          "type": "list",
          "member": {
            "locationName": "ReadReplicaDBInstanceIdentifier"
          }
        },
        "LicenseModel": {},
        "Iops": {
          "type": "integer"
        },
        "OptionGroupMemberships": {
          "type": "list",
          "member": {
            "locationName": "OptionGroupMembership",
            "type": "structure",
            "members": {
              "OptionGroupName": {},
              "Status": {}
            }
          }
        },
        "CharacterSetName": {},
        "SecondaryAvailabilityZone": {},
        "PubliclyAccessible": {
          "type": "boolean"
        },
        "StatusInfos": {
          "type": "list",
          "member": {
            "locationName": "DBInstanceStatusInfo",
            "type": "structure",
            "members": {
              "StatusType": {},
              "Normal": {
                "type": "boolean"
              },
              "Status": {},
              "Message": {}
            }
          }
        },
        "StorageType": {},
        "TdeCredentialArn": {}
      },
      "wrapper": true
    },
    "S1b": {
      "type": "structure",
      "members": {
        "DBSubnetGroupName": {},
        "DBSubnetGroupDescription": {},
        "VpcId": {},
        "SubnetGroupStatus": {},
        "Subnets": {
          "type": "list",
          "member": {
            "locationName": "Subnet",
            "type": "structure",
            "members": {
              "SubnetIdentifier": {},
              "SubnetAvailabilityZone": {
                "shape": "S1e"
              },
              "SubnetStatus": {}
            }
          }
        }
      },
      "wrapper": true
    },
    "S1e": {
      "type": "structure",
      "members": {
        "Name": {}
      },
      "wrapper": true
    },
    "S1u": {
      "type": "list",
      "member": {
        "locationName": "SubnetIdentifier"
      }
    },
    "S2b": {
      "type": "list",
      "member": {
        "locationName": "Filter",
        "type": "structure",
        "required": [
          "Name",
          "Values"
        ],
        "members": {
          "Name": {},
          "Values": {
            "type": "list",
            "member": {
              "locationName": "Value"
            }
          }
        }
      }
    },
    "S2h": {
      "type": "structure",
      "members": {
        "CharacterSetName": {},
        "CharacterSetDescription": {}
      }
    },
    "S2w": {
      "type": "list",
      "member": {
        "locationName": "Parameter",
        "type": "structure",
        "members": {
          "ParameterName": {},
          "ParameterValue": {},
          "Description": {},
          "Source": {},
          "ApplyType": {},
          "DataType": {},
          "AllowedValues": {},
          "IsModifiable": {
            "type": "boolean"
          },
          "MinimumEngineVersion": {},
          "ApplyMethod": {}
        }
      }
    },
    "S45": {
      "type": "structure",
      "members": {
        "ReservedDBInstanceId": {},
        "ReservedDBInstancesOfferingId": {},
        "DBInstanceClass": {},
        "StartTime": {
          "type": "timestamp"
        },
        "Duration": {
          "type": "integer"
        },
        "FixedPrice": {
          "type": "double"
        },
        "UsagePrice": {
          "type": "double"
        },
        "CurrencyCode": {},
        "DBInstanceCount": {
          "type": "integer"
        },
        "ProductDescription": {},
        "OfferingType": {},
        "MultiAZ": {
          "type": "boolean"
        },
        "State": {},
        "RecurringCharges": {
          "shape": "S47"
        }
      },
      "wrapper": true
    },
    "S47": {
      "type": "list",
      "member": {
        "locationName": "RecurringCharge",
        "type": "structure",
        "members": {
          "RecurringChargeAmount": {
            "type": "double"
          },
          "RecurringChargeFrequency": {}
        },
        "wrapper": true
      }
    },
    "S4k": {
      "type": "structure",
      "members": {
        "DBParameterGroupName": {}
      }
    }
  }
}
},{}],127:[function(require,module,exports){
arguments[4][19][0].apply(exports,arguments)
},{"dup":19}],128:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2014-10-31",
    "endpointPrefix": "rds",
    "protocol": "query",
    "serviceAbbreviation": "Amazon RDS",
    "serviceFullName": "Amazon Relational Database Service",
    "serviceId": "RDS",
    "signatureVersion": "v4",
    "uid": "rds-2014-10-31",
    "xmlNamespace": "http://rds.amazonaws.com/doc/2014-10-31/"
  },
  "operations": {
    "AddRoleToDBCluster": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterIdentifier",
          "RoleArn"
        ],
        "members": {
          "DBClusterIdentifier": {},
          "RoleArn": {}
        }
      }
    },
    "AddSourceIdentifierToSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName",
          "SourceIdentifier"
        ],
        "members": {
          "SubscriptionName": {},
          "SourceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "AddSourceIdentifierToSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S5"
          }
        }
      }
    },
    "AddTagsToResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName",
          "Tags"
        ],
        "members": {
          "ResourceName": {},
          "Tags": {
            "shape": "Sa"
          }
        }
      }
    },
    "ApplyPendingMaintenanceAction": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceIdentifier",
          "ApplyAction",
          "OptInType"
        ],
        "members": {
          "ResourceIdentifier": {},
          "ApplyAction": {},
          "OptInType": {}
        }
      },
      "output": {
        "resultWrapper": "ApplyPendingMaintenanceActionResult",
        "type": "structure",
        "members": {
          "ResourcePendingMaintenanceActions": {
            "shape": "Se"
          }
        }
      }
    },
    "AuthorizeDBSecurityGroupIngress": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName"
        ],
        "members": {
          "DBSecurityGroupName": {},
          "CIDRIP": {},
          "EC2SecurityGroupName": {},
          "EC2SecurityGroupId": {},
          "EC2SecurityGroupOwnerId": {}
        }
      },
      "output": {
        "resultWrapper": "AuthorizeDBSecurityGroupIngressResult",
        "type": "structure",
        "members": {
          "DBSecurityGroup": {
            "shape": "Sk"
          }
        }
      }
    },
    "CopyDBClusterParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "SourceDBClusterParameterGroupIdentifier",
          "TargetDBClusterParameterGroupIdentifier",
          "TargetDBClusterParameterGroupDescription"
        ],
        "members": {
          "SourceDBClusterParameterGroupIdentifier": {},
          "TargetDBClusterParameterGroupIdentifier": {},
          "TargetDBClusterParameterGroupDescription": {},
          "Tags": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "resultWrapper": "CopyDBClusterParameterGroupResult",
        "type": "structure",
        "members": {
          "DBClusterParameterGroup": {
            "shape": "Sr"
          }
        }
      }
    },
    "CopyDBClusterSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "SourceDBClusterSnapshotIdentifier",
          "TargetDBClusterSnapshotIdentifier"
        ],
        "members": {
          "SourceDBClusterSnapshotIdentifier": {},
          "TargetDBClusterSnapshotIdentifier": {},
          "KmsKeyId": {},
          "PreSignedUrl": {},
          "CopyTags": {
            "type": "boolean"
          },
          "Tags": {
            "shape": "Sa"
          },
          "SourceRegion": {}
        }
      },
      "output": {
        "resultWrapper": "CopyDBClusterSnapshotResult",
        "type": "structure",
        "members": {
          "DBClusterSnapshot": {
            "shape": "Sv"
          }
        }
      }
    },
    "CopyDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "SourceDBParameterGroupIdentifier",
          "TargetDBParameterGroupIdentifier",
          "TargetDBParameterGroupDescription"
        ],
        "members": {
          "SourceDBParameterGroupIdentifier": {},
          "TargetDBParameterGroupIdentifier": {},
          "TargetDBParameterGroupDescription": {},
          "Tags": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "resultWrapper": "CopyDBParameterGroupResult",
        "type": "structure",
        "members": {
          "DBParameterGroup": {
            "shape": "S10"
          }
        }
      }
    },
    "CopyDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "SourceDBSnapshotIdentifier",
          "TargetDBSnapshotIdentifier"
        ],
        "members": {
          "SourceDBSnapshotIdentifier": {},
          "TargetDBSnapshotIdentifier": {},
          "KmsKeyId": {},
          "Tags": {
            "shape": "Sa"
          },
          "CopyTags": {
            "type": "boolean"
          },
          "PreSignedUrl": {},
          "OptionGroupName": {},
          "SourceRegion": {}
        }
      },
      "output": {
        "resultWrapper": "CopyDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBSnapshot": {
            "shape": "S13"
          }
        }
      }
    },
    "CopyOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "SourceOptionGroupIdentifier",
          "TargetOptionGroupIdentifier",
          "TargetOptionGroupDescription"
        ],
        "members": {
          "SourceOptionGroupIdentifier": {},
          "TargetOptionGroupIdentifier": {},
          "TargetOptionGroupDescription": {},
          "Tags": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "resultWrapper": "CopyOptionGroupResult",
        "type": "structure",
        "members": {
          "OptionGroup": {
            "shape": "S17"
          }
        }
      }
    },
    "CreateDBCluster": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterIdentifier",
          "Engine"
        ],
        "members": {
          "AvailabilityZones": {
            "shape": "Sw"
          },
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "CharacterSetName": {},
          "DatabaseName": {},
          "DBClusterIdentifier": {},
          "DBClusterParameterGroupName": {},
          "VpcSecurityGroupIds": {
            "shape": "S1h"
          },
          "DBSubnetGroupName": {},
          "Engine": {},
          "EngineVersion": {},
          "Port": {
            "type": "integer"
          },
          "MasterUsername": {},
          "MasterUserPassword": {},
          "OptionGroupName": {},
          "PreferredBackupWindow": {},
          "PreferredMaintenanceWindow": {},
          "ReplicationSourceIdentifier": {},
          "Tags": {
            "shape": "Sa"
          },
          "StorageEncrypted": {
            "type": "boolean"
          },
          "KmsKeyId": {},
          "PreSignedUrl": {},
          "EnableIAMDatabaseAuthentication": {
            "type": "boolean"
          },
          "SourceRegion": {}
        }
      },
      "output": {
        "resultWrapper": "CreateDBClusterResult",
        "type": "structure",
        "members": {
          "DBCluster": {
            "shape": "S1j"
          }
        }
      }
    },
    "CreateDBClusterParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterParameterGroupName",
          "DBParameterGroupFamily",
          "Description"
        ],
        "members": {
          "DBClusterParameterGroupName": {},
          "DBParameterGroupFamily": {},
          "Description": {},
          "Tags": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBClusterParameterGroupResult",
        "type": "structure",
        "members": {
          "DBClusterParameterGroup": {
            "shape": "Sr"
          }
        }
      }
    },
    "CreateDBClusterSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterSnapshotIdentifier",
          "DBClusterIdentifier"
        ],
        "members": {
          "DBClusterSnapshotIdentifier": {},
          "DBClusterIdentifier": {},
          "Tags": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBClusterSnapshotResult",
        "type": "structure",
        "members": {
          "DBClusterSnapshot": {
            "shape": "Sv"
          }
        }
      }
    },
    "CreateDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "DBInstanceClass",
          "Engine"
        ],
        "members": {
          "DBName": {},
          "DBInstanceIdentifier": {},
          "AllocatedStorage": {
            "type": "integer"
          },
          "DBInstanceClass": {},
          "Engine": {},
          "MasterUsername": {},
          "MasterUserPassword": {},
          "DBSecurityGroups": {
            "shape": "S1w"
          },
          "VpcSecurityGroupIds": {
            "shape": "S1h"
          },
          "AvailabilityZone": {},
          "DBSubnetGroupName": {},
          "PreferredMaintenanceWindow": {},
          "DBParameterGroupName": {},
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "PreferredBackupWindow": {},
          "Port": {
            "type": "integer"
          },
          "MultiAZ": {
            "type": "boolean"
          },
          "EngineVersion": {},
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "CharacterSetName": {},
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "Tags": {
            "shape": "Sa"
          },
          "DBClusterIdentifier": {},
          "StorageType": {},
          "TdeCredentialArn": {},
          "TdeCredentialPassword": {},
          "StorageEncrypted": {
            "type": "boolean"
          },
          "KmsKeyId": {},
          "Domain": {},
          "CopyTagsToSnapshot": {
            "type": "boolean"
          },
          "MonitoringInterval": {
            "type": "integer"
          },
          "MonitoringRoleArn": {},
          "DomainIAMRoleName": {},
          "PromotionTier": {
            "type": "integer"
          },
          "Timezone": {},
          "EnableIAMDatabaseAuthentication": {
            "type": "boolean"
          },
          "EnablePerformanceInsights": {
            "type": "boolean"
          },
          "PerformanceInsightsKMSKeyId": {},
          "EnableCloudwatchLogsExports": {
            "shape": "S1x"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S1z"
          }
        }
      }
    },
    "CreateDBInstanceReadReplica": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "SourceDBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "SourceDBInstanceIdentifier": {},
          "DBInstanceClass": {},
          "AvailabilityZone": {},
          "Port": {
            "type": "integer"
          },
          "MultiAZ": {
            "type": "boolean"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "Tags": {
            "shape": "Sa"
          },
          "DBSubnetGroupName": {},
          "StorageType": {},
          "CopyTagsToSnapshot": {
            "type": "boolean"
          },
          "MonitoringInterval": {
            "type": "integer"
          },
          "MonitoringRoleArn": {},
          "KmsKeyId": {},
          "PreSignedUrl": {},
          "EnableIAMDatabaseAuthentication": {
            "type": "boolean"
          },
          "EnablePerformanceInsights": {
            "type": "boolean"
          },
          "PerformanceInsightsKMSKeyId": {},
          "EnableCloudwatchLogsExports": {
            "shape": "S1x"
          },
          "SourceRegion": {}
        }
      },
      "output": {
        "resultWrapper": "CreateDBInstanceReadReplicaResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S1z"
          }
        }
      }
    },
    "CreateDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName",
          "DBParameterGroupFamily",
          "Description"
        ],
        "members": {
          "DBParameterGroupName": {},
          "DBParameterGroupFamily": {},
          "Description": {},
          "Tags": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBParameterGroupResult",
        "type": "structure",
        "members": {
          "DBParameterGroup": {
            "shape": "S10"
          }
        }
      }
    },
    "CreateDBSecurityGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName",
          "DBSecurityGroupDescription"
        ],
        "members": {
          "DBSecurityGroupName": {},
          "DBSecurityGroupDescription": {},
          "Tags": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBSecurityGroupResult",
        "type": "structure",
        "members": {
          "DBSecurityGroup": {
            "shape": "Sk"
          }
        }
      }
    },
    "CreateDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBSnapshotIdentifier",
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBSnapshotIdentifier": {},
          "DBInstanceIdentifier": {},
          "Tags": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBSnapshot": {
            "shape": "S13"
          }
        }
      }
    },
    "CreateDBSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSubnetGroupName",
          "DBSubnetGroupDescription",
          "SubnetIds"
        ],
        "members": {
          "DBSubnetGroupName": {},
          "DBSubnetGroupDescription": {},
          "SubnetIds": {
            "shape": "S2q"
          },
          "Tags": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateDBSubnetGroupResult",
        "type": "structure",
        "members": {
          "DBSubnetGroup": {
            "shape": "S23"
          }
        }
      }
    },
    "CreateEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName",
          "SnsTopicArn"
        ],
        "members": {
          "SubscriptionName": {},
          "SnsTopicArn": {},
          "SourceType": {},
          "EventCategories": {
            "shape": "S7"
          },
          "SourceIds": {
            "shape": "S6"
          },
          "Enabled": {
            "type": "boolean"
          },
          "Tags": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S5"
          }
        }
      }
    },
    "CreateOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "OptionGroupName",
          "EngineName",
          "MajorEngineVersion",
          "OptionGroupDescription"
        ],
        "members": {
          "OptionGroupName": {},
          "EngineName": {},
          "MajorEngineVersion": {},
          "OptionGroupDescription": {},
          "Tags": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateOptionGroupResult",
        "type": "structure",
        "members": {
          "OptionGroup": {
            "shape": "S17"
          }
        }
      }
    },
    "DeleteDBCluster": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterIdentifier"
        ],
        "members": {
          "DBClusterIdentifier": {},
          "SkipFinalSnapshot": {
            "type": "boolean"
          },
          "FinalDBSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteDBClusterResult",
        "type": "structure",
        "members": {
          "DBCluster": {
            "shape": "S1j"
          }
        }
      }
    },
    "DeleteDBClusterParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterParameterGroupName"
        ],
        "members": {
          "DBClusterParameterGroupName": {}
        }
      }
    },
    "DeleteDBClusterSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterSnapshotIdentifier"
        ],
        "members": {
          "DBClusterSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteDBClusterSnapshotResult",
        "type": "structure",
        "members": {
          "DBClusterSnapshot": {
            "shape": "Sv"
          }
        }
      }
    },
    "DeleteDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "SkipFinalSnapshot": {
            "type": "boolean"
          },
          "FinalDBSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S1z"
          }
        }
      }
    },
    "DeleteDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName"
        ],
        "members": {
          "DBParameterGroupName": {}
        }
      }
    },
    "DeleteDBSecurityGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName"
        ],
        "members": {
          "DBSecurityGroupName": {}
        }
      }
    },
    "DeleteDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBSnapshotIdentifier"
        ],
        "members": {
          "DBSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBSnapshot": {
            "shape": "S13"
          }
        }
      }
    },
    "DeleteDBSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSubnetGroupName"
        ],
        "members": {
          "DBSubnetGroupName": {}
        }
      }
    },
    "DeleteEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName"
        ],
        "members": {
          "SubscriptionName": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S5"
          }
        }
      }
    },
    "DeleteOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "OptionGroupName"
        ],
        "members": {
          "OptionGroupName": {}
        }
      }
    },
    "DescribeAccountAttributes": {
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "resultWrapper": "DescribeAccountAttributesResult",
        "type": "structure",
        "members": {
          "AccountQuotas": {
            "type": "list",
            "member": {
              "locationName": "AccountQuota",
              "type": "structure",
              "members": {
                "AccountQuotaName": {},
                "Used": {
                  "type": "long"
                },
                "Max": {
                  "type": "long"
                }
              },
              "wrapper": true
            }
          }
        }
      }
    },
    "DescribeCertificates": {
      "input": {
        "type": "structure",
        "members": {
          "CertificateIdentifier": {},
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeCertificatesResult",
        "type": "structure",
        "members": {
          "Certificates": {
            "type": "list",
            "member": {
              "locationName": "Certificate",
              "type": "structure",
              "members": {
                "CertificateIdentifier": {},
                "CertificateType": {},
                "Thumbprint": {},
                "ValidFrom": {
                  "type": "timestamp"
                },
                "ValidTill": {
                  "type": "timestamp"
                },
                "CertificateArn": {}
              },
              "wrapper": true
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeDBClusterParameterGroups": {
      "input": {
        "type": "structure",
        "members": {
          "DBClusterParameterGroupName": {},
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBClusterParameterGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBClusterParameterGroups": {
            "type": "list",
            "member": {
              "shape": "Sr",
              "locationName": "DBClusterParameterGroup"
            }
          }
        }
      }
    },
    "DescribeDBClusterParameters": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterParameterGroupName"
        ],
        "members": {
          "DBClusterParameterGroupName": {},
          "Source": {},
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBClusterParametersResult",
        "type": "structure",
        "members": {
          "Parameters": {
            "shape": "S3s"
          },
          "Marker": {}
        }
      }
    },
    "DescribeDBClusterSnapshotAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterSnapshotIdentifier"
        ],
        "members": {
          "DBClusterSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBClusterSnapshotAttributesResult",
        "type": "structure",
        "members": {
          "DBClusterSnapshotAttributesResult": {
            "shape": "S3x"
          }
        }
      }
    },
    "DescribeDBClusterSnapshots": {
      "input": {
        "type": "structure",
        "members": {
          "DBClusterIdentifier": {},
          "DBClusterSnapshotIdentifier": {},
          "SnapshotType": {},
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "IncludeShared": {
            "type": "boolean"
          },
          "IncludePublic": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeDBClusterSnapshotsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBClusterSnapshots": {
            "type": "list",
            "member": {
              "shape": "Sv",
              "locationName": "DBClusterSnapshot"
            }
          }
        }
      }
    },
    "DescribeDBClusters": {
      "input": {
        "type": "structure",
        "members": {
          "DBClusterIdentifier": {},
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBClustersResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBClusters": {
            "type": "list",
            "member": {
              "shape": "S1j",
              "locationName": "DBCluster"
            }
          }
        }
      }
    },
    "DescribeDBEngineVersions": {
      "input": {
        "type": "structure",
        "members": {
          "Engine": {},
          "EngineVersion": {},
          "DBParameterGroupFamily": {},
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "DefaultOnly": {
            "type": "boolean"
          },
          "ListSupportedCharacterSets": {
            "type": "boolean"
          },
          "ListSupportedTimezones": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeDBEngineVersionsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBEngineVersions": {
            "type": "list",
            "member": {
              "locationName": "DBEngineVersion",
              "type": "structure",
              "members": {
                "Engine": {},
                "EngineVersion": {},
                "DBParameterGroupFamily": {},
                "DBEngineDescription": {},
                "DBEngineVersionDescription": {},
                "DefaultCharacterSet": {
                  "shape": "S4b"
                },
                "SupportedCharacterSets": {
                  "type": "list",
                  "member": {
                    "shape": "S4b",
                    "locationName": "CharacterSet"
                  }
                },
                "ValidUpgradeTarget": {
                  "type": "list",
                  "member": {
                    "locationName": "UpgradeTarget",
                    "type": "structure",
                    "members": {
                      "Engine": {},
                      "EngineVersion": {},
                      "Description": {},
                      "AutoUpgrade": {
                        "type": "boolean"
                      },
                      "IsMajorVersionUpgrade": {
                        "type": "boolean"
                      }
                    }
                  }
                },
                "SupportedTimezones": {
                  "type": "list",
                  "member": {
                    "locationName": "Timezone",
                    "type": "structure",
                    "members": {
                      "TimezoneName": {}
                    }
                  }
                },
                "ExportableLogTypes": {
                  "shape": "S1x"
                },
                "SupportsLogExportsToCloudwatchLogs": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      }
    },
    "DescribeDBInstances": {
      "input": {
        "type": "structure",
        "members": {
          "DBInstanceIdentifier": {},
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBInstancesResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBInstances": {
            "type": "list",
            "member": {
              "shape": "S1z",
              "locationName": "DBInstance"
            }
          }
        }
      }
    },
    "DescribeDBLogFiles": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "FilenameContains": {},
          "FileLastWritten": {
            "type": "long"
          },
          "FileSize": {
            "type": "long"
          },
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBLogFilesResult",
        "type": "structure",
        "members": {
          "DescribeDBLogFiles": {
            "type": "list",
            "member": {
              "locationName": "DescribeDBLogFilesDetails",
              "type": "structure",
              "members": {
                "LogFileName": {},
                "LastWritten": {
                  "type": "long"
                },
                "Size": {
                  "type": "long"
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeDBParameterGroups": {
      "input": {
        "type": "structure",
        "members": {
          "DBParameterGroupName": {},
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBParameterGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBParameterGroups": {
            "type": "list",
            "member": {
              "shape": "S10",
              "locationName": "DBParameterGroup"
            }
          }
        }
      }
    },
    "DescribeDBParameters": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName"
        ],
        "members": {
          "DBParameterGroupName": {},
          "Source": {},
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBParametersResult",
        "type": "structure",
        "members": {
          "Parameters": {
            "shape": "S3s"
          },
          "Marker": {}
        }
      }
    },
    "DescribeDBSecurityGroups": {
      "input": {
        "type": "structure",
        "members": {
          "DBSecurityGroupName": {},
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBSecurityGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBSecurityGroups": {
            "type": "list",
            "member": {
              "shape": "Sk",
              "locationName": "DBSecurityGroup"
            }
          }
        }
      }
    },
    "DescribeDBSnapshotAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "DBSnapshotIdentifier"
        ],
        "members": {
          "DBSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBSnapshotAttributesResult",
        "type": "structure",
        "members": {
          "DBSnapshotAttributesResult": {
            "shape": "S4y"
          }
        }
      }
    },
    "DescribeDBSnapshots": {
      "input": {
        "type": "structure",
        "members": {
          "DBInstanceIdentifier": {},
          "DBSnapshotIdentifier": {},
          "SnapshotType": {},
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "IncludeShared": {
            "type": "boolean"
          },
          "IncludePublic": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeDBSnapshotsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBSnapshots": {
            "type": "list",
            "member": {
              "shape": "S13",
              "locationName": "DBSnapshot"
            }
          }
        }
      }
    },
    "DescribeDBSubnetGroups": {
      "input": {
        "type": "structure",
        "members": {
          "DBSubnetGroupName": {},
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDBSubnetGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "DBSubnetGroups": {
            "type": "list",
            "member": {
              "shape": "S23",
              "locationName": "DBSubnetGroup"
            }
          }
        }
      }
    },
    "DescribeEngineDefaultClusterParameters": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupFamily"
        ],
        "members": {
          "DBParameterGroupFamily": {},
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEngineDefaultClusterParametersResult",
        "type": "structure",
        "members": {
          "EngineDefaults": {
            "shape": "S59"
          }
        }
      }
    },
    "DescribeEngineDefaultParameters": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupFamily"
        ],
        "members": {
          "DBParameterGroupFamily": {},
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEngineDefaultParametersResult",
        "type": "structure",
        "members": {
          "EngineDefaults": {
            "shape": "S59"
          }
        }
      }
    },
    "DescribeEventCategories": {
      "input": {
        "type": "structure",
        "members": {
          "SourceType": {},
          "Filters": {
            "shape": "S3h"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeEventCategoriesResult",
        "type": "structure",
        "members": {
          "EventCategoriesMapList": {
            "type": "list",
            "member": {
              "locationName": "EventCategoriesMap",
              "type": "structure",
              "members": {
                "SourceType": {},
                "EventCategories": {
                  "shape": "S7"
                }
              },
              "wrapper": true
            }
          }
        }
      }
    },
    "DescribeEventSubscriptions": {
      "input": {
        "type": "structure",
        "members": {
          "SubscriptionName": {},
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEventSubscriptionsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "EventSubscriptionsList": {
            "type": "list",
            "member": {
              "shape": "S5",
              "locationName": "EventSubscription"
            }
          }
        }
      }
    },
    "DescribeEvents": {
      "input": {
        "type": "structure",
        "members": {
          "SourceIdentifier": {},
          "SourceType": {},
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "Duration": {
            "type": "integer"
          },
          "EventCategories": {
            "shape": "S7"
          },
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEventsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "Events": {
            "type": "list",
            "member": {
              "locationName": "Event",
              "type": "structure",
              "members": {
                "SourceIdentifier": {},
                "SourceType": {},
                "Message": {},
                "EventCategories": {
                  "shape": "S7"
                },
                "Date": {
                  "type": "timestamp"
                },
                "SourceArn": {}
              }
            }
          }
        }
      }
    },
    "DescribeOptionGroupOptions": {
      "input": {
        "type": "structure",
        "required": [
          "EngineName"
        ],
        "members": {
          "EngineName": {},
          "MajorEngineVersion": {},
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeOptionGroupOptionsResult",
        "type": "structure",
        "members": {
          "OptionGroupOptions": {
            "type": "list",
            "member": {
              "locationName": "OptionGroupOption",
              "type": "structure",
              "members": {
                "Name": {},
                "Description": {},
                "EngineName": {},
                "MajorEngineVersion": {},
                "MinimumRequiredMinorEngineVersion": {},
                "PortRequired": {
                  "type": "boolean"
                },
                "DefaultPort": {
                  "type": "integer"
                },
                "OptionsDependedOn": {
                  "type": "list",
                  "member": {
                    "locationName": "OptionName"
                  }
                },
                "OptionsConflictsWith": {
                  "type": "list",
                  "member": {
                    "locationName": "OptionConflictName"
                  }
                },
                "Persistent": {
                  "type": "boolean"
                },
                "Permanent": {
                  "type": "boolean"
                },
                "RequiresAutoMinorEngineVersionUpgrade": {
                  "type": "boolean"
                },
                "VpcOnly": {
                  "type": "boolean"
                },
                "SupportsOptionVersionDowngrade": {
                  "type": "boolean"
                },
                "OptionGroupOptionSettings": {
                  "type": "list",
                  "member": {
                    "locationName": "OptionGroupOptionSetting",
                    "type": "structure",
                    "members": {
                      "SettingName": {},
                      "SettingDescription": {},
                      "DefaultValue": {},
                      "ApplyType": {},
                      "AllowedValues": {},
                      "IsModifiable": {
                        "type": "boolean"
                      }
                    }
                  }
                },
                "OptionGroupOptionVersions": {
                  "type": "list",
                  "member": {
                    "locationName": "OptionVersion",
                    "type": "structure",
                    "members": {
                      "Version": {},
                      "IsDefault": {
                        "type": "boolean"
                      }
                    }
                  }
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeOptionGroups": {
      "input": {
        "type": "structure",
        "members": {
          "OptionGroupName": {},
          "Filters": {
            "shape": "S3h"
          },
          "Marker": {},
          "MaxRecords": {
            "type": "integer"
          },
          "EngineName": {},
          "MajorEngineVersion": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeOptionGroupsResult",
        "type": "structure",
        "members": {
          "OptionGroupsList": {
            "type": "list",
            "member": {
              "shape": "S17",
              "locationName": "OptionGroup"
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeOrderableDBInstanceOptions": {
      "input": {
        "type": "structure",
        "required": [
          "Engine"
        ],
        "members": {
          "Engine": {},
          "EngineVersion": {},
          "DBInstanceClass": {},
          "LicenseModel": {},
          "Vpc": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeOrderableDBInstanceOptionsResult",
        "type": "structure",
        "members": {
          "OrderableDBInstanceOptions": {
            "type": "list",
            "member": {
              "locationName": "OrderableDBInstanceOption",
              "type": "structure",
              "members": {
                "Engine": {},
                "EngineVersion": {},
                "DBInstanceClass": {},
                "LicenseModel": {},
                "AvailabilityZones": {
                  "type": "list",
                  "member": {
                    "shape": "S26",
                    "locationName": "AvailabilityZone"
                  }
                },
                "MultiAZCapable": {
                  "type": "boolean"
                },
                "ReadReplicaCapable": {
                  "type": "boolean"
                },
                "Vpc": {
                  "type": "boolean"
                },
                "SupportsStorageEncryption": {
                  "type": "boolean"
                },
                "StorageType": {},
                "SupportsIops": {
                  "type": "boolean"
                },
                "SupportsEnhancedMonitoring": {
                  "type": "boolean"
                },
                "SupportsIAMDatabaseAuthentication": {
                  "type": "boolean"
                },
                "SupportsPerformanceInsights": {
                  "type": "boolean"
                },
                "MinStorageSize": {
                  "type": "integer"
                },
                "MaxStorageSize": {
                  "type": "integer"
                },
                "MinIopsPerDbInstance": {
                  "type": "integer"
                },
                "MaxIopsPerDbInstance": {
                  "type": "integer"
                },
                "MinIopsPerGib": {
                  "type": "double"
                },
                "MaxIopsPerGib": {
                  "type": "double"
                }
              },
              "wrapper": true
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribePendingMaintenanceActions": {
      "input": {
        "type": "structure",
        "members": {
          "ResourceIdentifier": {},
          "Filters": {
            "shape": "S3h"
          },
          "Marker": {},
          "MaxRecords": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribePendingMaintenanceActionsResult",
        "type": "structure",
        "members": {
          "PendingMaintenanceActions": {
            "type": "list",
            "member": {
              "shape": "Se",
              "locationName": "ResourcePendingMaintenanceActions"
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeReservedDBInstances": {
      "input": {
        "type": "structure",
        "members": {
          "ReservedDBInstanceId": {},
          "ReservedDBInstancesOfferingId": {},
          "DBInstanceClass": {},
          "Duration": {},
          "ProductDescription": {},
          "OfferingType": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReservedDBInstancesResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ReservedDBInstances": {
            "type": "list",
            "member": {
              "shape": "S6d",
              "locationName": "ReservedDBInstance"
            }
          }
        }
      }
    },
    "DescribeReservedDBInstancesOfferings": {
      "input": {
        "type": "structure",
        "members": {
          "ReservedDBInstancesOfferingId": {},
          "DBInstanceClass": {},
          "Duration": {},
          "ProductDescription": {},
          "OfferingType": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "Filters": {
            "shape": "S3h"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReservedDBInstancesOfferingsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ReservedDBInstancesOfferings": {
            "type": "list",
            "member": {
              "locationName": "ReservedDBInstancesOffering",
              "type": "structure",
              "members": {
                "ReservedDBInstancesOfferingId": {},
                "DBInstanceClass": {},
                "Duration": {
                  "type": "integer"
                },
                "FixedPrice": {
                  "type": "double"
                },
                "UsagePrice": {
                  "type": "double"
                },
                "CurrencyCode": {},
                "ProductDescription": {},
                "OfferingType": {},
                "MultiAZ": {
                  "type": "boolean"
                },
                "RecurringCharges": {
                  "shape": "S6f"
                }
              },
              "wrapper": true
            }
          }
        }
      }
    },
    "DescribeSourceRegions": {
      "input": {
        "type": "structure",
        "members": {
          "RegionName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "Filters": {
            "shape": "S3h"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeSourceRegionsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "SourceRegions": {
            "type": "list",
            "member": {
              "locationName": "SourceRegion",
              "type": "structure",
              "members": {
                "RegionName": {},
                "Endpoint": {},
                "Status": {}
              }
            }
          }
        }
      }
    },
    "DescribeValidDBInstanceModifications": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeValidDBInstanceModificationsResult",
        "type": "structure",
        "members": {
          "ValidDBInstanceModificationsMessage": {
            "type": "structure",
            "members": {
              "Storage": {
                "type": "list",
                "member": {
                  "locationName": "ValidStorageOptions",
                  "type": "structure",
                  "members": {
                    "StorageType": {},
                    "StorageSize": {
                      "shape": "S6u"
                    },
                    "ProvisionedIops": {
                      "shape": "S6u"
                    },
                    "IopsToStorageRatio": {
                      "type": "list",
                      "member": {
                        "locationName": "DoubleRange",
                        "type": "structure",
                        "members": {
                          "From": {
                            "type": "double"
                          },
                          "To": {
                            "type": "double"
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "wrapper": true
          }
        }
      }
    },
    "DownloadDBLogFilePortion": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "LogFileName"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "LogFileName": {},
          "Marker": {},
          "NumberOfLines": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "DownloadDBLogFilePortionResult",
        "type": "structure",
        "members": {
          "LogFileData": {},
          "Marker": {},
          "AdditionalDataPending": {
            "type": "boolean"
          }
        }
      }
    },
    "FailoverDBCluster": {
      "input": {
        "type": "structure",
        "members": {
          "DBClusterIdentifier": {},
          "TargetDBInstanceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "FailoverDBClusterResult",
        "type": "structure",
        "members": {
          "DBCluster": {
            "shape": "S1j"
          }
        }
      }
    },
    "ListTagsForResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName"
        ],
        "members": {
          "ResourceName": {},
          "Filters": {
            "shape": "S3h"
          }
        }
      },
      "output": {
        "resultWrapper": "ListTagsForResourceResult",
        "type": "structure",
        "members": {
          "TagList": {
            "shape": "Sa"
          }
        }
      }
    },
    "ModifyDBCluster": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterIdentifier"
        ],
        "members": {
          "DBClusterIdentifier": {},
          "NewDBClusterIdentifier": {},
          "ApplyImmediately": {
            "type": "boolean"
          },
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "DBClusterParameterGroupName": {},
          "VpcSecurityGroupIds": {
            "shape": "S1h"
          },
          "Port": {
            "type": "integer"
          },
          "MasterUserPassword": {},
          "OptionGroupName": {},
          "PreferredBackupWindow": {},
          "PreferredMaintenanceWindow": {},
          "EnableIAMDatabaseAuthentication": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyDBClusterResult",
        "type": "structure",
        "members": {
          "DBCluster": {
            "shape": "S1j"
          }
        }
      }
    },
    "ModifyDBClusterParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterParameterGroupName",
          "Parameters"
        ],
        "members": {
          "DBClusterParameterGroupName": {},
          "Parameters": {
            "shape": "S3s"
          }
        }
      },
      "output": {
        "shape": "S77",
        "resultWrapper": "ModifyDBClusterParameterGroupResult"
      }
    },
    "ModifyDBClusterSnapshotAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterSnapshotIdentifier",
          "AttributeName"
        ],
        "members": {
          "DBClusterSnapshotIdentifier": {},
          "AttributeName": {},
          "ValuesToAdd": {
            "shape": "S40"
          },
          "ValuesToRemove": {
            "shape": "S40"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyDBClusterSnapshotAttributeResult",
        "type": "structure",
        "members": {
          "DBClusterSnapshotAttributesResult": {
            "shape": "S3x"
          }
        }
      }
    },
    "ModifyDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "AllocatedStorage": {
            "type": "integer"
          },
          "DBInstanceClass": {},
          "DBSubnetGroupName": {},
          "DBSecurityGroups": {
            "shape": "S1w"
          },
          "VpcSecurityGroupIds": {
            "shape": "S1h"
          },
          "ApplyImmediately": {
            "type": "boolean"
          },
          "MasterUserPassword": {},
          "DBParameterGroupName": {},
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "PreferredBackupWindow": {},
          "PreferredMaintenanceWindow": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "EngineVersion": {},
          "AllowMajorVersionUpgrade": {
            "type": "boolean"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "NewDBInstanceIdentifier": {},
          "StorageType": {},
          "TdeCredentialArn": {},
          "TdeCredentialPassword": {},
          "CACertificateIdentifier": {},
          "Domain": {},
          "CopyTagsToSnapshot": {
            "type": "boolean"
          },
          "MonitoringInterval": {
            "type": "integer"
          },
          "DBPortNumber": {
            "type": "integer"
          },
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "MonitoringRoleArn": {},
          "DomainIAMRoleName": {},
          "PromotionTier": {
            "type": "integer"
          },
          "EnableIAMDatabaseAuthentication": {
            "type": "boolean"
          },
          "EnablePerformanceInsights": {
            "type": "boolean"
          },
          "PerformanceInsightsKMSKeyId": {},
          "CloudwatchLogsExportConfiguration": {
            "type": "structure",
            "members": {
              "EnableLogTypes": {
                "shape": "S1x"
              },
              "DisableLogTypes": {
                "shape": "S1x"
              }
            }
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S1z"
          }
        }
      }
    },
    "ModifyDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName",
          "Parameters"
        ],
        "members": {
          "DBParameterGroupName": {},
          "Parameters": {
            "shape": "S3s"
          }
        }
      },
      "output": {
        "shape": "S7e",
        "resultWrapper": "ModifyDBParameterGroupResult"
      }
    },
    "ModifyDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBSnapshotIdentifier"
        ],
        "members": {
          "DBSnapshotIdentifier": {},
          "EngineVersion": {},
          "OptionGroupName": {}
        }
      },
      "output": {
        "resultWrapper": "ModifyDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBSnapshot": {
            "shape": "S13"
          }
        }
      }
    },
    "ModifyDBSnapshotAttribute": {
      "input": {
        "type": "structure",
        "required": [
          "DBSnapshotIdentifier",
          "AttributeName"
        ],
        "members": {
          "DBSnapshotIdentifier": {},
          "AttributeName": {},
          "ValuesToAdd": {
            "shape": "S40"
          },
          "ValuesToRemove": {
            "shape": "S40"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyDBSnapshotAttributeResult",
        "type": "structure",
        "members": {
          "DBSnapshotAttributesResult": {
            "shape": "S4y"
          }
        }
      }
    },
    "ModifyDBSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBSubnetGroupName",
          "SubnetIds"
        ],
        "members": {
          "DBSubnetGroupName": {},
          "DBSubnetGroupDescription": {},
          "SubnetIds": {
            "shape": "S2q"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyDBSubnetGroupResult",
        "type": "structure",
        "members": {
          "DBSubnetGroup": {
            "shape": "S23"
          }
        }
      }
    },
    "ModifyEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName"
        ],
        "members": {
          "SubscriptionName": {},
          "SnsTopicArn": {},
          "SourceType": {},
          "EventCategories": {
            "shape": "S7"
          },
          "Enabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S5"
          }
        }
      }
    },
    "ModifyOptionGroup": {
      "input": {
        "type": "structure",
        "required": [
          "OptionGroupName"
        ],
        "members": {
          "OptionGroupName": {},
          "OptionsToInclude": {
            "type": "list",
            "member": {
              "locationName": "OptionConfiguration",
              "type": "structure",
              "required": [
                "OptionName"
              ],
              "members": {
                "OptionName": {},
                "Port": {
                  "type": "integer"
                },
                "OptionVersion": {},
                "DBSecurityGroupMemberships": {
                  "shape": "S1w"
                },
                "VpcSecurityGroupMemberships": {
                  "shape": "S1h"
                },
                "OptionSettings": {
                  "type": "list",
                  "member": {
                    "shape": "S1b",
                    "locationName": "OptionSetting"
                  }
                }
              }
            }
          },
          "OptionsToRemove": {
            "type": "list",
            "member": {}
          },
          "ApplyImmediately": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyOptionGroupResult",
        "type": "structure",
        "members": {
          "OptionGroup": {
            "shape": "S17"
          }
        }
      }
    },
    "PromoteReadReplica": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "PreferredBackupWindow": {}
        }
      },
      "output": {
        "resultWrapper": "PromoteReadReplicaResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S1z"
          }
        }
      }
    },
    "PromoteReadReplicaDBCluster": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterIdentifier"
        ],
        "members": {
          "DBClusterIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "PromoteReadReplicaDBClusterResult",
        "type": "structure",
        "members": {
          "DBCluster": {
            "shape": "S1j"
          }
        }
      }
    },
    "PurchaseReservedDBInstancesOffering": {
      "input": {
        "type": "structure",
        "required": [
          "ReservedDBInstancesOfferingId"
        ],
        "members": {
          "ReservedDBInstancesOfferingId": {},
          "ReservedDBInstanceId": {},
          "DBInstanceCount": {
            "type": "integer"
          },
          "Tags": {
            "shape": "Sa"
          }
        }
      },
      "output": {
        "resultWrapper": "PurchaseReservedDBInstancesOfferingResult",
        "type": "structure",
        "members": {
          "ReservedDBInstance": {
            "shape": "S6d"
          }
        }
      }
    },
    "RebootDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "ForceFailover": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "RebootDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S1z"
          }
        }
      }
    },
    "RemoveRoleFromDBCluster": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterIdentifier",
          "RoleArn"
        ],
        "members": {
          "DBClusterIdentifier": {},
          "RoleArn": {}
        }
      }
    },
    "RemoveSourceIdentifierFromSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName",
          "SourceIdentifier"
        ],
        "members": {
          "SubscriptionName": {},
          "SourceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S5"
          }
        }
      }
    },
    "RemoveTagsFromResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName",
          "TagKeys"
        ],
        "members": {
          "ResourceName": {},
          "TagKeys": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "ResetDBClusterParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterParameterGroupName"
        ],
        "members": {
          "DBClusterParameterGroupName": {},
          "ResetAllParameters": {
            "type": "boolean"
          },
          "Parameters": {
            "shape": "S3s"
          }
        }
      },
      "output": {
        "shape": "S77",
        "resultWrapper": "ResetDBClusterParameterGroupResult"
      }
    },
    "ResetDBParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "DBParameterGroupName"
        ],
        "members": {
          "DBParameterGroupName": {},
          "ResetAllParameters": {
            "type": "boolean"
          },
          "Parameters": {
            "shape": "S3s"
          }
        }
      },
      "output": {
        "shape": "S7e",
        "resultWrapper": "ResetDBParameterGroupResult"
      }
    },
    "RestoreDBClusterFromS3": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterIdentifier",
          "Engine",
          "MasterUsername",
          "MasterUserPassword",
          "SourceEngine",
          "SourceEngineVersion",
          "S3BucketName",
          "S3IngestionRoleArn"
        ],
        "members": {
          "AvailabilityZones": {
            "shape": "Sw"
          },
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "CharacterSetName": {},
          "DatabaseName": {},
          "DBClusterIdentifier": {},
          "DBClusterParameterGroupName": {},
          "VpcSecurityGroupIds": {
            "shape": "S1h"
          },
          "DBSubnetGroupName": {},
          "Engine": {},
          "EngineVersion": {},
          "Port": {
            "type": "integer"
          },
          "MasterUsername": {},
          "MasterUserPassword": {},
          "OptionGroupName": {},
          "PreferredBackupWindow": {},
          "PreferredMaintenanceWindow": {},
          "Tags": {
            "shape": "Sa"
          },
          "StorageEncrypted": {
            "type": "boolean"
          },
          "KmsKeyId": {},
          "EnableIAMDatabaseAuthentication": {
            "type": "boolean"
          },
          "SourceEngine": {},
          "SourceEngineVersion": {},
          "S3BucketName": {},
          "S3Prefix": {},
          "S3IngestionRoleArn": {}
        }
      },
      "output": {
        "resultWrapper": "RestoreDBClusterFromS3Result",
        "type": "structure",
        "members": {
          "DBCluster": {
            "shape": "S1j"
          }
        }
      }
    },
    "RestoreDBClusterFromSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterIdentifier",
          "SnapshotIdentifier",
          "Engine"
        ],
        "members": {
          "AvailabilityZones": {
            "shape": "Sw"
          },
          "DBClusterIdentifier": {},
          "SnapshotIdentifier": {},
          "Engine": {},
          "EngineVersion": {},
          "Port": {
            "type": "integer"
          },
          "DBSubnetGroupName": {},
          "DatabaseName": {},
          "OptionGroupName": {},
          "VpcSecurityGroupIds": {
            "shape": "S1h"
          },
          "Tags": {
            "shape": "Sa"
          },
          "KmsKeyId": {},
          "EnableIAMDatabaseAuthentication": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "RestoreDBClusterFromSnapshotResult",
        "type": "structure",
        "members": {
          "DBCluster": {
            "shape": "S1j"
          }
        }
      }
    },
    "RestoreDBClusterToPointInTime": {
      "input": {
        "type": "structure",
        "required": [
          "DBClusterIdentifier",
          "SourceDBClusterIdentifier"
        ],
        "members": {
          "DBClusterIdentifier": {},
          "RestoreType": {},
          "SourceDBClusterIdentifier": {},
          "RestoreToTime": {
            "type": "timestamp"
          },
          "UseLatestRestorableTime": {
            "type": "boolean"
          },
          "Port": {
            "type": "integer"
          },
          "DBSubnetGroupName": {},
          "OptionGroupName": {},
          "VpcSecurityGroupIds": {
            "shape": "S1h"
          },
          "Tags": {
            "shape": "Sa"
          },
          "KmsKeyId": {},
          "EnableIAMDatabaseAuthentication": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "RestoreDBClusterToPointInTimeResult",
        "type": "structure",
        "members": {
          "DBCluster": {
            "shape": "S1j"
          }
        }
      }
    },
    "RestoreDBInstanceFromDBSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "DBSnapshotIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "DBSnapshotIdentifier": {},
          "DBInstanceClass": {},
          "Port": {
            "type": "integer"
          },
          "AvailabilityZone": {},
          "DBSubnetGroupName": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "DBName": {},
          "Engine": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "Tags": {
            "shape": "Sa"
          },
          "StorageType": {},
          "TdeCredentialArn": {},
          "TdeCredentialPassword": {},
          "Domain": {},
          "CopyTagsToSnapshot": {
            "type": "boolean"
          },
          "DomainIAMRoleName": {},
          "EnableIAMDatabaseAuthentication": {
            "type": "boolean"
          },
          "EnableCloudwatchLogsExports": {
            "shape": "S1x"
          }
        }
      },
      "output": {
        "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S1z"
          }
        }
      }
    },
    "RestoreDBInstanceFromS3": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier",
          "DBInstanceClass",
          "Engine",
          "SourceEngine",
          "SourceEngineVersion",
          "S3BucketName",
          "S3IngestionRoleArn"
        ],
        "members": {
          "DBName": {},
          "DBInstanceIdentifier": {},
          "AllocatedStorage": {
            "type": "integer"
          },
          "DBInstanceClass": {},
          "Engine": {},
          "MasterUsername": {},
          "MasterUserPassword": {},
          "DBSecurityGroups": {
            "shape": "S1w"
          },
          "VpcSecurityGroupIds": {
            "shape": "S1h"
          },
          "AvailabilityZone": {},
          "DBSubnetGroupName": {},
          "PreferredMaintenanceWindow": {},
          "DBParameterGroupName": {},
          "BackupRetentionPeriod": {
            "type": "integer"
          },
          "PreferredBackupWindow": {},
          "Port": {
            "type": "integer"
          },
          "MultiAZ": {
            "type": "boolean"
          },
          "EngineVersion": {},
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "Tags": {
            "shape": "Sa"
          },
          "StorageType": {},
          "StorageEncrypted": {
            "type": "boolean"
          },
          "KmsKeyId": {},
          "CopyTagsToSnapshot": {
            "type": "boolean"
          },
          "MonitoringInterval": {
            "type": "integer"
          },
          "MonitoringRoleArn": {},
          "EnableIAMDatabaseAuthentication": {
            "type": "boolean"
          },
          "SourceEngine": {},
          "SourceEngineVersion": {},
          "S3BucketName": {},
          "S3Prefix": {},
          "S3IngestionRoleArn": {},
          "EnablePerformanceInsights": {
            "type": "boolean"
          },
          "PerformanceInsightsKMSKeyId": {},
          "EnableCloudwatchLogsExports": {
            "shape": "S1x"
          }
        }
      },
      "output": {
        "resultWrapper": "RestoreDBInstanceFromS3Result",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S1z"
          }
        }
      }
    },
    "RestoreDBInstanceToPointInTime": {
      "input": {
        "type": "structure",
        "required": [
          "SourceDBInstanceIdentifier",
          "TargetDBInstanceIdentifier"
        ],
        "members": {
          "SourceDBInstanceIdentifier": {},
          "TargetDBInstanceIdentifier": {},
          "RestoreTime": {
            "type": "timestamp"
          },
          "UseLatestRestorableTime": {
            "type": "boolean"
          },
          "DBInstanceClass": {},
          "Port": {
            "type": "integer"
          },
          "AvailabilityZone": {},
          "DBSubnetGroupName": {},
          "MultiAZ": {
            "type": "boolean"
          },
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "AutoMinorVersionUpgrade": {
            "type": "boolean"
          },
          "LicenseModel": {},
          "DBName": {},
          "Engine": {},
          "Iops": {
            "type": "integer"
          },
          "OptionGroupName": {},
          "CopyTagsToSnapshot": {
            "type": "boolean"
          },
          "Tags": {
            "shape": "Sa"
          },
          "StorageType": {},
          "TdeCredentialArn": {},
          "TdeCredentialPassword": {},
          "Domain": {},
          "DomainIAMRoleName": {},
          "EnableIAMDatabaseAuthentication": {
            "type": "boolean"
          },
          "EnableCloudwatchLogsExports": {
            "shape": "S1x"
          }
        }
      },
      "output": {
        "resultWrapper": "RestoreDBInstanceToPointInTimeResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S1z"
          }
        }
      }
    },
    "RevokeDBSecurityGroupIngress": {
      "input": {
        "type": "structure",
        "required": [
          "DBSecurityGroupName"
        ],
        "members": {
          "DBSecurityGroupName": {},
          "CIDRIP": {},
          "EC2SecurityGroupName": {},
          "EC2SecurityGroupId": {},
          "EC2SecurityGroupOwnerId": {}
        }
      },
      "output": {
        "resultWrapper": "RevokeDBSecurityGroupIngressResult",
        "type": "structure",
        "members": {
          "DBSecurityGroup": {
            "shape": "Sk"
          }
        }
      }
    },
    "StartDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "StartDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S1z"
          }
        }
      }
    },
    "StopDBInstance": {
      "input": {
        "type": "structure",
        "required": [
          "DBInstanceIdentifier"
        ],
        "members": {
          "DBInstanceIdentifier": {},
          "DBSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "StopDBInstanceResult",
        "type": "structure",
        "members": {
          "DBInstance": {
            "shape": "S1z"
          }
        }
      }
    }
  },
  "shapes": {
    "S5": {
      "type": "structure",
      "members": {
        "CustomerAwsId": {},
        "CustSubscriptionId": {},
        "SnsTopicArn": {},
        "Status": {},
        "SubscriptionCreationTime": {},
        "SourceType": {},
        "SourceIdsList": {
          "shape": "S6"
        },
        "EventCategoriesList": {
          "shape": "S7"
        },
        "Enabled": {
          "type": "boolean"
        },
        "EventSubscriptionArn": {}
      },
      "wrapper": true
    },
    "S6": {
      "type": "list",
      "member": {
        "locationName": "SourceId"
      }
    },
    "S7": {
      "type": "list",
      "member": {
        "locationName": "EventCategory"
      }
    },
    "Sa": {
      "type": "list",
      "member": {
        "locationName": "Tag",
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "Se": {
      "type": "structure",
      "members": {
        "ResourceIdentifier": {},
        "PendingMaintenanceActionDetails": {
          "type": "list",
          "member": {
            "locationName": "PendingMaintenanceAction",
            "type": "structure",
            "members": {
              "Action": {},
              "AutoAppliedAfterDate": {
                "type": "timestamp"
              },
              "ForcedApplyDate": {
                "type": "timestamp"
              },
              "OptInStatus": {},
              "CurrentApplyDate": {
                "type": "timestamp"
              },
              "Description": {}
            }
          }
        }
      },
      "wrapper": true
    },
    "Sk": {
      "type": "structure",
      "members": {
        "OwnerId": {},
        "DBSecurityGroupName": {},
        "DBSecurityGroupDescription": {},
        "VpcId": {},
        "EC2SecurityGroups": {
          "type": "list",
          "member": {
            "locationName": "EC2SecurityGroup",
            "type": "structure",
            "members": {
              "Status": {},
              "EC2SecurityGroupName": {},
              "EC2SecurityGroupId": {},
              "EC2SecurityGroupOwnerId": {}
            }
          }
        },
        "IPRanges": {
          "type": "list",
          "member": {
            "locationName": "IPRange",
            "type": "structure",
            "members": {
              "Status": {},
              "CIDRIP": {}
            }
          }
        },
        "DBSecurityGroupArn": {}
      },
      "wrapper": true
    },
    "Sr": {
      "type": "structure",
      "members": {
        "DBClusterParameterGroupName": {},
        "DBParameterGroupFamily": {},
        "Description": {},
        "DBClusterParameterGroupArn": {}
      },
      "wrapper": true
    },
    "Sv": {
      "type": "structure",
      "members": {
        "AvailabilityZones": {
          "shape": "Sw"
        },
        "DBClusterSnapshotIdentifier": {},
        "DBClusterIdentifier": {},
        "SnapshotCreateTime": {
          "type": "timestamp"
        },
        "Engine": {},
        "AllocatedStorage": {
          "type": "integer"
        },
        "Status": {},
        "Port": {
          "type": "integer"
        },
        "VpcId": {},
        "ClusterCreateTime": {
          "type": "timestamp"
        },
        "MasterUsername": {},
        "EngineVersion": {},
        "LicenseModel": {},
        "SnapshotType": {},
        "PercentProgress": {
          "type": "integer"
        },
        "StorageEncrypted": {
          "type": "boolean"
        },
        "KmsKeyId": {},
        "DBClusterSnapshotArn": {},
        "SourceDBClusterSnapshotArn": {},
        "IAMDatabaseAuthenticationEnabled": {
          "type": "boolean"
        }
      },
      "wrapper": true
    },
    "Sw": {
      "type": "list",
      "member": {
        "locationName": "AvailabilityZone"
      }
    },
    "S10": {
      "type": "structure",
      "members": {
        "DBParameterGroupName": {},
        "DBParameterGroupFamily": {},
        "Description": {},
        "DBParameterGroupArn": {}
      },
      "wrapper": true
    },
    "S13": {
      "type": "structure",
      "members": {
        "DBSnapshotIdentifier": {},
        "DBInstanceIdentifier": {},
        "SnapshotCreateTime": {
          "type": "timestamp"
        },
        "Engine": {},
        "AllocatedStorage": {
          "type": "integer"
        },
        "Status": {},
        "Port": {
          "type": "integer"
        },
        "AvailabilityZone": {},
        "VpcId": {},
        "InstanceCreateTime": {
          "type": "timestamp"
        },
        "MasterUsername": {},
        "EngineVersion": {},
        "LicenseModel": {},
        "SnapshotType": {},
        "Iops": {
          "type": "integer"
        },
        "OptionGroupName": {},
        "PercentProgress": {
          "type": "integer"
        },
        "SourceRegion": {},
        "SourceDBSnapshotIdentifier": {},
        "StorageType": {},
        "TdeCredentialArn": {},
        "Encrypted": {
          "type": "boolean"
        },
        "KmsKeyId": {},
        "DBSnapshotArn": {},
        "Timezone": {},
        "IAMDatabaseAuthenticationEnabled": {
          "type": "boolean"
        }
      },
      "wrapper": true
    },
    "S17": {
      "type": "structure",
      "members": {
        "OptionGroupName": {},
        "OptionGroupDescription": {},
        "EngineName": {},
        "MajorEngineVersion": {},
        "Options": {
          "type": "list",
          "member": {
            "locationName": "Option",
            "type": "structure",
            "members": {
              "OptionName": {},
              "OptionDescription": {},
              "Persistent": {
                "type": "boolean"
              },
              "Permanent": {
                "type": "boolean"
              },
              "Port": {
                "type": "integer"
              },
              "OptionVersion": {},
              "OptionSettings": {
                "type": "list",
                "member": {
                  "shape": "S1b",
                  "locationName": "OptionSetting"
                }
              },
              "DBSecurityGroupMemberships": {
                "shape": "S1c"
              },
              "VpcSecurityGroupMemberships": {
                "shape": "S1e"
              }
            }
          }
        },
        "AllowsVpcAndNonVpcInstanceMemberships": {
          "type": "boolean"
        },
        "VpcId": {},
        "OptionGroupArn": {}
      },
      "wrapper": true
    },
    "S1b": {
      "type": "structure",
      "members": {
        "Name": {},
        "Value": {},
        "DefaultValue": {},
        "Description": {},
        "ApplyType": {},
        "DataType": {},
        "AllowedValues": {},
        "IsModifiable": {
          "type": "boolean"
        },
        "IsCollection": {
          "type": "boolean"
        }
      }
    },
    "S1c": {
      "type": "list",
      "member": {
        "locationName": "DBSecurityGroup",
        "type": "structure",
        "members": {
          "DBSecurityGroupName": {},
          "Status": {}
        }
      }
    },
    "S1e": {
      "type": "list",
      "member": {
        "locationName": "VpcSecurityGroupMembership",
        "type": "structure",
        "members": {
          "VpcSecurityGroupId": {},
          "Status": {}
        }
      }
    },
    "S1h": {
      "type": "list",
      "member": {
        "locationName": "VpcSecurityGroupId"
      }
    },
    "S1j": {
      "type": "structure",
      "members": {
        "AllocatedStorage": {
          "type": "integer"
        },
        "AvailabilityZones": {
          "shape": "Sw"
        },
        "BackupRetentionPeriod": {
          "type": "integer"
        },
        "CharacterSetName": {},
        "DatabaseName": {},
        "DBClusterIdentifier": {},
        "DBClusterParameterGroup": {},
        "DBSubnetGroup": {},
        "Status": {},
        "PercentProgress": {},
        "EarliestRestorableTime": {
          "type": "timestamp"
        },
        "Endpoint": {},
        "ReaderEndpoint": {},
        "MultiAZ": {
          "type": "boolean"
        },
        "Engine": {},
        "EngineVersion": {},
        "LatestRestorableTime": {
          "type": "timestamp"
        },
        "Port": {
          "type": "integer"
        },
        "MasterUsername": {},
        "DBClusterOptionGroupMemberships": {
          "type": "list",
          "member": {
            "locationName": "DBClusterOptionGroup",
            "type": "structure",
            "members": {
              "DBClusterOptionGroupName": {},
              "Status": {}
            }
          }
        },
        "PreferredBackupWindow": {},
        "PreferredMaintenanceWindow": {},
        "ReplicationSourceIdentifier": {},
        "ReadReplicaIdentifiers": {
          "type": "list",
          "member": {
            "locationName": "ReadReplicaIdentifier"
          }
        },
        "DBClusterMembers": {
          "type": "list",
          "member": {
            "locationName": "DBClusterMember",
            "type": "structure",
            "members": {
              "DBInstanceIdentifier": {},
              "IsClusterWriter": {
                "type": "boolean"
              },
              "DBClusterParameterGroupStatus": {},
              "PromotionTier": {
                "type": "integer"
              }
            },
            "wrapper": true
          }
        },
        "VpcSecurityGroups": {
          "shape": "S1e"
        },
        "HostedZoneId": {},
        "StorageEncrypted": {
          "type": "boolean"
        },
        "KmsKeyId": {},
        "DbClusterResourceId": {},
        "DBClusterArn": {},
        "AssociatedRoles": {
          "type": "list",
          "member": {
            "locationName": "DBClusterRole",
            "type": "structure",
            "members": {
              "RoleArn": {},
              "Status": {}
            }
          }
        },
        "IAMDatabaseAuthenticationEnabled": {
          "type": "boolean"
        },
        "CloneGroupId": {},
        "ClusterCreateTime": {
          "type": "timestamp"
        }
      },
      "wrapper": true
    },
    "S1w": {
      "type": "list",
      "member": {
        "locationName": "DBSecurityGroupName"
      }
    },
    "S1x": {
      "type": "list",
      "member": {}
    },
    "S1z": {
      "type": "structure",
      "members": {
        "DBInstanceIdentifier": {},
        "DBInstanceClass": {},
        "Engine": {},
        "DBInstanceStatus": {},
        "MasterUsername": {},
        "DBName": {},
        "Endpoint": {
          "type": "structure",
          "members": {
            "Address": {},
            "Port": {
              "type": "integer"
            },
            "HostedZoneId": {}
          }
        },
        "AllocatedStorage": {
          "type": "integer"
        },
        "InstanceCreateTime": {
          "type": "timestamp"
        },
        "PreferredBackupWindow": {},
        "BackupRetentionPeriod": {
          "type": "integer"
        },
        "DBSecurityGroups": {
          "shape": "S1c"
        },
        "VpcSecurityGroups": {
          "shape": "S1e"
        },
        "DBParameterGroups": {
          "type": "list",
          "member": {
            "locationName": "DBParameterGroup",
            "type": "structure",
            "members": {
              "DBParameterGroupName": {},
              "ParameterApplyStatus": {}
            }
          }
        },
        "AvailabilityZone": {},
        "DBSubnetGroup": {
          "shape": "S23"
        },
        "PreferredMaintenanceWindow": {},
        "PendingModifiedValues": {
          "type": "structure",
          "members": {
            "DBInstanceClass": {},
            "AllocatedStorage": {
              "type": "integer"
            },
            "MasterUserPassword": {},
            "Port": {
              "type": "integer"
            },
            "BackupRetentionPeriod": {
              "type": "integer"
            },
            "MultiAZ": {
              "type": "boolean"
            },
            "EngineVersion": {},
            "LicenseModel": {},
            "Iops": {
              "type": "integer"
            },
            "DBInstanceIdentifier": {},
            "StorageType": {},
            "CACertificateIdentifier": {},
            "DBSubnetGroupName": {},
            "PendingCloudwatchLogsExports": {
              "type": "structure",
              "members": {
                "LogTypesToEnable": {
                  "shape": "S1x"
                },
                "LogTypesToDisable": {
                  "shape": "S1x"
                }
              }
            }
          }
        },
        "LatestRestorableTime": {
          "type": "timestamp"
        },
        "MultiAZ": {
          "type": "boolean"
        },
        "EngineVersion": {},
        "AutoMinorVersionUpgrade": {
          "type": "boolean"
        },
        "ReadReplicaSourceDBInstanceIdentifier": {},
        "ReadReplicaDBInstanceIdentifiers": {
          "type": "list",
          "member": {
            "locationName": "ReadReplicaDBInstanceIdentifier"
          }
        },
        "ReadReplicaDBClusterIdentifiers": {
          "type": "list",
          "member": {
            "locationName": "ReadReplicaDBClusterIdentifier"
          }
        },
        "LicenseModel": {},
        "Iops": {
          "type": "integer"
        },
        "OptionGroupMemberships": {
          "type": "list",
          "member": {
            "locationName": "OptionGroupMembership",
            "type": "structure",
            "members": {
              "OptionGroupName": {},
              "Status": {}
            }
          }
        },
        "CharacterSetName": {},
        "SecondaryAvailabilityZone": {},
        "PubliclyAccessible": {
          "type": "boolean"
        },
        "StatusInfos": {
          "type": "list",
          "member": {
            "locationName": "DBInstanceStatusInfo",
            "type": "structure",
            "members": {
              "StatusType": {},
              "Normal": {
                "type": "boolean"
              },
              "Status": {},
              "Message": {}
            }
          }
        },
        "StorageType": {},
        "TdeCredentialArn": {},
        "DbInstancePort": {
          "type": "integer"
        },
        "DBClusterIdentifier": {},
        "StorageEncrypted": {
          "type": "boolean"
        },
        "KmsKeyId": {},
        "DbiResourceId": {},
        "CACertificateIdentifier": {},
        "DomainMemberships": {
          "type": "list",
          "member": {
            "locationName": "DomainMembership",
            "type": "structure",
            "members": {
              "Domain": {},
              "Status": {},
              "FQDN": {},
              "IAMRoleName": {}
            }
          }
        },
        "CopyTagsToSnapshot": {
          "type": "boolean"
        },
        "MonitoringInterval": {
          "type": "integer"
        },
        "EnhancedMonitoringResourceArn": {},
        "MonitoringRoleArn": {},
        "PromotionTier": {
          "type": "integer"
        },
        "DBInstanceArn": {},
        "Timezone": {},
        "IAMDatabaseAuthenticationEnabled": {
          "type": "boolean"
        },
        "PerformanceInsightsEnabled": {
          "type": "boolean"
        },
        "PerformanceInsightsKMSKeyId": {},
        "EnabledCloudwatchLogsExports": {
          "shape": "S1x"
        }
      },
      "wrapper": true
    },
    "S23": {
      "type": "structure",
      "members": {
        "DBSubnetGroupName": {},
        "DBSubnetGroupDescription": {},
        "VpcId": {},
        "SubnetGroupStatus": {},
        "Subnets": {
          "type": "list",
          "member": {
            "locationName": "Subnet",
            "type": "structure",
            "members": {
              "SubnetIdentifier": {},
              "SubnetAvailabilityZone": {
                "shape": "S26"
              },
              "SubnetStatus": {}
            }
          }
        },
        "DBSubnetGroupArn": {}
      },
      "wrapper": true
    },
    "S26": {
      "type": "structure",
      "members": {
        "Name": {}
      },
      "wrapper": true
    },
    "S2q": {
      "type": "list",
      "member": {
        "locationName": "SubnetIdentifier"
      }
    },
    "S3h": {
      "type": "list",
      "member": {
        "locationName": "Filter",
        "type": "structure",
        "required": [
          "Name",
          "Values"
        ],
        "members": {
          "Name": {},
          "Values": {
            "type": "list",
            "member": {
              "locationName": "Value"
            }
          }
        }
      }
    },
    "S3s": {
      "type": "list",
      "member": {
        "locationName": "Parameter",
        "type": "structure",
        "members": {
          "ParameterName": {},
          "ParameterValue": {},
          "Description": {},
          "Source": {},
          "ApplyType": {},
          "DataType": {},
          "AllowedValues": {},
          "IsModifiable": {
            "type": "boolean"
          },
          "MinimumEngineVersion": {},
          "ApplyMethod": {}
        }
      }
    },
    "S3x": {
      "type": "structure",
      "members": {
        "DBClusterSnapshotIdentifier": {},
        "DBClusterSnapshotAttributes": {
          "type": "list",
          "member": {
            "locationName": "DBClusterSnapshotAttribute",
            "type": "structure",
            "members": {
              "AttributeName": {},
              "AttributeValues": {
                "shape": "S40"
              }
            }
          }
        }
      },
      "wrapper": true
    },
    "S40": {
      "type": "list",
      "member": {
        "locationName": "AttributeValue"
      }
    },
    "S4b": {
      "type": "structure",
      "members": {
        "CharacterSetName": {},
        "CharacterSetDescription": {}
      }
    },
    "S4y": {
      "type": "structure",
      "members": {
        "DBSnapshotIdentifier": {},
        "DBSnapshotAttributes": {
          "type": "list",
          "member": {
            "locationName": "DBSnapshotAttribute",
            "type": "structure",
            "members": {
              "AttributeName": {},
              "AttributeValues": {
                "shape": "S40"
              }
            },
            "wrapper": true
          }
        }
      },
      "wrapper": true
    },
    "S59": {
      "type": "structure",
      "members": {
        "DBParameterGroupFamily": {},
        "Marker": {},
        "Parameters": {
          "shape": "S3s"
        }
      },
      "wrapper": true
    },
    "S6d": {
      "type": "structure",
      "members": {
        "ReservedDBInstanceId": {},
        "ReservedDBInstancesOfferingId": {},
        "DBInstanceClass": {},
        "StartTime": {
          "type": "timestamp"
        },
        "Duration": {
          "type": "integer"
        },
        "FixedPrice": {
          "type": "double"
        },
        "UsagePrice": {
          "type": "double"
        },
        "CurrencyCode": {},
        "DBInstanceCount": {
          "type": "integer"
        },
        "ProductDescription": {},
        "OfferingType": {},
        "MultiAZ": {
          "type": "boolean"
        },
        "State": {},
        "RecurringCharges": {
          "shape": "S6f"
        },
        "ReservedDBInstanceArn": {}
      },
      "wrapper": true
    },
    "S6f": {
      "type": "list",
      "member": {
        "locationName": "RecurringCharge",
        "type": "structure",
        "members": {
          "RecurringChargeAmount": {
            "type": "double"
          },
          "RecurringChargeFrequency": {}
        },
        "wrapper": true
      }
    },
    "S6u": {
      "type": "list",
      "member": {
        "locationName": "Range",
        "type": "structure",
        "members": {
          "From": {
            "type": "integer"
          },
          "To": {
            "type": "integer"
          },
          "Step": {
            "type": "integer"
          }
        }
      }
    },
    "S77": {
      "type": "structure",
      "members": {
        "DBClusterParameterGroupName": {}
      }
    },
    "S7e": {
      "type": "structure",
      "members": {
        "DBParameterGroupName": {}
      }
    }
  }
}
},{}],129:[function(require,module,exports){
arguments[4][122][0].apply(exports,arguments)
},{"dup":122}],130:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "DBInstanceAvailable": {
      "delay": 30,
      "operation": "DescribeDBInstances",
      "maxAttempts": 60,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "deleted",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "deleting",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "incompatible-restore",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "incompatible-parameters",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        }
      ]
    },
    "DBInstanceDeleted": {
      "delay": 30,
      "operation": "DescribeDBInstances",
      "maxAttempts": 60,
      "acceptors": [
        {
          "expected": "deleted",
          "matcher": "pathAll",
          "state": "success",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "DBInstanceNotFound",
          "matcher": "error",
          "state": "success"
        },
        {
          "expected": "creating",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "modifying",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "rebooting",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        },
        {
          "expected": "resetting-master-credentials",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBInstances[].DBInstanceStatus"
        }
      ]
    },
    "DBSnapshotAvailable": {
      "delay": 30,
      "operation": "DescribeDBSnapshots",
      "maxAttempts": 60,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "DBSnapshots[].Status"
        },
        {
          "expected": "deleted",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBSnapshots[].Status"
        },
        {
          "expected": "deleting",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBSnapshots[].Status"
        },
        {
          "expected": "failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBSnapshots[].Status"
        },
        {
          "expected": "incompatible-restore",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBSnapshots[].Status"
        },
        {
          "expected": "incompatible-parameters",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBSnapshots[].Status"
        }
      ]
    },
    "DBSnapshotDeleted": {
      "delay": 30,
      "operation": "DescribeDBSnapshots",
      "maxAttempts": 60,
      "acceptors": [
        {
          "expected": "deleted",
          "matcher": "pathAll",
          "state": "success",
          "argument": "DBSnapshots[].Status"
        },
        {
          "expected": "DBSnapshotNotFound",
          "matcher": "error",
          "state": "success"
        },
        {
          "expected": "creating",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBSnapshots[].Status"
        },
        {
          "expected": "modifying",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBSnapshots[].Status"
        },
        {
          "expected": "rebooting",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBSnapshots[].Status"
        },
        {
          "expected": "resetting-master-credentials",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "DBSnapshots[].Status"
        }
      ]
    }
  }
}

},{}],131:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2012-12-01",
    "endpointPrefix": "redshift",
    "protocol": "query",
    "serviceFullName": "Amazon Redshift",
    "signatureVersion": "v4",
    "uid": "redshift-2012-12-01",
    "xmlNamespace": "http://redshift.amazonaws.com/doc/2012-12-01/"
  },
  "operations": {
    "AuthorizeClusterSecurityGroupIngress": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterSecurityGroupName"
        ],
        "members": {
          "ClusterSecurityGroupName": {},
          "CIDRIP": {},
          "EC2SecurityGroupName": {},
          "EC2SecurityGroupOwnerId": {}
        }
      },
      "output": {
        "resultWrapper": "AuthorizeClusterSecurityGroupIngressResult",
        "type": "structure",
        "members": {
          "ClusterSecurityGroup": {
            "shape": "S4"
          }
        }
      }
    },
    "AuthorizeSnapshotAccess": {
      "input": {
        "type": "structure",
        "required": [
          "SnapshotIdentifier",
          "AccountWithRestoreAccess"
        ],
        "members": {
          "SnapshotIdentifier": {},
          "SnapshotClusterIdentifier": {},
          "AccountWithRestoreAccess": {}
        }
      },
      "output": {
        "resultWrapper": "AuthorizeSnapshotAccessResult",
        "type": "structure",
        "members": {
          "Snapshot": {
            "shape": "Sd"
          }
        }
      }
    },
    "CopyClusterSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "SourceSnapshotIdentifier",
          "TargetSnapshotIdentifier"
        ],
        "members": {
          "SourceSnapshotIdentifier": {},
          "SourceSnapshotClusterIdentifier": {},
          "TargetSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "CopyClusterSnapshotResult",
        "type": "structure",
        "members": {
          "Snapshot": {
            "shape": "Sd"
          }
        }
      }
    },
    "CreateCluster": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterIdentifier",
          "NodeType",
          "MasterUsername",
          "MasterUserPassword"
        ],
        "members": {
          "DBName": {},
          "ClusterIdentifier": {},
          "ClusterType": {},
          "NodeType": {},
          "MasterUsername": {},
          "MasterUserPassword": {},
          "ClusterSecurityGroups": {
            "shape": "Sp"
          },
          "VpcSecurityGroupIds": {
            "shape": "Sq"
          },
          "ClusterSubnetGroupName": {},
          "AvailabilityZone": {},
          "PreferredMaintenanceWindow": {},
          "ClusterParameterGroupName": {},
          "AutomatedSnapshotRetentionPeriod": {
            "type": "integer"
          },
          "Port": {
            "type": "integer"
          },
          "ClusterVersion": {},
          "AllowVersionUpgrade": {
            "type": "boolean"
          },
          "NumberOfNodes": {
            "type": "integer"
          },
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "Encrypted": {
            "type": "boolean"
          },
          "HsmClientCertificateIdentifier": {},
          "HsmConfigurationIdentifier": {},
          "ElasticIp": {},
          "Tags": {
            "shape": "S7"
          },
          "KmsKeyId": {},
          "EnhancedVpcRouting": {
            "type": "boolean"
          },
          "AdditionalInfo": {},
          "IamRoles": {
            "shape": "St"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateClusterResult",
        "type": "structure",
        "members": {
          "Cluster": {
            "shape": "Sv"
          }
        }
      }
    },
    "CreateClusterParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "ParameterGroupName",
          "ParameterGroupFamily",
          "Description"
        ],
        "members": {
          "ParameterGroupName": {},
          "ParameterGroupFamily": {},
          "Description": {},
          "Tags": {
            "shape": "S7"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateClusterParameterGroupResult",
        "type": "structure",
        "members": {
          "ClusterParameterGroup": {
            "shape": "S1g"
          }
        }
      }
    },
    "CreateClusterSecurityGroup": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterSecurityGroupName",
          "Description"
        ],
        "members": {
          "ClusterSecurityGroupName": {},
          "Description": {},
          "Tags": {
            "shape": "S7"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateClusterSecurityGroupResult",
        "type": "structure",
        "members": {
          "ClusterSecurityGroup": {
            "shape": "S4"
          }
        }
      }
    },
    "CreateClusterSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "SnapshotIdentifier",
          "ClusterIdentifier"
        ],
        "members": {
          "SnapshotIdentifier": {},
          "ClusterIdentifier": {},
          "Tags": {
            "shape": "S7"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateClusterSnapshotResult",
        "type": "structure",
        "members": {
          "Snapshot": {
            "shape": "Sd"
          }
        }
      }
    },
    "CreateClusterSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterSubnetGroupName",
          "Description",
          "SubnetIds"
        ],
        "members": {
          "ClusterSubnetGroupName": {},
          "Description": {},
          "SubnetIds": {
            "shape": "S1m"
          },
          "Tags": {
            "shape": "S7"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateClusterSubnetGroupResult",
        "type": "structure",
        "members": {
          "ClusterSubnetGroup": {
            "shape": "S1o"
          }
        }
      }
    },
    "CreateEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName",
          "SnsTopicArn"
        ],
        "members": {
          "SubscriptionName": {},
          "SnsTopicArn": {},
          "SourceType": {},
          "SourceIds": {
            "shape": "S1t"
          },
          "EventCategories": {
            "shape": "S1u"
          },
          "Severity": {},
          "Enabled": {
            "type": "boolean"
          },
          "Tags": {
            "shape": "S7"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S1w"
          }
        }
      }
    },
    "CreateHsmClientCertificate": {
      "input": {
        "type": "structure",
        "required": [
          "HsmClientCertificateIdentifier"
        ],
        "members": {
          "HsmClientCertificateIdentifier": {},
          "Tags": {
            "shape": "S7"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateHsmClientCertificateResult",
        "type": "structure",
        "members": {
          "HsmClientCertificate": {
            "shape": "S1z"
          }
        }
      }
    },
    "CreateHsmConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "HsmConfigurationIdentifier",
          "Description",
          "HsmIpAddress",
          "HsmPartitionName",
          "HsmPartitionPassword",
          "HsmServerPublicCertificate"
        ],
        "members": {
          "HsmConfigurationIdentifier": {},
          "Description": {},
          "HsmIpAddress": {},
          "HsmPartitionName": {},
          "HsmPartitionPassword": {},
          "HsmServerPublicCertificate": {},
          "Tags": {
            "shape": "S7"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateHsmConfigurationResult",
        "type": "structure",
        "members": {
          "HsmConfiguration": {
            "shape": "S22"
          }
        }
      }
    },
    "CreateSnapshotCopyGrant": {
      "input": {
        "type": "structure",
        "required": [
          "SnapshotCopyGrantName"
        ],
        "members": {
          "SnapshotCopyGrantName": {},
          "KmsKeyId": {},
          "Tags": {
            "shape": "S7"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateSnapshotCopyGrantResult",
        "type": "structure",
        "members": {
          "SnapshotCopyGrant": {
            "shape": "S25"
          }
        }
      }
    },
    "CreateTags": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName",
          "Tags"
        ],
        "members": {
          "ResourceName": {},
          "Tags": {
            "shape": "S7"
          }
        }
      }
    },
    "DeleteCluster": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterIdentifier"
        ],
        "members": {
          "ClusterIdentifier": {},
          "SkipFinalClusterSnapshot": {
            "type": "boolean"
          },
          "FinalClusterSnapshotIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteClusterResult",
        "type": "structure",
        "members": {
          "Cluster": {
            "shape": "Sv"
          }
        }
      }
    },
    "DeleteClusterParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "ParameterGroupName"
        ],
        "members": {
          "ParameterGroupName": {}
        }
      }
    },
    "DeleteClusterSecurityGroup": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterSecurityGroupName"
        ],
        "members": {
          "ClusterSecurityGroupName": {}
        }
      }
    },
    "DeleteClusterSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "SnapshotIdentifier"
        ],
        "members": {
          "SnapshotIdentifier": {},
          "SnapshotClusterIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DeleteClusterSnapshotResult",
        "type": "structure",
        "members": {
          "Snapshot": {
            "shape": "Sd"
          }
        }
      }
    },
    "DeleteClusterSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterSubnetGroupName"
        ],
        "members": {
          "ClusterSubnetGroupName": {}
        }
      }
    },
    "DeleteEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName"
        ],
        "members": {
          "SubscriptionName": {}
        }
      }
    },
    "DeleteHsmClientCertificate": {
      "input": {
        "type": "structure",
        "required": [
          "HsmClientCertificateIdentifier"
        ],
        "members": {
          "HsmClientCertificateIdentifier": {}
        }
      }
    },
    "DeleteHsmConfiguration": {
      "input": {
        "type": "structure",
        "required": [
          "HsmConfigurationIdentifier"
        ],
        "members": {
          "HsmConfigurationIdentifier": {}
        }
      }
    },
    "DeleteSnapshotCopyGrant": {
      "input": {
        "type": "structure",
        "required": [
          "SnapshotCopyGrantName"
        ],
        "members": {
          "SnapshotCopyGrantName": {}
        }
      }
    },
    "DeleteTags": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceName",
          "TagKeys"
        ],
        "members": {
          "ResourceName": {},
          "TagKeys": {
            "shape": "S2j"
          }
        }
      }
    },
    "DescribeClusterParameterGroups": {
      "input": {
        "type": "structure",
        "members": {
          "ParameterGroupName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "TagKeys": {
            "shape": "S2j"
          },
          "TagValues": {
            "shape": "S2l"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeClusterParameterGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ParameterGroups": {
            "type": "list",
            "member": {
              "shape": "S1g",
              "locationName": "ClusterParameterGroup"
            }
          }
        }
      }
    },
    "DescribeClusterParameters": {
      "input": {
        "type": "structure",
        "required": [
          "ParameterGroupName"
        ],
        "members": {
          "ParameterGroupName": {},
          "Source": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeClusterParametersResult",
        "type": "structure",
        "members": {
          "Parameters": {
            "shape": "S2q"
          },
          "Marker": {}
        }
      }
    },
    "DescribeClusterSecurityGroups": {
      "input": {
        "type": "structure",
        "members": {
          "ClusterSecurityGroupName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "TagKeys": {
            "shape": "S2j"
          },
          "TagValues": {
            "shape": "S2l"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeClusterSecurityGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ClusterSecurityGroups": {
            "type": "list",
            "member": {
              "shape": "S4",
              "locationName": "ClusterSecurityGroup"
            }
          }
        }
      }
    },
    "DescribeClusterSnapshots": {
      "input": {
        "type": "structure",
        "members": {
          "ClusterIdentifier": {},
          "SnapshotIdentifier": {},
          "SnapshotType": {},
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "OwnerAccount": {},
          "TagKeys": {
            "shape": "S2j"
          },
          "TagValues": {
            "shape": "S2l"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeClusterSnapshotsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "Snapshots": {
            "type": "list",
            "member": {
              "shape": "Sd",
              "locationName": "Snapshot"
            }
          }
        }
      }
    },
    "DescribeClusterSubnetGroups": {
      "input": {
        "type": "structure",
        "members": {
          "ClusterSubnetGroupName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "TagKeys": {
            "shape": "S2j"
          },
          "TagValues": {
            "shape": "S2l"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeClusterSubnetGroupsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ClusterSubnetGroups": {
            "type": "list",
            "member": {
              "shape": "S1o",
              "locationName": "ClusterSubnetGroup"
            }
          }
        }
      }
    },
    "DescribeClusterVersions": {
      "input": {
        "type": "structure",
        "members": {
          "ClusterVersion": {},
          "ClusterParameterGroupFamily": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeClusterVersionsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ClusterVersions": {
            "type": "list",
            "member": {
              "locationName": "ClusterVersion",
              "type": "structure",
              "members": {
                "ClusterVersion": {},
                "ClusterParameterGroupFamily": {},
                "Description": {}
              }
            }
          }
        }
      }
    },
    "DescribeClusters": {
      "input": {
        "type": "structure",
        "members": {
          "ClusterIdentifier": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "TagKeys": {
            "shape": "S2j"
          },
          "TagValues": {
            "shape": "S2l"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeClustersResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "Clusters": {
            "type": "list",
            "member": {
              "shape": "Sv",
              "locationName": "Cluster"
            }
          }
        }
      }
    },
    "DescribeDefaultClusterParameters": {
      "input": {
        "type": "structure",
        "required": [
          "ParameterGroupFamily"
        ],
        "members": {
          "ParameterGroupFamily": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeDefaultClusterParametersResult",
        "type": "structure",
        "members": {
          "DefaultClusterParameters": {
            "type": "structure",
            "members": {
              "ParameterGroupFamily": {},
              "Marker": {},
              "Parameters": {
                "shape": "S2q"
              }
            },
            "wrapper": true
          }
        }
      }
    },
    "DescribeEventCategories": {
      "input": {
        "type": "structure",
        "members": {
          "SourceType": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEventCategoriesResult",
        "type": "structure",
        "members": {
          "EventCategoriesMapList": {
            "type": "list",
            "member": {
              "locationName": "EventCategoriesMap",
              "type": "structure",
              "members": {
                "SourceType": {},
                "Events": {
                  "type": "list",
                  "member": {
                    "locationName": "EventInfoMap",
                    "type": "structure",
                    "members": {
                      "EventId": {},
                      "EventCategories": {
                        "shape": "S1u"
                      },
                      "EventDescription": {},
                      "Severity": {}
                    },
                    "wrapper": true
                  }
                }
              },
              "wrapper": true
            }
          }
        }
      }
    },
    "DescribeEventSubscriptions": {
      "input": {
        "type": "structure",
        "members": {
          "SubscriptionName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "TagKeys": {
            "shape": "S2j"
          },
          "TagValues": {
            "shape": "S2l"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeEventSubscriptionsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "EventSubscriptionsList": {
            "type": "list",
            "member": {
              "shape": "S1w",
              "locationName": "EventSubscription"
            }
          }
        }
      }
    },
    "DescribeEvents": {
      "input": {
        "type": "structure",
        "members": {
          "SourceIdentifier": {},
          "SourceType": {},
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "Duration": {
            "type": "integer"
          },
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeEventsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "Events": {
            "type": "list",
            "member": {
              "locationName": "Event",
              "type": "structure",
              "members": {
                "SourceIdentifier": {},
                "SourceType": {},
                "Message": {},
                "EventCategories": {
                  "shape": "S1u"
                },
                "Severity": {},
                "Date": {
                  "type": "timestamp"
                },
                "EventId": {}
              }
            }
          }
        }
      }
    },
    "DescribeHsmClientCertificates": {
      "input": {
        "type": "structure",
        "members": {
          "HsmClientCertificateIdentifier": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "TagKeys": {
            "shape": "S2j"
          },
          "TagValues": {
            "shape": "S2l"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeHsmClientCertificatesResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "HsmClientCertificates": {
            "type": "list",
            "member": {
              "shape": "S1z",
              "locationName": "HsmClientCertificate"
            }
          }
        }
      }
    },
    "DescribeHsmConfigurations": {
      "input": {
        "type": "structure",
        "members": {
          "HsmConfigurationIdentifier": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "TagKeys": {
            "shape": "S2j"
          },
          "TagValues": {
            "shape": "S2l"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeHsmConfigurationsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "HsmConfigurations": {
            "type": "list",
            "member": {
              "shape": "S22",
              "locationName": "HsmConfiguration"
            }
          }
        }
      }
    },
    "DescribeLoggingStatus": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterIdentifier"
        ],
        "members": {
          "ClusterIdentifier": {}
        }
      },
      "output": {
        "shape": "S3x",
        "resultWrapper": "DescribeLoggingStatusResult"
      }
    },
    "DescribeOrderableClusterOptions": {
      "input": {
        "type": "structure",
        "members": {
          "ClusterVersion": {},
          "NodeType": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeOrderableClusterOptionsResult",
        "type": "structure",
        "members": {
          "OrderableClusterOptions": {
            "type": "list",
            "member": {
              "locationName": "OrderableClusterOption",
              "type": "structure",
              "members": {
                "ClusterVersion": {},
                "ClusterType": {},
                "NodeType": {},
                "AvailabilityZones": {
                  "type": "list",
                  "member": {
                    "shape": "S1r",
                    "locationName": "AvailabilityZone"
                  }
                }
              },
              "wrapper": true
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeReservedNodeOfferings": {
      "input": {
        "type": "structure",
        "members": {
          "ReservedNodeOfferingId": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReservedNodeOfferingsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ReservedNodeOfferings": {
            "type": "list",
            "member": {
              "locationName": "ReservedNodeOffering",
              "type": "structure",
              "members": {
                "ReservedNodeOfferingId": {},
                "NodeType": {},
                "Duration": {
                  "type": "integer"
                },
                "FixedPrice": {
                  "type": "double"
                },
                "UsagePrice": {
                  "type": "double"
                },
                "CurrencyCode": {},
                "OfferingType": {},
                "RecurringCharges": {
                  "shape": "S47"
                }
              },
              "wrapper": true
            }
          }
        }
      }
    },
    "DescribeReservedNodes": {
      "input": {
        "type": "structure",
        "members": {
          "ReservedNodeId": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeReservedNodesResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "ReservedNodes": {
            "type": "list",
            "member": {
              "shape": "S4c",
              "locationName": "ReservedNode"
            }
          }
        }
      }
    },
    "DescribeResize": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterIdentifier"
        ],
        "members": {
          "ClusterIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeResizeResult",
        "type": "structure",
        "members": {
          "TargetNodeType": {},
          "TargetNumberOfNodes": {
            "type": "integer"
          },
          "TargetClusterType": {},
          "Status": {},
          "ImportTablesCompleted": {
            "type": "list",
            "member": {}
          },
          "ImportTablesInProgress": {
            "type": "list",
            "member": {}
          },
          "ImportTablesNotStarted": {
            "type": "list",
            "member": {}
          },
          "AvgResizeRateInMegaBytesPerSecond": {
            "type": "double"
          },
          "TotalResizeDataInMegaBytes": {
            "type": "long"
          },
          "ProgressInMegaBytes": {
            "type": "long"
          },
          "ElapsedTimeInSeconds": {
            "type": "long"
          },
          "EstimatedTimeToCompletionInSeconds": {
            "type": "long"
          }
        }
      }
    },
    "DescribeSnapshotCopyGrants": {
      "input": {
        "type": "structure",
        "members": {
          "SnapshotCopyGrantName": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "TagKeys": {
            "shape": "S2j"
          },
          "TagValues": {
            "shape": "S2l"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeSnapshotCopyGrantsResult",
        "type": "structure",
        "members": {
          "Marker": {},
          "SnapshotCopyGrants": {
            "type": "list",
            "member": {
              "shape": "S25",
              "locationName": "SnapshotCopyGrant"
            }
          }
        }
      }
    },
    "DescribeTableRestoreStatus": {
      "input": {
        "type": "structure",
        "members": {
          "ClusterIdentifier": {},
          "TableRestoreRequestId": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "resultWrapper": "DescribeTableRestoreStatusResult",
        "type": "structure",
        "members": {
          "TableRestoreStatusDetails": {
            "type": "list",
            "member": {
              "shape": "S4q",
              "locationName": "TableRestoreStatus"
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeTags": {
      "input": {
        "type": "structure",
        "members": {
          "ResourceName": {},
          "ResourceType": {},
          "MaxRecords": {
            "type": "integer"
          },
          "Marker": {},
          "TagKeys": {
            "shape": "S2j"
          },
          "TagValues": {
            "shape": "S2l"
          }
        }
      },
      "output": {
        "resultWrapper": "DescribeTagsResult",
        "type": "structure",
        "members": {
          "TaggedResources": {
            "type": "list",
            "member": {
              "locationName": "TaggedResource",
              "type": "structure",
              "members": {
                "Tag": {
                  "shape": "S8"
                },
                "ResourceName": {},
                "ResourceType": {}
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "DisableLogging": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterIdentifier"
        ],
        "members": {
          "ClusterIdentifier": {}
        }
      },
      "output": {
        "shape": "S3x",
        "resultWrapper": "DisableLoggingResult"
      }
    },
    "DisableSnapshotCopy": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterIdentifier"
        ],
        "members": {
          "ClusterIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "DisableSnapshotCopyResult",
        "type": "structure",
        "members": {
          "Cluster": {
            "shape": "Sv"
          }
        }
      }
    },
    "EnableLogging": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterIdentifier",
          "BucketName"
        ],
        "members": {
          "ClusterIdentifier": {},
          "BucketName": {},
          "S3KeyPrefix": {}
        }
      },
      "output": {
        "shape": "S3x",
        "resultWrapper": "EnableLoggingResult"
      }
    },
    "EnableSnapshotCopy": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterIdentifier",
          "DestinationRegion"
        ],
        "members": {
          "ClusterIdentifier": {},
          "DestinationRegion": {},
          "RetentionPeriod": {
            "type": "integer"
          },
          "SnapshotCopyGrantName": {}
        }
      },
      "output": {
        "resultWrapper": "EnableSnapshotCopyResult",
        "type": "structure",
        "members": {
          "Cluster": {
            "shape": "Sv"
          }
        }
      }
    },
    "GetClusterCredentials": {
      "input": {
        "type": "structure",
        "required": [
          "DbUser",
          "ClusterIdentifier"
        ],
        "members": {
          "DbUser": {},
          "DbName": {},
          "ClusterIdentifier": {},
          "DurationSeconds": {
            "type": "integer"
          },
          "AutoCreate": {
            "type": "boolean"
          },
          "DbGroups": {
            "type": "list",
            "member": {
              "locationName": "DbGroup"
            }
          }
        }
      },
      "output": {
        "resultWrapper": "GetClusterCredentialsResult",
        "type": "structure",
        "members": {
          "DbUser": {},
          "DbPassword": {
            "type": "string",
            "sensitive": true
          },
          "Expiration": {
            "type": "timestamp"
          }
        }
      }
    },
    "ModifyCluster": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterIdentifier"
        ],
        "members": {
          "ClusterIdentifier": {},
          "ClusterType": {},
          "NodeType": {},
          "NumberOfNodes": {
            "type": "integer"
          },
          "ClusterSecurityGroups": {
            "shape": "Sp"
          },
          "VpcSecurityGroupIds": {
            "shape": "Sq"
          },
          "MasterUserPassword": {},
          "ClusterParameterGroupName": {},
          "AutomatedSnapshotRetentionPeriod": {
            "type": "integer"
          },
          "PreferredMaintenanceWindow": {},
          "ClusterVersion": {},
          "AllowVersionUpgrade": {
            "type": "boolean"
          },
          "HsmClientCertificateIdentifier": {},
          "HsmConfigurationIdentifier": {},
          "NewClusterIdentifier": {},
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "ElasticIp": {},
          "EnhancedVpcRouting": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyClusterResult",
        "type": "structure",
        "members": {
          "Cluster": {
            "shape": "Sv"
          }
        }
      }
    },
    "ModifyClusterIamRoles": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterIdentifier"
        ],
        "members": {
          "ClusterIdentifier": {},
          "AddIamRoles": {
            "shape": "St"
          },
          "RemoveIamRoles": {
            "shape": "St"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyClusterIamRolesResult",
        "type": "structure",
        "members": {
          "Cluster": {
            "shape": "Sv"
          }
        }
      }
    },
    "ModifyClusterParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "ParameterGroupName",
          "Parameters"
        ],
        "members": {
          "ParameterGroupName": {},
          "Parameters": {
            "shape": "S2q"
          }
        }
      },
      "output": {
        "shape": "S5b",
        "resultWrapper": "ModifyClusterParameterGroupResult"
      }
    },
    "ModifyClusterSubnetGroup": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterSubnetGroupName",
          "SubnetIds"
        ],
        "members": {
          "ClusterSubnetGroupName": {},
          "Description": {},
          "SubnetIds": {
            "shape": "S1m"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyClusterSubnetGroupResult",
        "type": "structure",
        "members": {
          "ClusterSubnetGroup": {
            "shape": "S1o"
          }
        }
      }
    },
    "ModifyEventSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionName"
        ],
        "members": {
          "SubscriptionName": {},
          "SnsTopicArn": {},
          "SourceType": {},
          "SourceIds": {
            "shape": "S1t"
          },
          "EventCategories": {
            "shape": "S1u"
          },
          "Severity": {},
          "Enabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifyEventSubscriptionResult",
        "type": "structure",
        "members": {
          "EventSubscription": {
            "shape": "S1w"
          }
        }
      }
    },
    "ModifySnapshotCopyRetentionPeriod": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterIdentifier",
          "RetentionPeriod"
        ],
        "members": {
          "ClusterIdentifier": {},
          "RetentionPeriod": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "ModifySnapshotCopyRetentionPeriodResult",
        "type": "structure",
        "members": {
          "Cluster": {
            "shape": "Sv"
          }
        }
      }
    },
    "PurchaseReservedNodeOffering": {
      "input": {
        "type": "structure",
        "required": [
          "ReservedNodeOfferingId"
        ],
        "members": {
          "ReservedNodeOfferingId": {},
          "NodeCount": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "PurchaseReservedNodeOfferingResult",
        "type": "structure",
        "members": {
          "ReservedNode": {
            "shape": "S4c"
          }
        }
      }
    },
    "RebootCluster": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterIdentifier"
        ],
        "members": {
          "ClusterIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "RebootClusterResult",
        "type": "structure",
        "members": {
          "Cluster": {
            "shape": "Sv"
          }
        }
      }
    },
    "ResetClusterParameterGroup": {
      "input": {
        "type": "structure",
        "required": [
          "ParameterGroupName"
        ],
        "members": {
          "ParameterGroupName": {},
          "ResetAllParameters": {
            "type": "boolean"
          },
          "Parameters": {
            "shape": "S2q"
          }
        }
      },
      "output": {
        "shape": "S5b",
        "resultWrapper": "ResetClusterParameterGroupResult"
      }
    },
    "RestoreFromClusterSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterIdentifier",
          "SnapshotIdentifier"
        ],
        "members": {
          "ClusterIdentifier": {},
          "SnapshotIdentifier": {},
          "SnapshotClusterIdentifier": {},
          "Port": {
            "type": "integer"
          },
          "AvailabilityZone": {},
          "AllowVersionUpgrade": {
            "type": "boolean"
          },
          "ClusterSubnetGroupName": {},
          "PubliclyAccessible": {
            "type": "boolean"
          },
          "OwnerAccount": {},
          "HsmClientCertificateIdentifier": {},
          "HsmConfigurationIdentifier": {},
          "ElasticIp": {},
          "ClusterParameterGroupName": {},
          "ClusterSecurityGroups": {
            "shape": "Sp"
          },
          "VpcSecurityGroupIds": {
            "shape": "Sq"
          },
          "PreferredMaintenanceWindow": {},
          "AutomatedSnapshotRetentionPeriod": {
            "type": "integer"
          },
          "KmsKeyId": {},
          "NodeType": {},
          "EnhancedVpcRouting": {
            "type": "boolean"
          },
          "AdditionalInfo": {},
          "IamRoles": {
            "shape": "St"
          }
        }
      },
      "output": {
        "resultWrapper": "RestoreFromClusterSnapshotResult",
        "type": "structure",
        "members": {
          "Cluster": {
            "shape": "Sv"
          }
        }
      }
    },
    "RestoreTableFromClusterSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterIdentifier",
          "SnapshotIdentifier",
          "SourceDatabaseName",
          "SourceTableName",
          "NewTableName"
        ],
        "members": {
          "ClusterIdentifier": {},
          "SnapshotIdentifier": {},
          "SourceDatabaseName": {},
          "SourceSchemaName": {},
          "SourceTableName": {},
          "TargetDatabaseName": {},
          "TargetSchemaName": {},
          "NewTableName": {}
        }
      },
      "output": {
        "resultWrapper": "RestoreTableFromClusterSnapshotResult",
        "type": "structure",
        "members": {
          "TableRestoreStatus": {
            "shape": "S4q"
          }
        }
      }
    },
    "RevokeClusterSecurityGroupIngress": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterSecurityGroupName"
        ],
        "members": {
          "ClusterSecurityGroupName": {},
          "CIDRIP": {},
          "EC2SecurityGroupName": {},
          "EC2SecurityGroupOwnerId": {}
        }
      },
      "output": {
        "resultWrapper": "RevokeClusterSecurityGroupIngressResult",
        "type": "structure",
        "members": {
          "ClusterSecurityGroup": {
            "shape": "S4"
          }
        }
      }
    },
    "RevokeSnapshotAccess": {
      "input": {
        "type": "structure",
        "required": [
          "SnapshotIdentifier",
          "AccountWithRestoreAccess"
        ],
        "members": {
          "SnapshotIdentifier": {},
          "SnapshotClusterIdentifier": {},
          "AccountWithRestoreAccess": {}
        }
      },
      "output": {
        "resultWrapper": "RevokeSnapshotAccessResult",
        "type": "structure",
        "members": {
          "Snapshot": {
            "shape": "Sd"
          }
        }
      }
    },
    "RotateEncryptionKey": {
      "input": {
        "type": "structure",
        "required": [
          "ClusterIdentifier"
        ],
        "members": {
          "ClusterIdentifier": {}
        }
      },
      "output": {
        "resultWrapper": "RotateEncryptionKeyResult",
        "type": "structure",
        "members": {
          "Cluster": {
            "shape": "Sv"
          }
        }
      }
    }
  },
  "shapes": {
    "S4": {
      "type": "structure",
      "members": {
        "ClusterSecurityGroupName": {},
        "Description": {},
        "EC2SecurityGroups": {
          "type": "list",
          "member": {
            "locationName": "EC2SecurityGroup",
            "type": "structure",
            "members": {
              "Status": {},
              "EC2SecurityGroupName": {},
              "EC2SecurityGroupOwnerId": {},
              "Tags": {
                "shape": "S7"
              }
            }
          }
        },
        "IPRanges": {
          "type": "list",
          "member": {
            "locationName": "IPRange",
            "type": "structure",
            "members": {
              "Status": {},
              "CIDRIP": {},
              "Tags": {
                "shape": "S7"
              }
            }
          }
        },
        "Tags": {
          "shape": "S7"
        }
      },
      "wrapper": true
    },
    "S7": {
      "type": "list",
      "member": {
        "shape": "S8",
        "locationName": "Tag"
      }
    },
    "S8": {
      "type": "structure",
      "members": {
        "Key": {},
        "Value": {}
      }
    },
    "Sd": {
      "type": "structure",
      "members": {
        "SnapshotIdentifier": {},
        "ClusterIdentifier": {},
        "SnapshotCreateTime": {
          "type": "timestamp"
        },
        "Status": {},
        "Port": {
          "type": "integer"
        },
        "AvailabilityZone": {},
        "ClusterCreateTime": {
          "type": "timestamp"
        },
        "MasterUsername": {},
        "ClusterVersion": {},
        "SnapshotType": {},
        "NodeType": {},
        "NumberOfNodes": {
          "type": "integer"
        },
        "DBName": {},
        "VpcId": {},
        "Encrypted": {
          "type": "boolean"
        },
        "KmsKeyId": {},
        "EncryptedWithHSM": {
          "type": "boolean"
        },
        "AccountsWithRestoreAccess": {
          "type": "list",
          "member": {
            "locationName": "AccountWithRestoreAccess",
            "type": "structure",
            "members": {
              "AccountId": {},
              "AccountAlias": {}
            }
          }
        },
        "OwnerAccount": {},
        "TotalBackupSizeInMegaBytes": {
          "type": "double"
        },
        "ActualIncrementalBackupSizeInMegaBytes": {
          "type": "double"
        },
        "BackupProgressInMegaBytes": {
          "type": "double"
        },
        "CurrentBackupRateInMegaBytesPerSecond": {
          "type": "double"
        },
        "EstimatedSecondsToCompletion": {
          "type": "long"
        },
        "ElapsedTimeInSeconds": {
          "type": "long"
        },
        "SourceRegion": {},
        "Tags": {
          "shape": "S7"
        },
        "RestorableNodeTypes": {
          "type": "list",
          "member": {
            "locationName": "NodeType"
          }
        },
        "EnhancedVpcRouting": {
          "type": "boolean"
        }
      },
      "wrapper": true
    },
    "Sp": {
      "type": "list",
      "member": {
        "locationName": "ClusterSecurityGroupName"
      }
    },
    "Sq": {
      "type": "list",
      "member": {
        "locationName": "VpcSecurityGroupId"
      }
    },
    "St": {
      "type": "list",
      "member": {
        "locationName": "IamRoleArn"
      }
    },
    "Sv": {
      "type": "structure",
      "members": {
        "ClusterIdentifier": {},
        "NodeType": {},
        "ClusterStatus": {},
        "ModifyStatus": {},
        "MasterUsername": {},
        "DBName": {},
        "Endpoint": {
          "type": "structure",
          "members": {
            "Address": {},
            "Port": {
              "type": "integer"
            }
          }
        },
        "ClusterCreateTime": {
          "type": "timestamp"
        },
        "AutomatedSnapshotRetentionPeriod": {
          "type": "integer"
        },
        "ClusterSecurityGroups": {
          "type": "list",
          "member": {
            "locationName": "ClusterSecurityGroup",
            "type": "structure",
            "members": {
              "ClusterSecurityGroupName": {},
              "Status": {}
            }
          }
        },
        "VpcSecurityGroups": {
          "type": "list",
          "member": {
            "locationName": "VpcSecurityGroup",
            "type": "structure",
            "members": {
              "VpcSecurityGroupId": {},
              "Status": {}
            }
          }
        },
        "ClusterParameterGroups": {
          "type": "list",
          "member": {
            "locationName": "ClusterParameterGroup",
            "type": "structure",
            "members": {
              "ParameterGroupName": {},
              "ParameterApplyStatus": {},
              "ClusterParameterStatusList": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "ParameterName": {},
                    "ParameterApplyStatus": {},
                    "ParameterApplyErrorDescription": {}
                  }
                }
              }
            }
          }
        },
        "ClusterSubnetGroupName": {},
        "VpcId": {},
        "AvailabilityZone": {},
        "PreferredMaintenanceWindow": {},
        "PendingModifiedValues": {
          "type": "structure",
          "members": {
            "MasterUserPassword": {},
            "NodeType": {},
            "NumberOfNodes": {
              "type": "integer"
            },
            "ClusterType": {},
            "ClusterVersion": {},
            "AutomatedSnapshotRetentionPeriod": {
              "type": "integer"
            },
            "ClusterIdentifier": {},
            "PubliclyAccessible": {
              "type": "boolean"
            },
            "EnhancedVpcRouting": {
              "type": "boolean"
            }
          }
        },
        "ClusterVersion": {},
        "AllowVersionUpgrade": {
          "type": "boolean"
        },
        "NumberOfNodes": {
          "type": "integer"
        },
        "PubliclyAccessible": {
          "type": "boolean"
        },
        "Encrypted": {
          "type": "boolean"
        },
        "RestoreStatus": {
          "type": "structure",
          "members": {
            "Status": {},
            "CurrentRestoreRateInMegaBytesPerSecond": {
              "type": "double"
            },
            "SnapshotSizeInMegaBytes": {
              "type": "long"
            },
            "ProgressInMegaBytes": {
              "type": "long"
            },
            "ElapsedTimeInSeconds": {
              "type": "long"
            },
            "EstimatedTimeToCompletionInSeconds": {
              "type": "long"
            }
          }
        },
        "HsmStatus": {
          "type": "structure",
          "members": {
            "HsmClientCertificateIdentifier": {},
            "HsmConfigurationIdentifier": {},
            "Status": {}
          }
        },
        "ClusterSnapshotCopyStatus": {
          "type": "structure",
          "members": {
            "DestinationRegion": {},
            "RetentionPeriod": {
              "type": "long"
            },
            "SnapshotCopyGrantName": {}
          }
        },
        "ClusterPublicKey": {},
        "ClusterNodes": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "NodeRole": {},
              "PrivateIPAddress": {},
              "PublicIPAddress": {}
            }
          }
        },
        "ElasticIpStatus": {
          "type": "structure",
          "members": {
            "ElasticIp": {},
            "Status": {}
          }
        },
        "ClusterRevisionNumber": {},
        "Tags": {
          "shape": "S7"
        },
        "KmsKeyId": {},
        "EnhancedVpcRouting": {
          "type": "boolean"
        },
        "IamRoles": {
          "type": "list",
          "member": {
            "locationName": "ClusterIamRole",
            "type": "structure",
            "members": {
              "IamRoleArn": {},
              "ApplyStatus": {}
            }
          }
        }
      },
      "wrapper": true
    },
    "S1g": {
      "type": "structure",
      "members": {
        "ParameterGroupName": {},
        "ParameterGroupFamily": {},
        "Description": {},
        "Tags": {
          "shape": "S7"
        }
      },
      "wrapper": true
    },
    "S1m": {
      "type": "list",
      "member": {
        "locationName": "SubnetIdentifier"
      }
    },
    "S1o": {
      "type": "structure",
      "members": {
        "ClusterSubnetGroupName": {},
        "Description": {},
        "VpcId": {},
        "SubnetGroupStatus": {},
        "Subnets": {
          "type": "list",
          "member": {
            "locationName": "Subnet",
            "type": "structure",
            "members": {
              "SubnetIdentifier": {},
              "SubnetAvailabilityZone": {
                "shape": "S1r"
              },
              "SubnetStatus": {}
            }
          }
        },
        "Tags": {
          "shape": "S7"
        }
      },
      "wrapper": true
    },
    "S1r": {
      "type": "structure",
      "members": {
        "Name": {}
      },
      "wrapper": true
    },
    "S1t": {
      "type": "list",
      "member": {
        "locationName": "SourceId"
      }
    },
    "S1u": {
      "type": "list",
      "member": {
        "locationName": "EventCategory"
      }
    },
    "S1w": {
      "type": "structure",
      "members": {
        "CustomerAwsId": {},
        "CustSubscriptionId": {},
        "SnsTopicArn": {},
        "Status": {},
        "SubscriptionCreationTime": {
          "type": "timestamp"
        },
        "SourceType": {},
        "SourceIdsList": {
          "shape": "S1t"
        },
        "EventCategoriesList": {
          "shape": "S1u"
        },
        "Severity": {},
        "Enabled": {
          "type": "boolean"
        },
        "Tags": {
          "shape": "S7"
        }
      },
      "wrapper": true
    },
    "S1z": {
      "type": "structure",
      "members": {
        "HsmClientCertificateIdentifier": {},
        "HsmClientCertificatePublicKey": {},
        "Tags": {
          "shape": "S7"
        }
      },
      "wrapper": true
    },
    "S22": {
      "type": "structure",
      "members": {
        "HsmConfigurationIdentifier": {},
        "Description": {},
        "HsmIpAddress": {},
        "HsmPartitionName": {},
        "Tags": {
          "shape": "S7"
        }
      },
      "wrapper": true
    },
    "S25": {
      "type": "structure",
      "members": {
        "SnapshotCopyGrantName": {},
        "KmsKeyId": {},
        "Tags": {
          "shape": "S7"
        }
      },
      "wrapper": true
    },
    "S2j": {
      "type": "list",
      "member": {
        "locationName": "TagKey"
      }
    },
    "S2l": {
      "type": "list",
      "member": {
        "locationName": "TagValue"
      }
    },
    "S2q": {
      "type": "list",
      "member": {
        "locationName": "Parameter",
        "type": "structure",
        "members": {
          "ParameterName": {},
          "ParameterValue": {},
          "Description": {},
          "Source": {},
          "DataType": {},
          "AllowedValues": {},
          "ApplyType": {},
          "IsModifiable": {
            "type": "boolean"
          },
          "MinimumEngineVersion": {}
        }
      }
    },
    "S3x": {
      "type": "structure",
      "members": {
        "LoggingEnabled": {
          "type": "boolean"
        },
        "BucketName": {},
        "S3KeyPrefix": {},
        "LastSuccessfulDeliveryTime": {
          "type": "timestamp"
        },
        "LastFailureTime": {
          "type": "timestamp"
        },
        "LastFailureMessage": {}
      }
    },
    "S47": {
      "type": "list",
      "member": {
        "locationName": "RecurringCharge",
        "type": "structure",
        "members": {
          "RecurringChargeAmount": {
            "type": "double"
          },
          "RecurringChargeFrequency": {}
        },
        "wrapper": true
      }
    },
    "S4c": {
      "type": "structure",
      "members": {
        "ReservedNodeId": {},
        "ReservedNodeOfferingId": {},
        "NodeType": {},
        "StartTime": {
          "type": "timestamp"
        },
        "Duration": {
          "type": "integer"
        },
        "FixedPrice": {
          "type": "double"
        },
        "UsagePrice": {
          "type": "double"
        },
        "CurrencyCode": {},
        "NodeCount": {
          "type": "integer"
        },
        "State": {},
        "OfferingType": {},
        "RecurringCharges": {
          "shape": "S47"
        }
      },
      "wrapper": true
    },
    "S4q": {
      "type": "structure",
      "members": {
        "TableRestoreRequestId": {},
        "Status": {},
        "Message": {},
        "RequestTime": {
          "type": "timestamp"
        },
        "ProgressInMegaBytes": {
          "type": "long"
        },
        "TotalDataInMegaBytes": {
          "type": "long"
        },
        "ClusterIdentifier": {},
        "SnapshotIdentifier": {},
        "SourceDatabaseName": {},
        "SourceSchemaName": {},
        "SourceTableName": {},
        "TargetDatabaseName": {},
        "TargetSchemaName": {},
        "NewTableName": {}
      },
      "wrapper": true
    },
    "S5b": {
      "type": "structure",
      "members": {
        "ParameterGroupName": {},
        "ParameterGroupStatus": {}
      }
    }
  }
}
},{}],132:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeClusterParameterGroups": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "ParameterGroups"
    },
    "DescribeClusterParameters": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "Parameters"
    },
    "DescribeClusterSecurityGroups": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "ClusterSecurityGroups"
    },
    "DescribeClusterSnapshots": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "Snapshots"
    },
    "DescribeClusterSubnetGroups": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "ClusterSubnetGroups"
    },
    "DescribeClusterVersions": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "ClusterVersions"
    },
    "DescribeClusters": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "Clusters"
    },
    "DescribeDefaultClusterParameters": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "DefaultClusterParameters.Marker",
      "result_key": "DefaultClusterParameters.Parameters"
    },
    "DescribeEventSubscriptions": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "EventSubscriptionsList"
    },
    "DescribeEvents": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "Events"
    },
    "DescribeHsmClientCertificates": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "HsmClientCertificates"
    },
    "DescribeHsmConfigurations": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "HsmConfigurations"
    },
    "DescribeOrderableClusterOptions": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "OrderableClusterOptions"
    },
    "DescribeReservedNodeOfferings": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "ReservedNodeOfferings"
    },
    "DescribeReservedNodes": {
      "input_token": "Marker",
      "limit_key": "MaxRecords",
      "output_token": "Marker",
      "result_key": "ReservedNodes"
    }
  }
}
},{}],133:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "ClusterAvailable": {
      "delay": 60,
      "operation": "DescribeClusters",
      "maxAttempts": 30,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Clusters[].ClusterStatus"
        },
        {
          "expected": "deleting",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Clusters[].ClusterStatus"
        },
        {
          "expected": "ClusterNotFound",
          "matcher": "error",
          "state": "retry"
        }
      ]
    },
    "ClusterDeleted": {
      "delay": 60,
      "operation": "DescribeClusters",
      "maxAttempts": 30,
      "acceptors": [
        {
          "expected": "ClusterNotFound",
          "matcher": "error",
          "state": "success"
        },
        {
          "expected": "creating",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Clusters[].ClusterStatus"
        },
        {
          "expected": "modifying",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Clusters[].ClusterStatus"
        }
      ]
    },
    "ClusterRestored": {
      "operation": "DescribeClusters",
      "maxAttempts": 30,
      "delay": 60,
      "acceptors": [
        {
          "state": "success",
          "matcher": "pathAll",
          "argument": "Clusters[].RestoreStatus.Status",
          "expected": "completed"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "Clusters[].ClusterStatus",
          "expected": "deleting"
        }
      ]
    },
    "SnapshotAvailable": {
      "delay": 15,
      "operation": "DescribeClusterSnapshots",
      "maxAttempts": 20,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Snapshots[].Status"
        },
        {
          "expected": "failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Snapshots[].Status"
        },
        {
          "expected": "deleted",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Snapshots[].Status"
        }
      ]
    }
  }
}

},{}],134:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2016-06-27",
    "endpointPrefix": "rekognition",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceFullName": "Amazon Rekognition",
    "serviceId": "Rekognition",
    "signatureVersion": "v4",
    "targetPrefix": "RekognitionService",
    "uid": "rekognition-2016-06-27"
  },
  "operations": {
    "CompareFaces": {
      "input": {
        "type": "structure",
        "required": [
          "SourceImage",
          "TargetImage"
        ],
        "members": {
          "SourceImage": {
            "shape": "S2"
          },
          "TargetImage": {
            "shape": "S2"
          },
          "SimilarityThreshold": {
            "type": "float"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SourceImageFace": {
            "type": "structure",
            "members": {
              "BoundingBox": {
                "shape": "Sb"
              },
              "Confidence": {
                "type": "float"
              }
            }
          },
          "FaceMatches": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Similarity": {
                  "type": "float"
                },
                "Face": {
                  "shape": "Sf"
                }
              }
            }
          },
          "UnmatchedFaces": {
            "type": "list",
            "member": {
              "shape": "Sf"
            }
          },
          "SourceImageOrientationCorrection": {},
          "TargetImageOrientationCorrection": {}
        }
      }
    },
    "CreateCollection": {
      "input": {
        "type": "structure",
        "required": [
          "CollectionId"
        ],
        "members": {
          "CollectionId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StatusCode": {
            "type": "integer"
          },
          "CollectionArn": {},
          "FaceModelVersion": {}
        }
      }
    },
    "CreateStreamProcessor": {
      "input": {
        "type": "structure",
        "required": [
          "Input",
          "Output",
          "Name",
          "Settings",
          "RoleArn"
        ],
        "members": {
          "Input": {
            "shape": "Su"
          },
          "Output": {
            "shape": "Sx"
          },
          "Name": {},
          "Settings": {
            "shape": "S11"
          },
          "RoleArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StreamProcessorArn": {}
        }
      }
    },
    "DeleteCollection": {
      "input": {
        "type": "structure",
        "required": [
          "CollectionId"
        ],
        "members": {
          "CollectionId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StatusCode": {
            "type": "integer"
          }
        }
      }
    },
    "DeleteFaces": {
      "input": {
        "type": "structure",
        "required": [
          "CollectionId",
          "FaceIds"
        ],
        "members": {
          "CollectionId": {},
          "FaceIds": {
            "shape": "S19"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DeletedFaces": {
            "shape": "S19"
          }
        }
      }
    },
    "DeleteStreamProcessor": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DescribeStreamProcessor": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Name": {},
          "StreamProcessorArn": {},
          "Status": {},
          "StatusMessage": {},
          "CreationTimestamp": {
            "type": "timestamp"
          },
          "LastUpdateTimestamp": {
            "type": "timestamp"
          },
          "Input": {
            "shape": "Su"
          },
          "Output": {
            "shape": "Sx"
          },
          "RoleArn": {},
          "Settings": {
            "shape": "S11"
          }
        }
      }
    },
    "DetectFaces": {
      "input": {
        "type": "structure",
        "required": [
          "Image"
        ],
        "members": {
          "Image": {
            "shape": "S2"
          },
          "Attributes": {
            "shape": "S1j"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FaceDetails": {
            "type": "list",
            "member": {
              "shape": "S1n"
            }
          },
          "OrientationCorrection": {}
        }
      }
    },
    "DetectLabels": {
      "input": {
        "type": "structure",
        "required": [
          "Image"
        ],
        "members": {
          "Image": {
            "shape": "S2"
          },
          "MaxLabels": {
            "type": "integer"
          },
          "MinConfidence": {
            "type": "float"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Labels": {
            "type": "list",
            "member": {
              "shape": "S25"
            }
          },
          "OrientationCorrection": {}
        }
      }
    },
    "DetectModerationLabels": {
      "input": {
        "type": "structure",
        "required": [
          "Image"
        ],
        "members": {
          "Image": {
            "shape": "S2"
          },
          "MinConfidence": {
            "type": "float"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ModerationLabels": {
            "type": "list",
            "member": {
              "shape": "S29"
            }
          }
        }
      }
    },
    "DetectText": {
      "input": {
        "type": "structure",
        "required": [
          "Image"
        ],
        "members": {
          "Image": {
            "shape": "S2"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TextDetections": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "DetectedText": {},
                "Type": {},
                "Id": {
                  "type": "integer"
                },
                "ParentId": {
                  "type": "integer"
                },
                "Confidence": {
                  "type": "float"
                },
                "Geometry": {
                  "type": "structure",
                  "members": {
                    "BoundingBox": {
                      "shape": "Sb"
                    },
                    "Polygon": {
                      "type": "list",
                      "member": {
                        "type": "structure",
                        "members": {
                          "X": {
                            "type": "float"
                          },
                          "Y": {
                            "type": "float"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "GetCelebrityInfo": {
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Urls": {
            "shape": "S2l"
          },
          "Name": {}
        }
      }
    },
    "GetCelebrityRecognition": {
      "input": {
        "type": "structure",
        "required": [
          "JobId"
        ],
        "members": {
          "JobId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "SortBy": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "JobStatus": {},
          "StatusMessage": {},
          "VideoMetadata": {
            "shape": "S2v"
          },
          "NextToken": {},
          "Celebrities": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Timestamp": {
                  "type": "long"
                },
                "Celebrity": {
                  "type": "structure",
                  "members": {
                    "Urls": {
                      "shape": "S2l"
                    },
                    "Name": {},
                    "Id": {},
                    "Confidence": {
                      "type": "float"
                    },
                    "BoundingBox": {
                      "shape": "Sb"
                    },
                    "Face": {
                      "shape": "S1n"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "GetContentModeration": {
      "input": {
        "type": "structure",
        "required": [
          "JobId"
        ],
        "members": {
          "JobId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "SortBy": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "JobStatus": {},
          "StatusMessage": {},
          "VideoMetadata": {
            "shape": "S2v"
          },
          "ModerationLabels": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Timestamp": {
                  "type": "long"
                },
                "ModerationLabel": {
                  "shape": "S29"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "GetFaceDetection": {
      "input": {
        "type": "structure",
        "required": [
          "JobId"
        ],
        "members": {
          "JobId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "JobStatus": {},
          "StatusMessage": {},
          "VideoMetadata": {
            "shape": "S2v"
          },
          "NextToken": {},
          "Faces": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Timestamp": {
                  "type": "long"
                },
                "Face": {
                  "shape": "S1n"
                }
              }
            }
          }
        }
      }
    },
    "GetFaceSearch": {
      "input": {
        "type": "structure",
        "required": [
          "JobId"
        ],
        "members": {
          "JobId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "SortBy": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "JobStatus": {},
          "StatusMessage": {},
          "NextToken": {},
          "VideoMetadata": {
            "shape": "S2v"
          },
          "Persons": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Timestamp": {
                  "type": "long"
                },
                "Person": {
                  "shape": "S3f"
                },
                "FaceMatches": {
                  "shape": "S3h"
                }
              }
            }
          }
        }
      }
    },
    "GetLabelDetection": {
      "input": {
        "type": "structure",
        "required": [
          "JobId"
        ],
        "members": {
          "JobId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "SortBy": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "JobStatus": {},
          "StatusMessage": {},
          "VideoMetadata": {
            "shape": "S2v"
          },
          "NextToken": {},
          "Labels": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Timestamp": {
                  "type": "long"
                },
                "Label": {
                  "shape": "S25"
                }
              }
            }
          }
        }
      }
    },
    "GetPersonTracking": {
      "input": {
        "type": "structure",
        "required": [
          "JobId"
        ],
        "members": {
          "JobId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "SortBy": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "JobStatus": {},
          "StatusMessage": {},
          "VideoMetadata": {
            "shape": "S2v"
          },
          "NextToken": {},
          "Persons": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Timestamp": {
                  "type": "long"
                },
                "Person": {
                  "shape": "S3f"
                }
              }
            }
          }
        }
      }
    },
    "IndexFaces": {
      "input": {
        "type": "structure",
        "required": [
          "CollectionId",
          "Image"
        ],
        "members": {
          "CollectionId": {},
          "Image": {
            "shape": "S2"
          },
          "ExternalImageId": {},
          "DetectionAttributes": {
            "shape": "S1j"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FaceRecords": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Face": {
                  "shape": "S3j"
                },
                "FaceDetail": {
                  "shape": "S1n"
                }
              }
            }
          },
          "OrientationCorrection": {},
          "FaceModelVersion": {}
        }
      }
    },
    "ListCollections": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CollectionIds": {
            "type": "list",
            "member": {}
          },
          "NextToken": {},
          "FaceModelVersions": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "ListFaces": {
      "input": {
        "type": "structure",
        "required": [
          "CollectionId"
        ],
        "members": {
          "CollectionId": {},
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Faces": {
            "type": "list",
            "member": {
              "shape": "S3j"
            }
          },
          "NextToken": {},
          "FaceModelVersion": {}
        }
      }
    },
    "ListStreamProcessors": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "StreamProcessors": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "Status": {}
              }
            }
          }
        }
      }
    },
    "RecognizeCelebrities": {
      "input": {
        "type": "structure",
        "required": [
          "Image"
        ],
        "members": {
          "Image": {
            "shape": "S2"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CelebrityFaces": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Urls": {
                  "shape": "S2l"
                },
                "Name": {},
                "Id": {},
                "Face": {
                  "shape": "Sf"
                },
                "MatchConfidence": {
                  "type": "float"
                }
              }
            }
          },
          "UnrecognizedFaces": {
            "type": "list",
            "member": {
              "shape": "Sf"
            }
          },
          "OrientationCorrection": {}
        }
      }
    },
    "SearchFaces": {
      "input": {
        "type": "structure",
        "required": [
          "CollectionId",
          "FaceId"
        ],
        "members": {
          "CollectionId": {},
          "FaceId": {},
          "MaxFaces": {
            "type": "integer"
          },
          "FaceMatchThreshold": {
            "type": "float"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SearchedFaceId": {},
          "FaceMatches": {
            "shape": "S3h"
          },
          "FaceModelVersion": {}
        }
      }
    },
    "SearchFacesByImage": {
      "input": {
        "type": "structure",
        "required": [
          "CollectionId",
          "Image"
        ],
        "members": {
          "CollectionId": {},
          "Image": {
            "shape": "S2"
          },
          "MaxFaces": {
            "type": "integer"
          },
          "FaceMatchThreshold": {
            "type": "float"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SearchedFaceBoundingBox": {
            "shape": "Sb"
          },
          "SearchedFaceConfidence": {
            "type": "float"
          },
          "FaceMatches": {
            "shape": "S3h"
          },
          "FaceModelVersion": {}
        }
      }
    },
    "StartCelebrityRecognition": {
      "input": {
        "type": "structure",
        "required": [
          "Video"
        ],
        "members": {
          "Video": {
            "shape": "S4n"
          },
          "ClientRequestToken": {},
          "NotificationChannel": {
            "shape": "S4p"
          },
          "JobTag": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "JobId": {}
        }
      },
      "idempotent": true
    },
    "StartContentModeration": {
      "input": {
        "type": "structure",
        "required": [
          "Video"
        ],
        "members": {
          "Video": {
            "shape": "S4n"
          },
          "MinConfidence": {
            "type": "float"
          },
          "ClientRequestToken": {},
          "NotificationChannel": {
            "shape": "S4p"
          },
          "JobTag": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "JobId": {}
        }
      },
      "idempotent": true
    },
    "StartFaceDetection": {
      "input": {
        "type": "structure",
        "required": [
          "Video"
        ],
        "members": {
          "Video": {
            "shape": "S4n"
          },
          "ClientRequestToken": {},
          "NotificationChannel": {
            "shape": "S4p"
          },
          "FaceAttributes": {},
          "JobTag": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "JobId": {}
        }
      },
      "idempotent": true
    },
    "StartFaceSearch": {
      "input": {
        "type": "structure",
        "required": [
          "Video",
          "CollectionId"
        ],
        "members": {
          "Video": {
            "shape": "S4n"
          },
          "ClientRequestToken": {},
          "FaceMatchThreshold": {
            "type": "float"
          },
          "CollectionId": {},
          "NotificationChannel": {
            "shape": "S4p"
          },
          "JobTag": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "JobId": {}
        }
      },
      "idempotent": true
    },
    "StartLabelDetection": {
      "input": {
        "type": "structure",
        "required": [
          "Video"
        ],
        "members": {
          "Video": {
            "shape": "S4n"
          },
          "ClientRequestToken": {},
          "MinConfidence": {
            "type": "float"
          },
          "NotificationChannel": {
            "shape": "S4p"
          },
          "JobTag": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "JobId": {}
        }
      },
      "idempotent": true
    },
    "StartPersonTracking": {
      "input": {
        "type": "structure",
        "required": [
          "Video"
        ],
        "members": {
          "Video": {
            "shape": "S4n"
          },
          "ClientRequestToken": {},
          "NotificationChannel": {
            "shape": "S4p"
          },
          "JobTag": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "JobId": {}
        }
      },
      "idempotent": true
    },
    "StartStreamProcessor": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "StopStreamProcessor": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    }
  },
  "shapes": {
    "S2": {
      "type": "structure",
      "members": {
        "Bytes": {
          "type": "blob"
        },
        "S3Object": {
          "shape": "S4"
        }
      }
    },
    "S4": {
      "type": "structure",
      "members": {
        "Bucket": {},
        "Name": {},
        "Version": {}
      }
    },
    "Sb": {
      "type": "structure",
      "members": {
        "Width": {
          "type": "float"
        },
        "Height": {
          "type": "float"
        },
        "Left": {
          "type": "float"
        },
        "Top": {
          "type": "float"
        }
      }
    },
    "Sf": {
      "type": "structure",
      "members": {
        "BoundingBox": {
          "shape": "Sb"
        },
        "Confidence": {
          "type": "float"
        },
        "Landmarks": {
          "shape": "Sg"
        },
        "Pose": {
          "shape": "Sj"
        },
        "Quality": {
          "shape": "Sl"
        }
      }
    },
    "Sg": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Type": {},
          "X": {
            "type": "float"
          },
          "Y": {
            "type": "float"
          }
        }
      }
    },
    "Sj": {
      "type": "structure",
      "members": {
        "Roll": {
          "type": "float"
        },
        "Yaw": {
          "type": "float"
        },
        "Pitch": {
          "type": "float"
        }
      }
    },
    "Sl": {
      "type": "structure",
      "members": {
        "Brightness": {
          "type": "float"
        },
        "Sharpness": {
          "type": "float"
        }
      }
    },
    "Su": {
      "type": "structure",
      "members": {
        "KinesisVideoStream": {
          "type": "structure",
          "members": {
            "Arn": {}
          }
        }
      }
    },
    "Sx": {
      "type": "structure",
      "members": {
        "KinesisDataStream": {
          "type": "structure",
          "members": {
            "Arn": {}
          }
        }
      }
    },
    "S11": {
      "type": "structure",
      "members": {
        "FaceSearch": {
          "type": "structure",
          "members": {
            "CollectionId": {},
            "FaceMatchThreshold": {
              "type": "float"
            }
          }
        }
      }
    },
    "S19": {
      "type": "list",
      "member": {}
    },
    "S1j": {
      "type": "list",
      "member": {}
    },
    "S1n": {
      "type": "structure",
      "members": {
        "BoundingBox": {
          "shape": "Sb"
        },
        "AgeRange": {
          "type": "structure",
          "members": {
            "Low": {
              "type": "integer"
            },
            "High": {
              "type": "integer"
            }
          }
        },
        "Smile": {
          "type": "structure",
          "members": {
            "Value": {
              "type": "boolean"
            },
            "Confidence": {
              "type": "float"
            }
          }
        },
        "Eyeglasses": {
          "type": "structure",
          "members": {
            "Value": {
              "type": "boolean"
            },
            "Confidence": {
              "type": "float"
            }
          }
        },
        "Sunglasses": {
          "type": "structure",
          "members": {
            "Value": {
              "type": "boolean"
            },
            "Confidence": {
              "type": "float"
            }
          }
        },
        "Gender": {
          "type": "structure",
          "members": {
            "Value": {},
            "Confidence": {
              "type": "float"
            }
          }
        },
        "Beard": {
          "type": "structure",
          "members": {
            "Value": {
              "type": "boolean"
            },
            "Confidence": {
              "type": "float"
            }
          }
        },
        "Mustache": {
          "type": "structure",
          "members": {
            "Value": {
              "type": "boolean"
            },
            "Confidence": {
              "type": "float"
            }
          }
        },
        "EyesOpen": {
          "type": "structure",
          "members": {
            "Value": {
              "type": "boolean"
            },
            "Confidence": {
              "type": "float"
            }
          }
        },
        "MouthOpen": {
          "type": "structure",
          "members": {
            "Value": {
              "type": "boolean"
            },
            "Confidence": {
              "type": "float"
            }
          }
        },
        "Emotions": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "Type": {},
              "Confidence": {
                "type": "float"
              }
            }
          }
        },
        "Landmarks": {
          "shape": "Sg"
        },
        "Pose": {
          "shape": "Sj"
        },
        "Quality": {
          "shape": "Sl"
        },
        "Confidence": {
          "type": "float"
        }
      }
    },
    "S25": {
      "type": "structure",
      "members": {
        "Name": {},
        "Confidence": {
          "type": "float"
        }
      }
    },
    "S29": {
      "type": "structure",
      "members": {
        "Confidence": {
          "type": "float"
        },
        "Name": {},
        "ParentName": {}
      }
    },
    "S2l": {
      "type": "list",
      "member": {}
    },
    "S2v": {
      "type": "structure",
      "members": {
        "Codec": {},
        "DurationMillis": {
          "type": "long"
        },
        "Format": {},
        "FrameRate": {
          "type": "float"
        },
        "FrameHeight": {
          "type": "long"
        },
        "FrameWidth": {
          "type": "long"
        }
      }
    },
    "S3f": {
      "type": "structure",
      "members": {
        "Index": {
          "type": "long"
        },
        "BoundingBox": {
          "shape": "Sb"
        },
        "Face": {
          "shape": "S1n"
        }
      }
    },
    "S3h": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Similarity": {
            "type": "float"
          },
          "Face": {
            "shape": "S3j"
          }
        }
      }
    },
    "S3j": {
      "type": "structure",
      "members": {
        "FaceId": {},
        "BoundingBox": {
          "shape": "Sb"
        },
        "ImageId": {},
        "ExternalImageId": {},
        "Confidence": {
          "type": "float"
        }
      }
    },
    "S4n": {
      "type": "structure",
      "members": {
        "S3Object": {
          "shape": "S4"
        }
      }
    },
    "S4p": {
      "type": "structure",
      "required": [
        "SNSTopicArn",
        "RoleArn"
      ],
      "members": {
        "SNSTopicArn": {},
        "RoleArn": {}
      }
    }
  }
}
},{}],135:[function(require,module,exports){
module.exports={
  "pagination": {
    "GetCelebrityRecognition": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken"
    },
    "GetContentModeration": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken"
    },
    "GetFaceDetection": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken"
    },
    "GetFaceSearch": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken"
    },
    "GetLabelDetection": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken"
    },
    "GetPersonTracking": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken"
    },
    "ListCollections": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "CollectionIds"
    },
    "ListFaces": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "Faces"
    },
    "ListStreamProcessors": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken"
    }
  }
}
},{}],136:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2013-04-01",
    "endpointPrefix": "route53",
    "globalEndpoint": "route53.amazonaws.com",
    "protocol": "rest-xml",
    "serviceAbbreviation": "Route 53",
    "serviceFullName": "Amazon Route 53",
    "serviceId": "Route 53",
    "signatureVersion": "v4",
    "uid": "route53-2013-04-01"
  },
  "operations": {
    "AssociateVPCWithHostedZone": {
      "http": {
        "requestUri": "/2013-04-01/hostedzone/{Id}/associatevpc"
      },
      "input": {
        "locationName": "AssociateVPCWithHostedZoneRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "HostedZoneId",
          "VPC"
        ],
        "members": {
          "HostedZoneId": {
            "location": "uri",
            "locationName": "Id"
          },
          "VPC": {
            "shape": "S3"
          },
          "Comment": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "ChangeInfo"
        ],
        "members": {
          "ChangeInfo": {
            "shape": "S8"
          }
        }
      }
    },
    "ChangeResourceRecordSets": {
      "http": {
        "requestUri": "/2013-04-01/hostedzone/{Id}/rrset/"
      },
      "input": {
        "locationName": "ChangeResourceRecordSetsRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "HostedZoneId",
          "ChangeBatch"
        ],
        "members": {
          "HostedZoneId": {
            "location": "uri",
            "locationName": "Id"
          },
          "ChangeBatch": {
            "type": "structure",
            "required": [
              "Changes"
            ],
            "members": {
              "Comment": {},
              "Changes": {
                "type": "list",
                "member": {
                  "locationName": "Change",
                  "type": "structure",
                  "required": [
                    "Action",
                    "ResourceRecordSet"
                  ],
                  "members": {
                    "Action": {},
                    "ResourceRecordSet": {
                      "shape": "Sh"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "ChangeInfo"
        ],
        "members": {
          "ChangeInfo": {
            "shape": "S8"
          }
        }
      }
    },
    "ChangeTagsForResource": {
      "http": {
        "requestUri": "/2013-04-01/tags/{ResourceType}/{ResourceId}"
      },
      "input": {
        "locationName": "ChangeTagsForResourceRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "ResourceType",
          "ResourceId"
        ],
        "members": {
          "ResourceType": {
            "location": "uri",
            "locationName": "ResourceType"
          },
          "ResourceId": {
            "location": "uri",
            "locationName": "ResourceId"
          },
          "AddTags": {
            "shape": "S15"
          },
          "RemoveTagKeys": {
            "type": "list",
            "member": {
              "locationName": "Key"
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "CreateHealthCheck": {
      "http": {
        "requestUri": "/2013-04-01/healthcheck",
        "responseCode": 201
      },
      "input": {
        "locationName": "CreateHealthCheckRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "CallerReference",
          "HealthCheckConfig"
        ],
        "members": {
          "CallerReference": {},
          "HealthCheckConfig": {
            "shape": "S1d"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "HealthCheck",
          "Location"
        ],
        "members": {
          "HealthCheck": {
            "shape": "S1y"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          }
        }
      }
    },
    "CreateHostedZone": {
      "http": {
        "requestUri": "/2013-04-01/hostedzone",
        "responseCode": 201
      },
      "input": {
        "locationName": "CreateHostedZoneRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "Name",
          "CallerReference"
        ],
        "members": {
          "Name": {},
          "VPC": {
            "shape": "S3"
          },
          "CallerReference": {},
          "HostedZoneConfig": {
            "shape": "S2g"
          },
          "DelegationSetId": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "HostedZone",
          "ChangeInfo",
          "DelegationSet",
          "Location"
        ],
        "members": {
          "HostedZone": {
            "shape": "S2j"
          },
          "ChangeInfo": {
            "shape": "S8"
          },
          "DelegationSet": {
            "shape": "S2l"
          },
          "VPC": {
            "shape": "S3"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          }
        }
      }
    },
    "CreateQueryLoggingConfig": {
      "http": {
        "requestUri": "/2013-04-01/queryloggingconfig",
        "responseCode": 201
      },
      "input": {
        "locationName": "CreateQueryLoggingConfigRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "HostedZoneId",
          "CloudWatchLogsLogGroupArn"
        ],
        "members": {
          "HostedZoneId": {},
          "CloudWatchLogsLogGroupArn": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "QueryLoggingConfig",
          "Location"
        ],
        "members": {
          "QueryLoggingConfig": {
            "shape": "S2q"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          }
        }
      }
    },
    "CreateReusableDelegationSet": {
      "http": {
        "requestUri": "/2013-04-01/delegationset",
        "responseCode": 201
      },
      "input": {
        "locationName": "CreateReusableDelegationSetRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "CallerReference"
        ],
        "members": {
          "CallerReference": {},
          "HostedZoneId": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "DelegationSet",
          "Location"
        ],
        "members": {
          "DelegationSet": {
            "shape": "S2l"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          }
        }
      }
    },
    "CreateTrafficPolicy": {
      "http": {
        "requestUri": "/2013-04-01/trafficpolicy",
        "responseCode": 201
      },
      "input": {
        "locationName": "CreateTrafficPolicyRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "Name",
          "Document"
        ],
        "members": {
          "Name": {},
          "Document": {},
          "Comment": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "TrafficPolicy",
          "Location"
        ],
        "members": {
          "TrafficPolicy": {
            "shape": "S2z"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          }
        }
      }
    },
    "CreateTrafficPolicyInstance": {
      "http": {
        "requestUri": "/2013-04-01/trafficpolicyinstance",
        "responseCode": 201
      },
      "input": {
        "locationName": "CreateTrafficPolicyInstanceRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "HostedZoneId",
          "Name",
          "TTL",
          "TrafficPolicyId",
          "TrafficPolicyVersion"
        ],
        "members": {
          "HostedZoneId": {},
          "Name": {},
          "TTL": {
            "type": "long"
          },
          "TrafficPolicyId": {},
          "TrafficPolicyVersion": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "TrafficPolicyInstance",
          "Location"
        ],
        "members": {
          "TrafficPolicyInstance": {
            "shape": "S34"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          }
        }
      }
    },
    "CreateTrafficPolicyVersion": {
      "http": {
        "requestUri": "/2013-04-01/trafficpolicy/{Id}",
        "responseCode": 201
      },
      "input": {
        "locationName": "CreateTrafficPolicyVersionRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "Id",
          "Document"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "Document": {},
          "Comment": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "TrafficPolicy",
          "Location"
        ],
        "members": {
          "TrafficPolicy": {
            "shape": "S2z"
          },
          "Location": {
            "location": "header",
            "locationName": "Location"
          }
        }
      }
    },
    "CreateVPCAssociationAuthorization": {
      "http": {
        "requestUri": "/2013-04-01/hostedzone/{Id}/authorizevpcassociation"
      },
      "input": {
        "locationName": "CreateVPCAssociationAuthorizationRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "HostedZoneId",
          "VPC"
        ],
        "members": {
          "HostedZoneId": {
            "location": "uri",
            "locationName": "Id"
          },
          "VPC": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "HostedZoneId",
          "VPC"
        ],
        "members": {
          "HostedZoneId": {},
          "VPC": {
            "shape": "S3"
          }
        }
      }
    },
    "DeleteHealthCheck": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "HealthCheckId"
        ],
        "members": {
          "HealthCheckId": {
            "location": "uri",
            "locationName": "HealthCheckId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteHostedZone": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2013-04-01/hostedzone/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "ChangeInfo"
        ],
        "members": {
          "ChangeInfo": {
            "shape": "S8"
          }
        }
      }
    },
    "DeleteQueryLoggingConfig": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2013-04-01/queryloggingconfig/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteReusableDelegationSet": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2013-04-01/delegationset/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteTrafficPolicy": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id",
          "Version"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "Version": {
            "location": "uri",
            "locationName": "Version",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteTrafficPolicyInstance": {
      "http": {
        "method": "DELETE",
        "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteVPCAssociationAuthorization": {
      "http": {
        "requestUri": "/2013-04-01/hostedzone/{Id}/deauthorizevpcassociation"
      },
      "input": {
        "locationName": "DeleteVPCAssociationAuthorizationRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "HostedZoneId",
          "VPC"
        ],
        "members": {
          "HostedZoneId": {
            "location": "uri",
            "locationName": "Id"
          },
          "VPC": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DisassociateVPCFromHostedZone": {
      "http": {
        "requestUri": "/2013-04-01/hostedzone/{Id}/disassociatevpc"
      },
      "input": {
        "locationName": "DisassociateVPCFromHostedZoneRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "HostedZoneId",
          "VPC"
        ],
        "members": {
          "HostedZoneId": {
            "location": "uri",
            "locationName": "Id"
          },
          "VPC": {
            "shape": "S3"
          },
          "Comment": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "ChangeInfo"
        ],
        "members": {
          "ChangeInfo": {
            "shape": "S8"
          }
        }
      }
    },
    "GetAccountLimit": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/accountlimit/{Type}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Type"
        ],
        "members": {
          "Type": {
            "location": "uri",
            "locationName": "Type"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Limit",
          "Count"
        ],
        "members": {
          "Limit": {
            "type": "structure",
            "required": [
              "Type",
              "Value"
            ],
            "members": {
              "Type": {},
              "Value": {
                "type": "long"
              }
            }
          },
          "Count": {
            "type": "long"
          }
        }
      }
    },
    "GetChange": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/change/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "ChangeInfo"
        ],
        "members": {
          "ChangeInfo": {
            "shape": "S8"
          }
        }
      }
    },
    "GetCheckerIpRanges": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/checkeripranges"
      },
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "required": [
          "CheckerIpRanges"
        ],
        "members": {
          "CheckerIpRanges": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "GetGeoLocation": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/geolocation"
      },
      "input": {
        "type": "structure",
        "members": {
          "ContinentCode": {
            "location": "querystring",
            "locationName": "continentcode"
          },
          "CountryCode": {
            "location": "querystring",
            "locationName": "countrycode"
          },
          "SubdivisionCode": {
            "location": "querystring",
            "locationName": "subdivisioncode"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "GeoLocationDetails"
        ],
        "members": {
          "GeoLocationDetails": {
            "shape": "S46"
          }
        }
      }
    },
    "GetHealthCheck": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "HealthCheckId"
        ],
        "members": {
          "HealthCheckId": {
            "location": "uri",
            "locationName": "HealthCheckId"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "HealthCheck"
        ],
        "members": {
          "HealthCheck": {
            "shape": "S1y"
          }
        }
      }
    },
    "GetHealthCheckCount": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/healthcheckcount"
      },
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "required": [
          "HealthCheckCount"
        ],
        "members": {
          "HealthCheckCount": {
            "type": "long"
          }
        }
      }
    },
    "GetHealthCheckLastFailureReason": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}/lastfailurereason"
      },
      "input": {
        "type": "structure",
        "required": [
          "HealthCheckId"
        ],
        "members": {
          "HealthCheckId": {
            "location": "uri",
            "locationName": "HealthCheckId"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "HealthCheckObservations"
        ],
        "members": {
          "HealthCheckObservations": {
            "shape": "S4h"
          }
        }
      }
    },
    "GetHealthCheckStatus": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}/status"
      },
      "input": {
        "type": "structure",
        "required": [
          "HealthCheckId"
        ],
        "members": {
          "HealthCheckId": {
            "location": "uri",
            "locationName": "HealthCheckId"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "HealthCheckObservations"
        ],
        "members": {
          "HealthCheckObservations": {
            "shape": "S4h"
          }
        }
      }
    },
    "GetHostedZone": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/hostedzone/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "HostedZone"
        ],
        "members": {
          "HostedZone": {
            "shape": "S2j"
          },
          "DelegationSet": {
            "shape": "S2l"
          },
          "VPCs": {
            "shape": "S4p"
          }
        }
      }
    },
    "GetHostedZoneCount": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/hostedzonecount"
      },
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "required": [
          "HostedZoneCount"
        ],
        "members": {
          "HostedZoneCount": {
            "type": "long"
          }
        }
      }
    },
    "GetHostedZoneLimit": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/hostedzonelimit/{Id}/{Type}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Type",
          "HostedZoneId"
        ],
        "members": {
          "Type": {
            "location": "uri",
            "locationName": "Type"
          },
          "HostedZoneId": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Limit",
          "Count"
        ],
        "members": {
          "Limit": {
            "type": "structure",
            "required": [
              "Type",
              "Value"
            ],
            "members": {
              "Type": {},
              "Value": {
                "type": "long"
              }
            }
          },
          "Count": {
            "type": "long"
          }
        }
      }
    },
    "GetQueryLoggingConfig": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/queryloggingconfig/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "QueryLoggingConfig"
        ],
        "members": {
          "QueryLoggingConfig": {
            "shape": "S2q"
          }
        }
      }
    },
    "GetReusableDelegationSet": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/delegationset/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "DelegationSet"
        ],
        "members": {
          "DelegationSet": {
            "shape": "S2l"
          }
        }
      }
    },
    "GetReusableDelegationSetLimit": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/reusabledelegationsetlimit/{Id}/{Type}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Type",
          "DelegationSetId"
        ],
        "members": {
          "Type": {
            "location": "uri",
            "locationName": "Type"
          },
          "DelegationSetId": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Limit",
          "Count"
        ],
        "members": {
          "Limit": {
            "type": "structure",
            "required": [
              "Type",
              "Value"
            ],
            "members": {
              "Type": {},
              "Value": {
                "type": "long"
              }
            }
          },
          "Count": {
            "type": "long"
          }
        }
      }
    },
    "GetTrafficPolicy": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id",
          "Version"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "Version": {
            "location": "uri",
            "locationName": "Version",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "TrafficPolicy"
        ],
        "members": {
          "TrafficPolicy": {
            "shape": "S2z"
          }
        }
      }
    },
    "GetTrafficPolicyInstance": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "TrafficPolicyInstance"
        ],
        "members": {
          "TrafficPolicyInstance": {
            "shape": "S34"
          }
        }
      }
    },
    "GetTrafficPolicyInstanceCount": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/trafficpolicyinstancecount"
      },
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "required": [
          "TrafficPolicyInstanceCount"
        ],
        "members": {
          "TrafficPolicyInstanceCount": {
            "type": "integer"
          }
        }
      }
    },
    "ListGeoLocations": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/geolocations"
      },
      "input": {
        "type": "structure",
        "members": {
          "StartContinentCode": {
            "location": "querystring",
            "locationName": "startcontinentcode"
          },
          "StartCountryCode": {
            "location": "querystring",
            "locationName": "startcountrycode"
          },
          "StartSubdivisionCode": {
            "location": "querystring",
            "locationName": "startsubdivisioncode"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "maxitems"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "GeoLocationDetailsList",
          "IsTruncated",
          "MaxItems"
        ],
        "members": {
          "GeoLocationDetailsList": {
            "type": "list",
            "member": {
              "shape": "S46",
              "locationName": "GeoLocationDetails"
            }
          },
          "IsTruncated": {
            "type": "boolean"
          },
          "NextContinentCode": {},
          "NextCountryCode": {},
          "NextSubdivisionCode": {},
          "MaxItems": {}
        }
      }
    },
    "ListHealthChecks": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/healthcheck"
      },
      "input": {
        "type": "structure",
        "members": {
          "Marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "maxitems"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "HealthChecks",
          "Marker",
          "IsTruncated",
          "MaxItems"
        ],
        "members": {
          "HealthChecks": {
            "type": "list",
            "member": {
              "shape": "S1y",
              "locationName": "HealthCheck"
            }
          },
          "Marker": {},
          "IsTruncated": {
            "type": "boolean"
          },
          "NextMarker": {},
          "MaxItems": {}
        }
      }
    },
    "ListHostedZones": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/hostedzone"
      },
      "input": {
        "type": "structure",
        "members": {
          "Marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "maxitems"
          },
          "DelegationSetId": {
            "location": "querystring",
            "locationName": "delegationsetid"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "HostedZones",
          "Marker",
          "IsTruncated",
          "MaxItems"
        ],
        "members": {
          "HostedZones": {
            "shape": "S5n"
          },
          "Marker": {},
          "IsTruncated": {
            "type": "boolean"
          },
          "NextMarker": {},
          "MaxItems": {}
        }
      }
    },
    "ListHostedZonesByName": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/hostedzonesbyname"
      },
      "input": {
        "type": "structure",
        "members": {
          "DNSName": {
            "location": "querystring",
            "locationName": "dnsname"
          },
          "HostedZoneId": {
            "location": "querystring",
            "locationName": "hostedzoneid"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "maxitems"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "HostedZones",
          "IsTruncated",
          "MaxItems"
        ],
        "members": {
          "HostedZones": {
            "shape": "S5n"
          },
          "DNSName": {},
          "HostedZoneId": {},
          "IsTruncated": {
            "type": "boolean"
          },
          "NextDNSName": {},
          "NextHostedZoneId": {},
          "MaxItems": {}
        }
      }
    },
    "ListQueryLoggingConfigs": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/queryloggingconfig"
      },
      "input": {
        "type": "structure",
        "members": {
          "HostedZoneId": {
            "location": "querystring",
            "locationName": "hostedzoneid"
          },
          "NextToken": {
            "location": "querystring",
            "locationName": "nexttoken"
          },
          "MaxResults": {
            "location": "querystring",
            "locationName": "maxresults"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "QueryLoggingConfigs"
        ],
        "members": {
          "QueryLoggingConfigs": {
            "type": "list",
            "member": {
              "shape": "S2q",
              "locationName": "QueryLoggingConfig"
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListResourceRecordSets": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/hostedzone/{Id}/rrset"
      },
      "input": {
        "type": "structure",
        "required": [
          "HostedZoneId"
        ],
        "members": {
          "HostedZoneId": {
            "location": "uri",
            "locationName": "Id"
          },
          "StartRecordName": {
            "location": "querystring",
            "locationName": "name"
          },
          "StartRecordType": {
            "location": "querystring",
            "locationName": "type"
          },
          "StartRecordIdentifier": {
            "location": "querystring",
            "locationName": "identifier"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "maxitems"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "ResourceRecordSets",
          "IsTruncated",
          "MaxItems"
        ],
        "members": {
          "ResourceRecordSets": {
            "type": "list",
            "member": {
              "shape": "Sh",
              "locationName": "ResourceRecordSet"
            }
          },
          "IsTruncated": {
            "type": "boolean"
          },
          "NextRecordName": {},
          "NextRecordType": {},
          "NextRecordIdentifier": {},
          "MaxItems": {}
        }
      }
    },
    "ListReusableDelegationSets": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/delegationset"
      },
      "input": {
        "type": "structure",
        "members": {
          "Marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "maxitems"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "DelegationSets",
          "Marker",
          "IsTruncated",
          "MaxItems"
        ],
        "members": {
          "DelegationSets": {
            "type": "list",
            "member": {
              "shape": "S2l",
              "locationName": "DelegationSet"
            }
          },
          "Marker": {},
          "IsTruncated": {
            "type": "boolean"
          },
          "NextMarker": {},
          "MaxItems": {}
        }
      }
    },
    "ListTagsForResource": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/tags/{ResourceType}/{ResourceId}"
      },
      "input": {
        "type": "structure",
        "required": [
          "ResourceType",
          "ResourceId"
        ],
        "members": {
          "ResourceType": {
            "location": "uri",
            "locationName": "ResourceType"
          },
          "ResourceId": {
            "location": "uri",
            "locationName": "ResourceId"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "ResourceTagSet"
        ],
        "members": {
          "ResourceTagSet": {
            "shape": "S63"
          }
        }
      }
    },
    "ListTagsForResources": {
      "http": {
        "requestUri": "/2013-04-01/tags/{ResourceType}"
      },
      "input": {
        "locationName": "ListTagsForResourcesRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "ResourceType",
          "ResourceIds"
        ],
        "members": {
          "ResourceType": {
            "location": "uri",
            "locationName": "ResourceType"
          },
          "ResourceIds": {
            "type": "list",
            "member": {
              "locationName": "ResourceId"
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "ResourceTagSets"
        ],
        "members": {
          "ResourceTagSets": {
            "type": "list",
            "member": {
              "shape": "S63",
              "locationName": "ResourceTagSet"
            }
          }
        }
      }
    },
    "ListTrafficPolicies": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/trafficpolicies"
      },
      "input": {
        "type": "structure",
        "members": {
          "TrafficPolicyIdMarker": {
            "location": "querystring",
            "locationName": "trafficpolicyid"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "maxitems"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "TrafficPolicySummaries",
          "IsTruncated",
          "TrafficPolicyIdMarker",
          "MaxItems"
        ],
        "members": {
          "TrafficPolicySummaries": {
            "type": "list",
            "member": {
              "locationName": "TrafficPolicySummary",
              "type": "structure",
              "required": [
                "Id",
                "Name",
                "Type",
                "LatestVersion",
                "TrafficPolicyCount"
              ],
              "members": {
                "Id": {},
                "Name": {},
                "Type": {},
                "LatestVersion": {
                  "type": "integer"
                },
                "TrafficPolicyCount": {
                  "type": "integer"
                }
              }
            }
          },
          "IsTruncated": {
            "type": "boolean"
          },
          "TrafficPolicyIdMarker": {},
          "MaxItems": {}
        }
      }
    },
    "ListTrafficPolicyInstances": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/trafficpolicyinstances"
      },
      "input": {
        "type": "structure",
        "members": {
          "HostedZoneIdMarker": {
            "location": "querystring",
            "locationName": "hostedzoneid"
          },
          "TrafficPolicyInstanceNameMarker": {
            "location": "querystring",
            "locationName": "trafficpolicyinstancename"
          },
          "TrafficPolicyInstanceTypeMarker": {
            "location": "querystring",
            "locationName": "trafficpolicyinstancetype"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "maxitems"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "TrafficPolicyInstances",
          "IsTruncated",
          "MaxItems"
        ],
        "members": {
          "TrafficPolicyInstances": {
            "shape": "S6e"
          },
          "HostedZoneIdMarker": {},
          "TrafficPolicyInstanceNameMarker": {},
          "TrafficPolicyInstanceTypeMarker": {},
          "IsTruncated": {
            "type": "boolean"
          },
          "MaxItems": {}
        }
      }
    },
    "ListTrafficPolicyInstancesByHostedZone": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/trafficpolicyinstances/hostedzone"
      },
      "input": {
        "type": "structure",
        "required": [
          "HostedZoneId"
        ],
        "members": {
          "HostedZoneId": {
            "location": "querystring",
            "locationName": "id"
          },
          "TrafficPolicyInstanceNameMarker": {
            "location": "querystring",
            "locationName": "trafficpolicyinstancename"
          },
          "TrafficPolicyInstanceTypeMarker": {
            "location": "querystring",
            "locationName": "trafficpolicyinstancetype"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "maxitems"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "TrafficPolicyInstances",
          "IsTruncated",
          "MaxItems"
        ],
        "members": {
          "TrafficPolicyInstances": {
            "shape": "S6e"
          },
          "TrafficPolicyInstanceNameMarker": {},
          "TrafficPolicyInstanceTypeMarker": {},
          "IsTruncated": {
            "type": "boolean"
          },
          "MaxItems": {}
        }
      }
    },
    "ListTrafficPolicyInstancesByPolicy": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/trafficpolicyinstances/trafficpolicy"
      },
      "input": {
        "type": "structure",
        "required": [
          "TrafficPolicyId",
          "TrafficPolicyVersion"
        ],
        "members": {
          "TrafficPolicyId": {
            "location": "querystring",
            "locationName": "id"
          },
          "TrafficPolicyVersion": {
            "location": "querystring",
            "locationName": "version",
            "type": "integer"
          },
          "HostedZoneIdMarker": {
            "location": "querystring",
            "locationName": "hostedzoneid"
          },
          "TrafficPolicyInstanceNameMarker": {
            "location": "querystring",
            "locationName": "trafficpolicyinstancename"
          },
          "TrafficPolicyInstanceTypeMarker": {
            "location": "querystring",
            "locationName": "trafficpolicyinstancetype"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "maxitems"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "TrafficPolicyInstances",
          "IsTruncated",
          "MaxItems"
        ],
        "members": {
          "TrafficPolicyInstances": {
            "shape": "S6e"
          },
          "HostedZoneIdMarker": {},
          "TrafficPolicyInstanceNameMarker": {},
          "TrafficPolicyInstanceTypeMarker": {},
          "IsTruncated": {
            "type": "boolean"
          },
          "MaxItems": {}
        }
      }
    },
    "ListTrafficPolicyVersions": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/trafficpolicies/{Id}/versions"
      },
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "TrafficPolicyVersionMarker": {
            "location": "querystring",
            "locationName": "trafficpolicyversion"
          },
          "MaxItems": {
            "location": "querystring",
            "locationName": "maxitems"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "TrafficPolicies",
          "IsTruncated",
          "TrafficPolicyVersionMarker",
          "MaxItems"
        ],
        "members": {
          "TrafficPolicies": {
            "type": "list",
            "member": {
              "shape": "S2z",
              "locationName": "TrafficPolicy"
            }
          },
          "IsTruncated": {
            "type": "boolean"
          },
          "TrafficPolicyVersionMarker": {},
          "MaxItems": {}
        }
      }
    },
    "ListVPCAssociationAuthorizations": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/hostedzone/{Id}/authorizevpcassociation"
      },
      "input": {
        "type": "structure",
        "required": [
          "HostedZoneId"
        ],
        "members": {
          "HostedZoneId": {
            "location": "uri",
            "locationName": "Id"
          },
          "NextToken": {
            "location": "querystring",
            "locationName": "nexttoken"
          },
          "MaxResults": {
            "location": "querystring",
            "locationName": "maxresults"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "HostedZoneId",
          "VPCs"
        ],
        "members": {
          "HostedZoneId": {},
          "NextToken": {},
          "VPCs": {
            "shape": "S4p"
          }
        }
      }
    },
    "TestDNSAnswer": {
      "http": {
        "method": "GET",
        "requestUri": "/2013-04-01/testdnsanswer"
      },
      "input": {
        "type": "structure",
        "required": [
          "HostedZoneId",
          "RecordName",
          "RecordType"
        ],
        "members": {
          "HostedZoneId": {
            "location": "querystring",
            "locationName": "hostedzoneid"
          },
          "RecordName": {
            "location": "querystring",
            "locationName": "recordname"
          },
          "RecordType": {
            "location": "querystring",
            "locationName": "recordtype"
          },
          "ResolverIP": {
            "location": "querystring",
            "locationName": "resolverip"
          },
          "EDNS0ClientSubnetIP": {
            "location": "querystring",
            "locationName": "edns0clientsubnetip"
          },
          "EDNS0ClientSubnetMask": {
            "location": "querystring",
            "locationName": "edns0clientsubnetmask"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Nameserver",
          "RecordName",
          "RecordType",
          "RecordData",
          "ResponseCode",
          "Protocol"
        ],
        "members": {
          "Nameserver": {},
          "RecordName": {},
          "RecordType": {},
          "RecordData": {
            "type": "list",
            "member": {
              "locationName": "RecordDataEntry"
            }
          },
          "ResponseCode": {},
          "Protocol": {}
        }
      }
    },
    "UpdateHealthCheck": {
      "http": {
        "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}"
      },
      "input": {
        "locationName": "UpdateHealthCheckRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "HealthCheckId"
        ],
        "members": {
          "HealthCheckId": {
            "location": "uri",
            "locationName": "HealthCheckId"
          },
          "HealthCheckVersion": {
            "type": "long"
          },
          "IPAddress": {},
          "Port": {
            "type": "integer"
          },
          "ResourcePath": {},
          "FullyQualifiedDomainName": {},
          "SearchString": {},
          "FailureThreshold": {
            "type": "integer"
          },
          "Inverted": {
            "type": "boolean"
          },
          "HealthThreshold": {
            "type": "integer"
          },
          "ChildHealthChecks": {
            "shape": "S1p"
          },
          "EnableSNI": {
            "type": "boolean"
          },
          "Regions": {
            "shape": "S1r"
          },
          "AlarmIdentifier": {
            "shape": "S1t"
          },
          "InsufficientDataHealthStatus": {},
          "ResetElements": {
            "type": "list",
            "member": {
              "locationName": "ResettableElementName"
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "HealthCheck"
        ],
        "members": {
          "HealthCheck": {
            "shape": "S1y"
          }
        }
      }
    },
    "UpdateHostedZoneComment": {
      "http": {
        "requestUri": "/2013-04-01/hostedzone/{Id}"
      },
      "input": {
        "locationName": "UpdateHostedZoneCommentRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "Comment": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "HostedZone"
        ],
        "members": {
          "HostedZone": {
            "shape": "S2j"
          }
        }
      }
    },
    "UpdateTrafficPolicyComment": {
      "http": {
        "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}"
      },
      "input": {
        "locationName": "UpdateTrafficPolicyCommentRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "Id",
          "Version",
          "Comment"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "Version": {
            "location": "uri",
            "locationName": "Version",
            "type": "integer"
          },
          "Comment": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "TrafficPolicy"
        ],
        "members": {
          "TrafficPolicy": {
            "shape": "S2z"
          }
        }
      }
    },
    "UpdateTrafficPolicyInstance": {
      "http": {
        "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}"
      },
      "input": {
        "locationName": "UpdateTrafficPolicyInstanceRequest",
        "xmlNamespace": {
          "uri": "https://route53.amazonaws.com/doc/2013-04-01/"
        },
        "type": "structure",
        "required": [
          "Id",
          "TTL",
          "TrafficPolicyId",
          "TrafficPolicyVersion"
        ],
        "members": {
          "Id": {
            "location": "uri",
            "locationName": "Id"
          },
          "TTL": {
            "type": "long"
          },
          "TrafficPolicyId": {},
          "TrafficPolicyVersion": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "TrafficPolicyInstance"
        ],
        "members": {
          "TrafficPolicyInstance": {
            "shape": "S34"
          }
        }
      }
    }
  },
  "shapes": {
    "S3": {
      "type": "structure",
      "members": {
        "VPCRegion": {},
        "VPCId": {}
      }
    },
    "S8": {
      "type": "structure",
      "required": [
        "Id",
        "Status",
        "SubmittedAt"
      ],
      "members": {
        "Id": {},
        "Status": {},
        "SubmittedAt": {
          "type": "timestamp"
        },
        "Comment": {}
      }
    },
    "Sh": {
      "type": "structure",
      "required": [
        "Name",
        "Type"
      ],
      "members": {
        "Name": {},
        "Type": {},
        "SetIdentifier": {},
        "Weight": {
          "type": "long"
        },
        "Region": {},
        "GeoLocation": {
          "type": "structure",
          "members": {
            "ContinentCode": {},
            "CountryCode": {},
            "SubdivisionCode": {}
          }
        },
        "Failover": {},
        "MultiValueAnswer": {
          "type": "boolean"
        },
        "TTL": {
          "type": "long"
        },
        "ResourceRecords": {
          "type": "list",
          "member": {
            "locationName": "ResourceRecord",
            "type": "structure",
            "required": [
              "Value"
            ],
            "members": {
              "Value": {}
            }
          }
        },
        "AliasTarget": {
          "type": "structure",
          "required": [
            "HostedZoneId",
            "DNSName",
            "EvaluateTargetHealth"
          ],
          "members": {
            "HostedZoneId": {},
            "DNSName": {},
            "EvaluateTargetHealth": {
              "type": "boolean"
            }
          }
        },
        "HealthCheckId": {},
        "TrafficPolicyInstanceId": {}
      }
    },
    "S15": {
      "type": "list",
      "member": {
        "locationName": "Tag",
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "S1d": {
      "type": "structure",
      "required": [
        "Type"
      ],
      "members": {
        "IPAddress": {},
        "Port": {
          "type": "integer"
        },
        "Type": {},
        "ResourcePath": {},
        "FullyQualifiedDomainName": {},
        "SearchString": {},
        "RequestInterval": {
          "type": "integer"
        },
        "FailureThreshold": {
          "type": "integer"
        },
        "MeasureLatency": {
          "type": "boolean"
        },
        "Inverted": {
          "type": "boolean"
        },
        "HealthThreshold": {
          "type": "integer"
        },
        "ChildHealthChecks": {
          "shape": "S1p"
        },
        "EnableSNI": {
          "type": "boolean"
        },
        "Regions": {
          "shape": "S1r"
        },
        "AlarmIdentifier": {
          "shape": "S1t"
        },
        "InsufficientDataHealthStatus": {}
      }
    },
    "S1p": {
      "type": "list",
      "member": {
        "locationName": "ChildHealthCheck"
      }
    },
    "S1r": {
      "type": "list",
      "member": {
        "locationName": "Region"
      }
    },
    "S1t": {
      "type": "structure",
      "required": [
        "Region",
        "Name"
      ],
      "members": {
        "Region": {},
        "Name": {}
      }
    },
    "S1y": {
      "type": "structure",
      "required": [
        "Id",
        "CallerReference",
        "HealthCheckConfig",
        "HealthCheckVersion"
      ],
      "members": {
        "Id": {},
        "CallerReference": {},
        "LinkedService": {
          "shape": "S1z"
        },
        "HealthCheckConfig": {
          "shape": "S1d"
        },
        "HealthCheckVersion": {
          "type": "long"
        },
        "CloudWatchAlarmConfiguration": {
          "type": "structure",
          "required": [
            "EvaluationPeriods",
            "Threshold",
            "ComparisonOperator",
            "Period",
            "MetricName",
            "Namespace",
            "Statistic"
          ],
          "members": {
            "EvaluationPeriods": {
              "type": "integer"
            },
            "Threshold": {
              "type": "double"
            },
            "ComparisonOperator": {},
            "Period": {
              "type": "integer"
            },
            "MetricName": {},
            "Namespace": {},
            "Statistic": {},
            "Dimensions": {
              "type": "list",
              "member": {
                "locationName": "Dimension",
                "type": "structure",
                "required": [
                  "Name",
                  "Value"
                ],
                "members": {
                  "Name": {},
                  "Value": {}
                }
              }
            }
          }
        }
      }
    },
    "S1z": {
      "type": "structure",
      "members": {
        "ServicePrincipal": {},
        "Description": {}
      }
    },
    "S2g": {
      "type": "structure",
      "members": {
        "Comment": {},
        "PrivateZone": {
          "type": "boolean"
        }
      }
    },
    "S2j": {
      "type": "structure",
      "required": [
        "Id",
        "Name",
        "CallerReference"
      ],
      "members": {
        "Id": {},
        "Name": {},
        "CallerReference": {},
        "Config": {
          "shape": "S2g"
        },
        "ResourceRecordSetCount": {
          "type": "long"
        },
        "LinkedService": {
          "shape": "S1z"
        }
      }
    },
    "S2l": {
      "type": "structure",
      "required": [
        "NameServers"
      ],
      "members": {
        "Id": {},
        "CallerReference": {},
        "NameServers": {
          "type": "list",
          "member": {
            "locationName": "NameServer"
          }
        }
      }
    },
    "S2q": {
      "type": "structure",
      "required": [
        "Id",
        "HostedZoneId",
        "CloudWatchLogsLogGroupArn"
      ],
      "members": {
        "Id": {},
        "HostedZoneId": {},
        "CloudWatchLogsLogGroupArn": {}
      }
    },
    "S2z": {
      "type": "structure",
      "required": [
        "Id",
        "Version",
        "Name",
        "Type",
        "Document"
      ],
      "members": {
        "Id": {},
        "Version": {
          "type": "integer"
        },
        "Name": {},
        "Type": {},
        "Document": {},
        "Comment": {}
      }
    },
    "S34": {
      "type": "structure",
      "required": [
        "Id",
        "HostedZoneId",
        "Name",
        "TTL",
        "State",
        "Message",
        "TrafficPolicyId",
        "TrafficPolicyVersion",
        "TrafficPolicyType"
      ],
      "members": {
        "Id": {},
        "HostedZoneId": {},
        "Name": {},
        "TTL": {
          "type": "long"
        },
        "State": {},
        "Message": {},
        "TrafficPolicyId": {},
        "TrafficPolicyVersion": {
          "type": "integer"
        },
        "TrafficPolicyType": {}
      }
    },
    "S46": {
      "type": "structure",
      "members": {
        "ContinentCode": {},
        "ContinentName": {},
        "CountryCode": {},
        "CountryName": {},
        "SubdivisionCode": {},
        "SubdivisionName": {}
      }
    },
    "S4h": {
      "type": "list",
      "member": {
        "locationName": "HealthCheckObservation",
        "type": "structure",
        "members": {
          "Region": {},
          "IPAddress": {},
          "StatusReport": {
            "type": "structure",
            "members": {
              "Status": {},
              "CheckedTime": {
                "type": "timestamp"
              }
            }
          }
        }
      }
    },
    "S4p": {
      "type": "list",
      "member": {
        "shape": "S3",
        "locationName": "VPC"
      }
    },
    "S5n": {
      "type": "list",
      "member": {
        "shape": "S2j",
        "locationName": "HostedZone"
      }
    },
    "S63": {
      "type": "structure",
      "members": {
        "ResourceType": {},
        "ResourceId": {},
        "Tags": {
          "shape": "S15"
        }
      }
    },
    "S6e": {
      "type": "list",
      "member": {
        "shape": "S34",
        "locationName": "TrafficPolicyInstance"
      }
    }
  }
}
},{}],137:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListHealthChecks": {
      "input_token": "Marker",
      "limit_key": "MaxItems",
      "more_results": "IsTruncated",
      "output_token": "NextMarker",
      "result_key": "HealthChecks"
    },
    "ListHostedZones": {
      "input_token": "Marker",
      "limit_key": "MaxItems",
      "more_results": "IsTruncated",
      "output_token": "NextMarker",
      "result_key": "HostedZones"
    },
    "ListResourceRecordSets": {
      "input_token": [
        "StartRecordName",
        "StartRecordType",
        "StartRecordIdentifier"
      ],
      "limit_key": "MaxItems",
      "more_results": "IsTruncated",
      "output_token": [
        "NextRecordName",
        "NextRecordType",
        "NextRecordIdentifier"
      ],
      "result_key": "ResourceRecordSets"
    }
  }
}
},{}],138:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "ResourceRecordSetsChanged": {
      "delay": 30,
      "maxAttempts": 60,
      "operation": "GetChange",
      "acceptors": [
        {
          "matcher": "path",
          "expected": "INSYNC",
          "argument": "ChangeInfo.Status",
          "state": "success"
        }
      ]
    }
  }
}

},{}],139:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2014-05-15",
    "endpointPrefix": "route53domains",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceFullName": "Amazon Route 53 Domains",
    "signatureVersion": "v4",
    "targetPrefix": "Route53Domains_v20140515",
    "uid": "route53domains-2014-05-15"
  },
  "operations": {
    "CheckDomainAvailability": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName"
        ],
        "members": {
          "DomainName": {},
          "IdnLangCode": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Availability"
        ],
        "members": {
          "Availability": {}
        }
      }
    },
    "CheckDomainTransferability": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName"
        ],
        "members": {
          "DomainName": {},
          "AuthCode": {
            "shape": "S7"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Transferability"
        ],
        "members": {
          "Transferability": {
            "type": "structure",
            "members": {
              "Transferable": {}
            }
          }
        }
      }
    },
    "DeleteTagsForDomain": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName",
          "TagsToDelete"
        ],
        "members": {
          "DomainName": {},
          "TagsToDelete": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DisableDomainAutoRenew": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName"
        ],
        "members": {
          "DomainName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DisableDomainTransferLock": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName"
        ],
        "members": {
          "DomainName": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "OperationId"
        ],
        "members": {
          "OperationId": {}
        }
      }
    },
    "EnableDomainAutoRenew": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName"
        ],
        "members": {
          "DomainName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "EnableDomainTransferLock": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName"
        ],
        "members": {
          "DomainName": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "OperationId"
        ],
        "members": {
          "OperationId": {}
        }
      }
    },
    "GetContactReachabilityStatus": {
      "input": {
        "type": "structure",
        "members": {
          "domainName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "domainName": {},
          "status": {}
        }
      }
    },
    "GetDomainDetail": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName"
        ],
        "members": {
          "DomainName": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "DomainName",
          "Nameservers",
          "AdminContact",
          "RegistrantContact",
          "TechContact"
        ],
        "members": {
          "DomainName": {},
          "Nameservers": {
            "shape": "St"
          },
          "AutoRenew": {
            "type": "boolean"
          },
          "AdminContact": {
            "shape": "Sz"
          },
          "RegistrantContact": {
            "shape": "Sz"
          },
          "TechContact": {
            "shape": "Sz"
          },
          "AdminPrivacy": {
            "type": "boolean"
          },
          "RegistrantPrivacy": {
            "type": "boolean"
          },
          "TechPrivacy": {
            "type": "boolean"
          },
          "RegistrarName": {},
          "WhoIsServer": {},
          "RegistrarUrl": {},
          "AbuseContactEmail": {},
          "AbuseContactPhone": {},
          "RegistryDomainId": {},
          "CreationDate": {
            "type": "timestamp"
          },
          "UpdatedDate": {
            "type": "timestamp"
          },
          "ExpirationDate": {
            "type": "timestamp"
          },
          "Reseller": {},
          "DnsSec": {},
          "StatusList": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "GetDomainSuggestions": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName",
          "SuggestionCount",
          "OnlyAvailable"
        ],
        "members": {
          "DomainName": {},
          "SuggestionCount": {
            "type": "integer"
          },
          "OnlyAvailable": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SuggestionsList": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "DomainName": {},
                "Availability": {}
              }
            }
          }
        }
      }
    },
    "GetOperationDetail": {
      "input": {
        "type": "structure",
        "required": [
          "OperationId"
        ],
        "members": {
          "OperationId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "OperationId": {},
          "Status": {},
          "Message": {},
          "DomainName": {},
          "Type": {},
          "SubmittedDate": {
            "type": "timestamp"
          }
        }
      }
    },
    "ListDomains": {
      "input": {
        "type": "structure",
        "members": {
          "Marker": {},
          "MaxItems": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Domains"
        ],
        "members": {
          "Domains": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "DomainName"
              ],
              "members": {
                "DomainName": {},
                "AutoRenew": {
                  "type": "boolean"
                },
                "TransferLock": {
                  "type": "boolean"
                },
                "Expiry": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextPageMarker": {}
        }
      }
    },
    "ListOperations": {
      "input": {
        "type": "structure",
        "members": {
          "Marker": {},
          "MaxItems": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "Operations"
        ],
        "members": {
          "Operations": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "OperationId",
                "Status",
                "Type",
                "SubmittedDate"
              ],
              "members": {
                "OperationId": {},
                "Status": {},
                "Type": {},
                "SubmittedDate": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextPageMarker": {}
        }
      }
    },
    "ListTagsForDomain": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName"
        ],
        "members": {
          "DomainName": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "TagList"
        ],
        "members": {
          "TagList": {
            "shape": "S29"
          }
        }
      }
    },
    "RegisterDomain": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName",
          "DurationInYears",
          "AdminContact",
          "RegistrantContact",
          "TechContact"
        ],
        "members": {
          "DomainName": {},
          "IdnLangCode": {},
          "DurationInYears": {
            "type": "integer"
          },
          "AutoRenew": {
            "type": "boolean"
          },
          "AdminContact": {
            "shape": "Sz"
          },
          "RegistrantContact": {
            "shape": "Sz"
          },
          "TechContact": {
            "shape": "Sz"
          },
          "PrivacyProtectAdminContact": {
            "type": "boolean"
          },
          "PrivacyProtectRegistrantContact": {
            "type": "boolean"
          },
          "PrivacyProtectTechContact": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "OperationId"
        ],
        "members": {
          "OperationId": {}
        }
      }
    },
    "RenewDomain": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName",
          "CurrentExpiryYear"
        ],
        "members": {
          "DomainName": {},
          "DurationInYears": {
            "type": "integer"
          },
          "CurrentExpiryYear": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "OperationId"
        ],
        "members": {
          "OperationId": {}
        }
      }
    },
    "ResendContactReachabilityEmail": {
      "input": {
        "type": "structure",
        "members": {
          "domainName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "domainName": {},
          "emailAddress": {},
          "isAlreadyVerified": {
            "type": "boolean"
          }
        }
      }
    },
    "RetrieveDomainAuthCode": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName"
        ],
        "members": {
          "DomainName": {}
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "AuthCode"
        ],
        "members": {
          "AuthCode": {
            "shape": "S7"
          }
        }
      }
    },
    "TransferDomain": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName",
          "DurationInYears",
          "AdminContact",
          "RegistrantContact",
          "TechContact"
        ],
        "members": {
          "DomainName": {},
          "IdnLangCode": {},
          "DurationInYears": {
            "type": "integer"
          },
          "Nameservers": {
            "shape": "St"
          },
          "AuthCode": {
            "shape": "S7"
          },
          "AutoRenew": {
            "type": "boolean"
          },
          "AdminContact": {
            "shape": "Sz"
          },
          "RegistrantContact": {
            "shape": "Sz"
          },
          "TechContact": {
            "shape": "Sz"
          },
          "PrivacyProtectAdminContact": {
            "type": "boolean"
          },
          "PrivacyProtectRegistrantContact": {
            "type": "boolean"
          },
          "PrivacyProtectTechContact": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "OperationId"
        ],
        "members": {
          "OperationId": {}
        }
      }
    },
    "UpdateDomainContact": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName"
        ],
        "members": {
          "DomainName": {},
          "AdminContact": {
            "shape": "Sz"
          },
          "RegistrantContact": {
            "shape": "Sz"
          },
          "TechContact": {
            "shape": "Sz"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "OperationId"
        ],
        "members": {
          "OperationId": {}
        }
      }
    },
    "UpdateDomainContactPrivacy": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName"
        ],
        "members": {
          "DomainName": {},
          "AdminPrivacy": {
            "type": "boolean"
          },
          "RegistrantPrivacy": {
            "type": "boolean"
          },
          "TechPrivacy": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "OperationId"
        ],
        "members": {
          "OperationId": {}
        }
      }
    },
    "UpdateDomainNameservers": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName",
          "Nameservers"
        ],
        "members": {
          "DomainName": {},
          "FIAuthKey": {
            "deprecated": true
          },
          "Nameservers": {
            "shape": "St"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "OperationId"
        ],
        "members": {
          "OperationId": {}
        }
      }
    },
    "UpdateTagsForDomain": {
      "input": {
        "type": "structure",
        "required": [
          "DomainName"
        ],
        "members": {
          "DomainName": {},
          "TagsToUpdate": {
            "shape": "S29"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "ViewBilling": {
      "input": {
        "type": "structure",
        "members": {
          "Start": {
            "type": "timestamp"
          },
          "End": {
            "type": "timestamp"
          },
          "Marker": {},
          "MaxItems": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextPageMarker": {},
          "BillingRecords": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "DomainName": {},
                "Operation": {},
                "InvoiceId": {},
                "BillDate": {
                  "type": "timestamp"
                },
                "Price": {
                  "type": "double"
                }
              }
            }
          }
        }
      }
    }
  },
  "shapes": {
    "S7": {
      "type": "string",
      "sensitive": true
    },
    "St": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {},
          "GlueIps": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "Sz": {
      "type": "structure",
      "members": {
        "FirstName": {},
        "LastName": {},
        "ContactType": {},
        "OrganizationName": {},
        "AddressLine1": {},
        "AddressLine2": {},
        "City": {},
        "State": {},
        "CountryCode": {},
        "ZipCode": {},
        "PhoneNumber": {},
        "Email": {},
        "Fax": {},
        "ExtraParams": {
          "type": "list",
          "member": {
            "type": "structure",
            "required": [
              "Name",
              "Value"
            ],
            "members": {
              "Name": {},
              "Value": {}
            }
          }
        }
      },
      "sensitive": true
    },
    "S29": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    }
  }
}
},{}],140:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListDomains": {
      "input_token": "Marker",
      "limit_key": "MaxItems",
      "output_token": "NextPageMarker",
      "result_key": "Domains"
    },
    "ListOperations": {
      "input_token": "Marker",
      "limit_key": "MaxItems",
      "output_token": "NextPageMarker",
      "result_key": "Operations"
    }
  }
}
},{}],141:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2016-11-28",
    "endpointPrefix": "runtime.lex",
    "jsonVersion": "1.1",
    "protocol": "rest-json",
    "serviceFullName": "Amazon Lex Runtime Service",
    "signatureVersion": "v4",
    "signingName": "lex",
    "uid": "runtime.lex-2016-11-28"
  },
  "operations": {
    "PostContent": {
      "http": {
        "requestUri": "/bot/{botName}/alias/{botAlias}/user/{userId}/content"
      },
      "input": {
        "type": "structure",
        "required": [
          "botName",
          "botAlias",
          "userId",
          "contentType",
          "inputStream"
        ],
        "members": {
          "botName": {
            "location": "uri",
            "locationName": "botName"
          },
          "botAlias": {
            "location": "uri",
            "locationName": "botAlias"
          },
          "userId": {
            "location": "uri",
            "locationName": "userId"
          },
          "sessionAttributes": {
            "shape": "S5",
            "jsonvalue": true,
            "location": "header",
            "locationName": "x-amz-lex-session-attributes"
          },
          "requestAttributes": {
            "shape": "S5",
            "jsonvalue": true,
            "location": "header",
            "locationName": "x-amz-lex-request-attributes"
          },
          "contentType": {
            "location": "header",
            "locationName": "Content-Type"
          },
          "accept": {
            "location": "header",
            "locationName": "Accept"
          },
          "inputStream": {
            "shape": "S8"
          }
        },
        "payload": "inputStream"
      },
      "output": {
        "type": "structure",
        "members": {
          "contentType": {
            "location": "header",
            "locationName": "Content-Type"
          },
          "intentName": {
            "location": "header",
            "locationName": "x-amz-lex-intent-name"
          },
          "slots": {
            "jsonvalue": true,
            "location": "header",
            "locationName": "x-amz-lex-slots"
          },
          "sessionAttributes": {
            "jsonvalue": true,
            "location": "header",
            "locationName": "x-amz-lex-session-attributes"
          },
          "message": {
            "shape": "Sc",
            "location": "header",
            "locationName": "x-amz-lex-message"
          },
          "dialogState": {
            "location": "header",
            "locationName": "x-amz-lex-dialog-state"
          },
          "slotToElicit": {
            "location": "header",
            "locationName": "x-amz-lex-slot-to-elicit"
          },
          "inputTranscript": {
            "location": "header",
            "locationName": "x-amz-lex-input-transcript"
          },
          "audioStream": {
            "shape": "S8"
          }
        },
        "payload": "audioStream"
      },
      "authtype": "v4-unsigned-body"
    },
    "PostText": {
      "http": {
        "requestUri": "/bot/{botName}/alias/{botAlias}/user/{userId}/text"
      },
      "input": {
        "type": "structure",
        "required": [
          "botName",
          "botAlias",
          "userId",
          "inputText"
        ],
        "members": {
          "botName": {
            "location": "uri",
            "locationName": "botName"
          },
          "botAlias": {
            "location": "uri",
            "locationName": "botAlias"
          },
          "userId": {
            "location": "uri",
            "locationName": "userId"
          },
          "sessionAttributes": {
            "shape": "Sf"
          },
          "requestAttributes": {
            "shape": "Sf"
          },
          "inputText": {
            "shape": "Sc"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "intentName": {},
          "slots": {
            "shape": "Sf"
          },
          "sessionAttributes": {
            "shape": "Sf"
          },
          "message": {
            "shape": "Sc"
          },
          "dialogState": {},
          "slotToElicit": {},
          "responseCard": {
            "type": "structure",
            "members": {
              "version": {},
              "contentType": {},
              "genericAttachments": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "title": {},
                    "subTitle": {},
                    "attachmentLinkUrl": {},
                    "imageUrl": {},
                    "buttons": {
                      "type": "list",
                      "member": {
                        "type": "structure",
                        "required": [
                          "text",
                          "value"
                        ],
                        "members": {
                          "text": {},
                          "value": {}
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "shapes": {
    "S5": {
      "type": "string",
      "sensitive": true
    },
    "S8": {
      "type": "blob",
      "streaming": true
    },
    "Sc": {
      "type": "string",
      "sensitive": true
    },
    "Sf": {
      "type": "map",
      "key": {},
      "value": {},
      "sensitive": true
    }
  }
}
},{}],142:[function(require,module,exports){
arguments[4][19][0].apply(exports,arguments)
},{"dup":19}],143:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2006-03-01",
    "checksumFormat": "md5",
    "endpointPrefix": "s3",
    "globalEndpoint": "s3.amazonaws.com",
    "protocol": "rest-xml",
    "serviceAbbreviation": "Amazon S3",
    "serviceFullName": "Amazon Simple Storage Service",
    "serviceId": "S3",
    "signatureVersion": "s3",
    "timestampFormat": "rfc822",
    "uid": "s3-2006-03-01"
  },
  "operations": {
    "AbortMultipartUpload": {
      "http": {
        "method": "DELETE",
        "requestUri": "/{Bucket}/{Key+}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Key",
          "UploadId"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "UploadId": {
            "location": "querystring",
            "locationName": "uploadId"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RequestCharged": {
            "location": "header",
            "locationName": "x-amz-request-charged"
          }
        }
      }
    },
    "CompleteMultipartUpload": {
      "http": {
        "requestUri": "/{Bucket}/{Key+}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Key",
          "UploadId"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "MultipartUpload": {
            "locationName": "CompleteMultipartUpload",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            },
            "type": "structure",
            "members": {
              "Parts": {
                "locationName": "Part",
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "ETag": {},
                    "PartNumber": {
                      "type": "integer"
                    }
                  }
                },
                "flattened": true
              }
            }
          },
          "UploadId": {
            "location": "querystring",
            "locationName": "uploadId"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          }
        },
        "payload": "MultipartUpload"
      },
      "output": {
        "type": "structure",
        "members": {
          "Location": {},
          "Bucket": {},
          "Key": {},
          "Expiration": {
            "location": "header",
            "locationName": "x-amz-expiration"
          },
          "ETag": {},
          "ServerSideEncryption": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption"
          },
          "VersionId": {
            "location": "header",
            "locationName": "x-amz-version-id"
          },
          "SSEKMSKeyId": {
            "shape": "Sj",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-aws-kms-key-id"
          },
          "RequestCharged": {
            "location": "header",
            "locationName": "x-amz-request-charged"
          }
        }
      }
    },
    "CopyObject": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}/{Key+}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "CopySource",
          "Key"
        ],
        "members": {
          "ACL": {
            "location": "header",
            "locationName": "x-amz-acl"
          },
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "CacheControl": {
            "location": "header",
            "locationName": "Cache-Control"
          },
          "ContentDisposition": {
            "location": "header",
            "locationName": "Content-Disposition"
          },
          "ContentEncoding": {
            "location": "header",
            "locationName": "Content-Encoding"
          },
          "ContentLanguage": {
            "location": "header",
            "locationName": "Content-Language"
          },
          "ContentType": {
            "location": "header",
            "locationName": "Content-Type"
          },
          "CopySource": {
            "location": "header",
            "locationName": "x-amz-copy-source"
          },
          "CopySourceIfMatch": {
            "location": "header",
            "locationName": "x-amz-copy-source-if-match"
          },
          "CopySourceIfModifiedSince": {
            "location": "header",
            "locationName": "x-amz-copy-source-if-modified-since",
            "type": "timestamp"
          },
          "CopySourceIfNoneMatch": {
            "location": "header",
            "locationName": "x-amz-copy-source-if-none-match"
          },
          "CopySourceIfUnmodifiedSince": {
            "location": "header",
            "locationName": "x-amz-copy-source-if-unmodified-since",
            "type": "timestamp"
          },
          "Expires": {
            "location": "header",
            "locationName": "Expires",
            "type": "timestamp"
          },
          "GrantFullControl": {
            "location": "header",
            "locationName": "x-amz-grant-full-control"
          },
          "GrantRead": {
            "location": "header",
            "locationName": "x-amz-grant-read"
          },
          "GrantReadACP": {
            "location": "header",
            "locationName": "x-amz-grant-read-acp"
          },
          "GrantWriteACP": {
            "location": "header",
            "locationName": "x-amz-grant-write-acp"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "Metadata": {
            "shape": "S11",
            "location": "headers",
            "locationName": "x-amz-meta-"
          },
          "MetadataDirective": {
            "location": "header",
            "locationName": "x-amz-metadata-directive"
          },
          "TaggingDirective": {
            "location": "header",
            "locationName": "x-amz-tagging-directive"
          },
          "ServerSideEncryption": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption"
          },
          "StorageClass": {
            "location": "header",
            "locationName": "x-amz-storage-class"
          },
          "WebsiteRedirectLocation": {
            "location": "header",
            "locationName": "x-amz-website-redirect-location"
          },
          "SSECustomerAlgorithm": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-algorithm"
          },
          "SSECustomerKey": {
            "shape": "S19",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key"
          },
          "SSECustomerKeyMD5": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key-MD5"
          },
          "SSEKMSKeyId": {
            "shape": "Sj",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-aws-kms-key-id"
          },
          "CopySourceSSECustomerAlgorithm": {
            "location": "header",
            "locationName": "x-amz-copy-source-server-side-encryption-customer-algorithm"
          },
          "CopySourceSSECustomerKey": {
            "shape": "S1c",
            "location": "header",
            "locationName": "x-amz-copy-source-server-side-encryption-customer-key"
          },
          "CopySourceSSECustomerKeyMD5": {
            "location": "header",
            "locationName": "x-amz-copy-source-server-side-encryption-customer-key-MD5"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          },
          "Tagging": {
            "location": "header",
            "locationName": "x-amz-tagging"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CopyObjectResult": {
            "type": "structure",
            "members": {
              "ETag": {},
              "LastModified": {
                "type": "timestamp"
              }
            }
          },
          "Expiration": {
            "location": "header",
            "locationName": "x-amz-expiration"
          },
          "CopySourceVersionId": {
            "location": "header",
            "locationName": "x-amz-copy-source-version-id"
          },
          "VersionId": {
            "location": "header",
            "locationName": "x-amz-version-id"
          },
          "ServerSideEncryption": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption"
          },
          "SSECustomerAlgorithm": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-algorithm"
          },
          "SSECustomerKeyMD5": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key-MD5"
          },
          "SSEKMSKeyId": {
            "shape": "Sj",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-aws-kms-key-id"
          },
          "RequestCharged": {
            "location": "header",
            "locationName": "x-amz-request-charged"
          }
        },
        "payload": "CopyObjectResult"
      },
      "alias": "PutObjectCopy"
    },
    "CreateBucket": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "ACL": {
            "location": "header",
            "locationName": "x-amz-acl"
          },
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "CreateBucketConfiguration": {
            "locationName": "CreateBucketConfiguration",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            },
            "type": "structure",
            "members": {
              "LocationConstraint": {}
            }
          },
          "GrantFullControl": {
            "location": "header",
            "locationName": "x-amz-grant-full-control"
          },
          "GrantRead": {
            "location": "header",
            "locationName": "x-amz-grant-read"
          },
          "GrantReadACP": {
            "location": "header",
            "locationName": "x-amz-grant-read-acp"
          },
          "GrantWrite": {
            "location": "header",
            "locationName": "x-amz-grant-write"
          },
          "GrantWriteACP": {
            "location": "header",
            "locationName": "x-amz-grant-write-acp"
          }
        },
        "payload": "CreateBucketConfiguration"
      },
      "output": {
        "type": "structure",
        "members": {
          "Location": {
            "location": "header",
            "locationName": "Location"
          }
        }
      },
      "alias": "PutBucket"
    },
    "CreateMultipartUpload": {
      "http": {
        "requestUri": "/{Bucket}/{Key+}?uploads"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Key"
        ],
        "members": {
          "ACL": {
            "location": "header",
            "locationName": "x-amz-acl"
          },
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "CacheControl": {
            "location": "header",
            "locationName": "Cache-Control"
          },
          "ContentDisposition": {
            "location": "header",
            "locationName": "Content-Disposition"
          },
          "ContentEncoding": {
            "location": "header",
            "locationName": "Content-Encoding"
          },
          "ContentLanguage": {
            "location": "header",
            "locationName": "Content-Language"
          },
          "ContentType": {
            "location": "header",
            "locationName": "Content-Type"
          },
          "Expires": {
            "location": "header",
            "locationName": "Expires",
            "type": "timestamp"
          },
          "GrantFullControl": {
            "location": "header",
            "locationName": "x-amz-grant-full-control"
          },
          "GrantRead": {
            "location": "header",
            "locationName": "x-amz-grant-read"
          },
          "GrantReadACP": {
            "location": "header",
            "locationName": "x-amz-grant-read-acp"
          },
          "GrantWriteACP": {
            "location": "header",
            "locationName": "x-amz-grant-write-acp"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "Metadata": {
            "shape": "S11",
            "location": "headers",
            "locationName": "x-amz-meta-"
          },
          "ServerSideEncryption": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption"
          },
          "StorageClass": {
            "location": "header",
            "locationName": "x-amz-storage-class"
          },
          "WebsiteRedirectLocation": {
            "location": "header",
            "locationName": "x-amz-website-redirect-location"
          },
          "SSECustomerAlgorithm": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-algorithm"
          },
          "SSECustomerKey": {
            "shape": "S19",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key"
          },
          "SSECustomerKeyMD5": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key-MD5"
          },
          "SSEKMSKeyId": {
            "shape": "Sj",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-aws-kms-key-id"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          },
          "Tagging": {
            "location": "header",
            "locationName": "x-amz-tagging"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AbortDate": {
            "location": "header",
            "locationName": "x-amz-abort-date",
            "type": "timestamp"
          },
          "AbortRuleId": {
            "location": "header",
            "locationName": "x-amz-abort-rule-id"
          },
          "Bucket": {
            "locationName": "Bucket"
          },
          "Key": {},
          "UploadId": {},
          "ServerSideEncryption": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption"
          },
          "SSECustomerAlgorithm": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-algorithm"
          },
          "SSECustomerKeyMD5": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key-MD5"
          },
          "SSEKMSKeyId": {
            "shape": "Sj",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-aws-kms-key-id"
          },
          "RequestCharged": {
            "location": "header",
            "locationName": "x-amz-request-charged"
          }
        }
      },
      "alias": "InitiateMultipartUpload"
    },
    "DeleteBucket": {
      "http": {
        "method": "DELETE",
        "requestUri": "/{Bucket}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      }
    },
    "DeleteBucketAnalyticsConfiguration": {
      "http": {
        "method": "DELETE",
        "requestUri": "/{Bucket}?analytics"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Id"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Id": {
            "location": "querystring",
            "locationName": "id"
          }
        }
      }
    },
    "DeleteBucketCors": {
      "http": {
        "method": "DELETE",
        "requestUri": "/{Bucket}?cors"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      }
    },
    "DeleteBucketEncryption": {
      "http": {
        "method": "DELETE",
        "requestUri": "/{Bucket}?encryption"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      }
    },
    "DeleteBucketInventoryConfiguration": {
      "http": {
        "method": "DELETE",
        "requestUri": "/{Bucket}?inventory"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Id"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Id": {
            "location": "querystring",
            "locationName": "id"
          }
        }
      }
    },
    "DeleteBucketLifecycle": {
      "http": {
        "method": "DELETE",
        "requestUri": "/{Bucket}?lifecycle"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      }
    },
    "DeleteBucketMetricsConfiguration": {
      "http": {
        "method": "DELETE",
        "requestUri": "/{Bucket}?metrics"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Id"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Id": {
            "location": "querystring",
            "locationName": "id"
          }
        }
      }
    },
    "DeleteBucketPolicy": {
      "http": {
        "method": "DELETE",
        "requestUri": "/{Bucket}?policy"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      }
    },
    "DeleteBucketReplication": {
      "http": {
        "method": "DELETE",
        "requestUri": "/{Bucket}?replication"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      }
    },
    "DeleteBucketTagging": {
      "http": {
        "method": "DELETE",
        "requestUri": "/{Bucket}?tagging"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      }
    },
    "DeleteBucketWebsite": {
      "http": {
        "method": "DELETE",
        "requestUri": "/{Bucket}?website"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      }
    },
    "DeleteObject": {
      "http": {
        "method": "DELETE",
        "requestUri": "/{Bucket}/{Key+}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Key"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "MFA": {
            "location": "header",
            "locationName": "x-amz-mfa"
          },
          "VersionId": {
            "location": "querystring",
            "locationName": "versionId"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DeleteMarker": {
            "location": "header",
            "locationName": "x-amz-delete-marker",
            "type": "boolean"
          },
          "VersionId": {
            "location": "header",
            "locationName": "x-amz-version-id"
          },
          "RequestCharged": {
            "location": "header",
            "locationName": "x-amz-request-charged"
          }
        }
      }
    },
    "DeleteObjectTagging": {
      "http": {
        "method": "DELETE",
        "requestUri": "/{Bucket}/{Key+}?tagging"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Key"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "VersionId": {
            "location": "querystring",
            "locationName": "versionId"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VersionId": {
            "location": "header",
            "locationName": "x-amz-version-id"
          }
        }
      }
    },
    "DeleteObjects": {
      "http": {
        "requestUri": "/{Bucket}?delete"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Delete"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Delete": {
            "locationName": "Delete",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            },
            "type": "structure",
            "required": [
              "Objects"
            ],
            "members": {
              "Objects": {
                "locationName": "Object",
                "type": "list",
                "member": {
                  "type": "structure",
                  "required": [
                    "Key"
                  ],
                  "members": {
                    "Key": {},
                    "VersionId": {}
                  }
                },
                "flattened": true
              },
              "Quiet": {
                "type": "boolean"
              }
            }
          },
          "MFA": {
            "location": "header",
            "locationName": "x-amz-mfa"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          }
        },
        "payload": "Delete"
      },
      "output": {
        "type": "structure",
        "members": {
          "Deleted": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Key": {},
                "VersionId": {},
                "DeleteMarker": {
                  "type": "boolean"
                },
                "DeleteMarkerVersionId": {}
              }
            },
            "flattened": true
          },
          "RequestCharged": {
            "location": "header",
            "locationName": "x-amz-request-charged"
          },
          "Errors": {
            "locationName": "Error",
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Key": {},
                "VersionId": {},
                "Code": {},
                "Message": {}
              }
            },
            "flattened": true
          }
        }
      },
      "alias": "DeleteMultipleObjects"
    },
    "GetBucketAccelerateConfiguration": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?accelerate"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Status": {}
        }
      }
    },
    "GetBucketAcl": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?acl"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Owner": {
            "shape": "S2v"
          },
          "Grants": {
            "shape": "S2y",
            "locationName": "AccessControlList"
          }
        }
      }
    },
    "GetBucketAnalyticsConfiguration": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?analytics"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Id"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Id": {
            "location": "querystring",
            "locationName": "id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AnalyticsConfiguration": {
            "shape": "S37"
          }
        },
        "payload": "AnalyticsConfiguration"
      }
    },
    "GetBucketCors": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?cors"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CORSRules": {
            "shape": "S3n",
            "locationName": "CORSRule"
          }
        }
      }
    },
    "GetBucketEncryption": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?encryption"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ServerSideEncryptionConfiguration": {
            "shape": "S40"
          }
        },
        "payload": "ServerSideEncryptionConfiguration"
      }
    },
    "GetBucketInventoryConfiguration": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?inventory"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Id"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Id": {
            "location": "querystring",
            "locationName": "id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InventoryConfiguration": {
            "shape": "S46"
          }
        },
        "payload": "InventoryConfiguration"
      }
    },
    "GetBucketLifecycle": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?lifecycle"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Rules": {
            "shape": "S4m",
            "locationName": "Rule"
          }
        }
      },
      "deprecated": true
    },
    "GetBucketLifecycleConfiguration": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?lifecycle"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Rules": {
            "shape": "S51",
            "locationName": "Rule"
          }
        }
      }
    },
    "GetBucketLocation": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?location"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "LocationConstraint": {}
        }
      }
    },
    "GetBucketLogging": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?logging"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "LoggingEnabled": {
            "shape": "S5b"
          }
        }
      }
    },
    "GetBucketMetricsConfiguration": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?metrics"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Id"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Id": {
            "location": "querystring",
            "locationName": "id"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "MetricsConfiguration": {
            "shape": "S5j"
          }
        },
        "payload": "MetricsConfiguration"
      }
    },
    "GetBucketNotification": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?notification"
      },
      "input": {
        "shape": "S5m"
      },
      "output": {
        "shape": "S5n"
      },
      "deprecated": true
    },
    "GetBucketNotificationConfiguration": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?notification"
      },
      "input": {
        "shape": "S5m"
      },
      "output": {
        "shape": "S5y"
      }
    },
    "GetBucketPolicy": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?policy"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Policy": {}
        },
        "payload": "Policy"
      }
    },
    "GetBucketReplication": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?replication"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ReplicationConfiguration": {
            "shape": "S6h"
          }
        },
        "payload": "ReplicationConfiguration"
      }
    },
    "GetBucketRequestPayment": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?requestPayment"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Payer": {}
        }
      }
    },
    "GetBucketTagging": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?tagging"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "TagSet"
        ],
        "members": {
          "TagSet": {
            "shape": "S3d"
          }
        }
      }
    },
    "GetBucketVersioning": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?versioning"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Status": {},
          "MFADelete": {
            "locationName": "MfaDelete"
          }
        }
      }
    },
    "GetBucketWebsite": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?website"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RedirectAllRequestsTo": {
            "shape": "S75"
          },
          "IndexDocument": {
            "shape": "S78"
          },
          "ErrorDocument": {
            "shape": "S7a"
          },
          "RoutingRules": {
            "shape": "S7b"
          }
        }
      }
    },
    "GetObject": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}/{Key+}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Key"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "IfMatch": {
            "location": "header",
            "locationName": "If-Match"
          },
          "IfModifiedSince": {
            "location": "header",
            "locationName": "If-Modified-Since",
            "type": "timestamp"
          },
          "IfNoneMatch": {
            "location": "header",
            "locationName": "If-None-Match"
          },
          "IfUnmodifiedSince": {
            "location": "header",
            "locationName": "If-Unmodified-Since",
            "type": "timestamp"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "Range": {
            "location": "header",
            "locationName": "Range"
          },
          "ResponseCacheControl": {
            "location": "querystring",
            "locationName": "response-cache-control"
          },
          "ResponseContentDisposition": {
            "location": "querystring",
            "locationName": "response-content-disposition"
          },
          "ResponseContentEncoding": {
            "location": "querystring",
            "locationName": "response-content-encoding"
          },
          "ResponseContentLanguage": {
            "location": "querystring",
            "locationName": "response-content-language"
          },
          "ResponseContentType": {
            "location": "querystring",
            "locationName": "response-content-type"
          },
          "ResponseExpires": {
            "location": "querystring",
            "locationName": "response-expires",
            "type": "timestamp"
          },
          "VersionId": {
            "location": "querystring",
            "locationName": "versionId"
          },
          "SSECustomerAlgorithm": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-algorithm"
          },
          "SSECustomerKey": {
            "shape": "S19",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key"
          },
          "SSECustomerKeyMD5": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key-MD5"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          },
          "PartNumber": {
            "location": "querystring",
            "locationName": "partNumber",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Body": {
            "streaming": true,
            "type": "blob"
          },
          "DeleteMarker": {
            "location": "header",
            "locationName": "x-amz-delete-marker",
            "type": "boolean"
          },
          "AcceptRanges": {
            "location": "header",
            "locationName": "accept-ranges"
          },
          "Expiration": {
            "location": "header",
            "locationName": "x-amz-expiration"
          },
          "Restore": {
            "location": "header",
            "locationName": "x-amz-restore"
          },
          "LastModified": {
            "location": "header",
            "locationName": "Last-Modified",
            "type": "timestamp"
          },
          "ContentLength": {
            "location": "header",
            "locationName": "Content-Length",
            "type": "long"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          },
          "MissingMeta": {
            "location": "header",
            "locationName": "x-amz-missing-meta",
            "type": "integer"
          },
          "VersionId": {
            "location": "header",
            "locationName": "x-amz-version-id"
          },
          "CacheControl": {
            "location": "header",
            "locationName": "Cache-Control"
          },
          "ContentDisposition": {
            "location": "header",
            "locationName": "Content-Disposition"
          },
          "ContentEncoding": {
            "location": "header",
            "locationName": "Content-Encoding"
          },
          "ContentLanguage": {
            "location": "header",
            "locationName": "Content-Language"
          },
          "ContentRange": {
            "location": "header",
            "locationName": "Content-Range"
          },
          "ContentType": {
            "location": "header",
            "locationName": "Content-Type"
          },
          "Expires": {
            "location": "header",
            "locationName": "Expires",
            "type": "timestamp"
          },
          "WebsiteRedirectLocation": {
            "location": "header",
            "locationName": "x-amz-website-redirect-location"
          },
          "ServerSideEncryption": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption"
          },
          "Metadata": {
            "shape": "S11",
            "location": "headers",
            "locationName": "x-amz-meta-"
          },
          "SSECustomerAlgorithm": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-algorithm"
          },
          "SSECustomerKeyMD5": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key-MD5"
          },
          "SSEKMSKeyId": {
            "shape": "Sj",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-aws-kms-key-id"
          },
          "StorageClass": {
            "location": "header",
            "locationName": "x-amz-storage-class"
          },
          "RequestCharged": {
            "location": "header",
            "locationName": "x-amz-request-charged"
          },
          "ReplicationStatus": {
            "location": "header",
            "locationName": "x-amz-replication-status"
          },
          "PartsCount": {
            "location": "header",
            "locationName": "x-amz-mp-parts-count",
            "type": "integer"
          },
          "TagCount": {
            "location": "header",
            "locationName": "x-amz-tagging-count",
            "type": "integer"
          }
        },
        "payload": "Body"
      }
    },
    "GetObjectAcl": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}/{Key+}?acl"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Key"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "VersionId": {
            "location": "querystring",
            "locationName": "versionId"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Owner": {
            "shape": "S2v"
          },
          "Grants": {
            "shape": "S2y",
            "locationName": "AccessControlList"
          },
          "RequestCharged": {
            "location": "header",
            "locationName": "x-amz-request-charged"
          }
        }
      }
    },
    "GetObjectTagging": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}/{Key+}?tagging"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Key"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "VersionId": {
            "location": "querystring",
            "locationName": "versionId"
          }
        }
      },
      "output": {
        "type": "structure",
        "required": [
          "TagSet"
        ],
        "members": {
          "VersionId": {
            "location": "header",
            "locationName": "x-amz-version-id"
          },
          "TagSet": {
            "shape": "S3d"
          }
        }
      }
    },
    "GetObjectTorrent": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}/{Key+}?torrent"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Key"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Body": {
            "streaming": true,
            "type": "blob"
          },
          "RequestCharged": {
            "location": "header",
            "locationName": "x-amz-request-charged"
          }
        },
        "payload": "Body"
      }
    },
    "HeadBucket": {
      "http": {
        "method": "HEAD",
        "requestUri": "/{Bucket}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          }
        }
      }
    },
    "HeadObject": {
      "http": {
        "method": "HEAD",
        "requestUri": "/{Bucket}/{Key+}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Key"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "IfMatch": {
            "location": "header",
            "locationName": "If-Match"
          },
          "IfModifiedSince": {
            "location": "header",
            "locationName": "If-Modified-Since",
            "type": "timestamp"
          },
          "IfNoneMatch": {
            "location": "header",
            "locationName": "If-None-Match"
          },
          "IfUnmodifiedSince": {
            "location": "header",
            "locationName": "If-Unmodified-Since",
            "type": "timestamp"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "Range": {
            "location": "header",
            "locationName": "Range"
          },
          "VersionId": {
            "location": "querystring",
            "locationName": "versionId"
          },
          "SSECustomerAlgorithm": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-algorithm"
          },
          "SSECustomerKey": {
            "shape": "S19",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key"
          },
          "SSECustomerKeyMD5": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key-MD5"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          },
          "PartNumber": {
            "location": "querystring",
            "locationName": "partNumber",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DeleteMarker": {
            "location": "header",
            "locationName": "x-amz-delete-marker",
            "type": "boolean"
          },
          "AcceptRanges": {
            "location": "header",
            "locationName": "accept-ranges"
          },
          "Expiration": {
            "location": "header",
            "locationName": "x-amz-expiration"
          },
          "Restore": {
            "location": "header",
            "locationName": "x-amz-restore"
          },
          "LastModified": {
            "location": "header",
            "locationName": "Last-Modified",
            "type": "timestamp"
          },
          "ContentLength": {
            "location": "header",
            "locationName": "Content-Length",
            "type": "long"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          },
          "MissingMeta": {
            "location": "header",
            "locationName": "x-amz-missing-meta",
            "type": "integer"
          },
          "VersionId": {
            "location": "header",
            "locationName": "x-amz-version-id"
          },
          "CacheControl": {
            "location": "header",
            "locationName": "Cache-Control"
          },
          "ContentDisposition": {
            "location": "header",
            "locationName": "Content-Disposition"
          },
          "ContentEncoding": {
            "location": "header",
            "locationName": "Content-Encoding"
          },
          "ContentLanguage": {
            "location": "header",
            "locationName": "Content-Language"
          },
          "ContentType": {
            "location": "header",
            "locationName": "Content-Type"
          },
          "Expires": {
            "location": "header",
            "locationName": "Expires",
            "type": "timestamp"
          },
          "WebsiteRedirectLocation": {
            "location": "header",
            "locationName": "x-amz-website-redirect-location"
          },
          "ServerSideEncryption": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption"
          },
          "Metadata": {
            "shape": "S11",
            "location": "headers",
            "locationName": "x-amz-meta-"
          },
          "SSECustomerAlgorithm": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-algorithm"
          },
          "SSECustomerKeyMD5": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key-MD5"
          },
          "SSEKMSKeyId": {
            "shape": "Sj",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-aws-kms-key-id"
          },
          "StorageClass": {
            "location": "header",
            "locationName": "x-amz-storage-class"
          },
          "RequestCharged": {
            "location": "header",
            "locationName": "x-amz-request-charged"
          },
          "ReplicationStatus": {
            "location": "header",
            "locationName": "x-amz-replication-status"
          },
          "PartsCount": {
            "location": "header",
            "locationName": "x-amz-mp-parts-count",
            "type": "integer"
          }
        }
      }
    },
    "ListBucketAnalyticsConfigurations": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?analytics"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "ContinuationToken": {
            "location": "querystring",
            "locationName": "continuation-token"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IsTruncated": {
            "type": "boolean"
          },
          "ContinuationToken": {},
          "NextContinuationToken": {},
          "AnalyticsConfigurationList": {
            "locationName": "AnalyticsConfiguration",
            "type": "list",
            "member": {
              "shape": "S37"
            },
            "flattened": true
          }
        }
      }
    },
    "ListBucketInventoryConfigurations": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?inventory"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "ContinuationToken": {
            "location": "querystring",
            "locationName": "continuation-token"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ContinuationToken": {},
          "InventoryConfigurationList": {
            "locationName": "InventoryConfiguration",
            "type": "list",
            "member": {
              "shape": "S46"
            },
            "flattened": true
          },
          "IsTruncated": {
            "type": "boolean"
          },
          "NextContinuationToken": {}
        }
      }
    },
    "ListBucketMetricsConfigurations": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?metrics"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "ContinuationToken": {
            "location": "querystring",
            "locationName": "continuation-token"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IsTruncated": {
            "type": "boolean"
          },
          "ContinuationToken": {},
          "NextContinuationToken": {},
          "MetricsConfigurationList": {
            "locationName": "MetricsConfiguration",
            "type": "list",
            "member": {
              "shape": "S5j"
            },
            "flattened": true
          }
        }
      }
    },
    "ListBuckets": {
      "http": {
        "method": "GET"
      },
      "output": {
        "type": "structure",
        "members": {
          "Buckets": {
            "type": "list",
            "member": {
              "locationName": "Bucket",
              "type": "structure",
              "members": {
                "Name": {},
                "CreationDate": {
                  "type": "timestamp"
                }
              }
            }
          },
          "Owner": {
            "shape": "S2v"
          }
        }
      },
      "alias": "GetService"
    },
    "ListMultipartUploads": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?uploads"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Delimiter": {
            "location": "querystring",
            "locationName": "delimiter"
          },
          "EncodingType": {
            "location": "querystring",
            "locationName": "encoding-type"
          },
          "KeyMarker": {
            "location": "querystring",
            "locationName": "key-marker"
          },
          "MaxUploads": {
            "location": "querystring",
            "locationName": "max-uploads",
            "type": "integer"
          },
          "Prefix": {
            "location": "querystring",
            "locationName": "prefix"
          },
          "UploadIdMarker": {
            "location": "querystring",
            "locationName": "upload-id-marker"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Bucket": {},
          "KeyMarker": {},
          "UploadIdMarker": {},
          "NextKeyMarker": {},
          "Prefix": {},
          "Delimiter": {},
          "NextUploadIdMarker": {},
          "MaxUploads": {
            "type": "integer"
          },
          "IsTruncated": {
            "type": "boolean"
          },
          "Uploads": {
            "locationName": "Upload",
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "UploadId": {},
                "Key": {},
                "Initiated": {
                  "type": "timestamp"
                },
                "StorageClass": {},
                "Owner": {
                  "shape": "S2v"
                },
                "Initiator": {
                  "shape": "S97"
                }
              }
            },
            "flattened": true
          },
          "CommonPrefixes": {
            "shape": "S98"
          },
          "EncodingType": {}
        }
      }
    },
    "ListObjectVersions": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?versions"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Delimiter": {
            "location": "querystring",
            "locationName": "delimiter"
          },
          "EncodingType": {
            "location": "querystring",
            "locationName": "encoding-type"
          },
          "KeyMarker": {
            "location": "querystring",
            "locationName": "key-marker"
          },
          "MaxKeys": {
            "location": "querystring",
            "locationName": "max-keys",
            "type": "integer"
          },
          "Prefix": {
            "location": "querystring",
            "locationName": "prefix"
          },
          "VersionIdMarker": {
            "location": "querystring",
            "locationName": "version-id-marker"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IsTruncated": {
            "type": "boolean"
          },
          "KeyMarker": {},
          "VersionIdMarker": {},
          "NextKeyMarker": {},
          "NextVersionIdMarker": {},
          "Versions": {
            "locationName": "Version",
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ETag": {},
                "Size": {
                  "type": "integer"
                },
                "StorageClass": {},
                "Key": {},
                "VersionId": {},
                "IsLatest": {
                  "type": "boolean"
                },
                "LastModified": {
                  "type": "timestamp"
                },
                "Owner": {
                  "shape": "S2v"
                }
              }
            },
            "flattened": true
          },
          "DeleteMarkers": {
            "locationName": "DeleteMarker",
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Owner": {
                  "shape": "S2v"
                },
                "Key": {},
                "VersionId": {},
                "IsLatest": {
                  "type": "boolean"
                },
                "LastModified": {
                  "type": "timestamp"
                }
              }
            },
            "flattened": true
          },
          "Name": {},
          "Prefix": {},
          "Delimiter": {},
          "MaxKeys": {
            "type": "integer"
          },
          "CommonPrefixes": {
            "shape": "S98"
          },
          "EncodingType": {}
        }
      },
      "alias": "GetBucketObjectVersions"
    },
    "ListObjects": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Delimiter": {
            "location": "querystring",
            "locationName": "delimiter"
          },
          "EncodingType": {
            "location": "querystring",
            "locationName": "encoding-type"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "MaxKeys": {
            "location": "querystring",
            "locationName": "max-keys",
            "type": "integer"
          },
          "Prefix": {
            "location": "querystring",
            "locationName": "prefix"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IsTruncated": {
            "type": "boolean"
          },
          "Marker": {},
          "NextMarker": {},
          "Contents": {
            "shape": "S9q"
          },
          "Name": {},
          "Prefix": {},
          "Delimiter": {},
          "MaxKeys": {
            "type": "integer"
          },
          "CommonPrefixes": {
            "shape": "S98"
          },
          "EncodingType": {}
        }
      },
      "alias": "GetBucket"
    },
    "ListObjectsV2": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}?list-type=2"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Delimiter": {
            "location": "querystring",
            "locationName": "delimiter"
          },
          "EncodingType": {
            "location": "querystring",
            "locationName": "encoding-type"
          },
          "MaxKeys": {
            "location": "querystring",
            "locationName": "max-keys",
            "type": "integer"
          },
          "Prefix": {
            "location": "querystring",
            "locationName": "prefix"
          },
          "ContinuationToken": {
            "location": "querystring",
            "locationName": "continuation-token"
          },
          "FetchOwner": {
            "location": "querystring",
            "locationName": "fetch-owner",
            "type": "boolean"
          },
          "StartAfter": {
            "location": "querystring",
            "locationName": "start-after"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IsTruncated": {
            "type": "boolean"
          },
          "Contents": {
            "shape": "S9q"
          },
          "Name": {},
          "Prefix": {},
          "Delimiter": {},
          "MaxKeys": {
            "type": "integer"
          },
          "CommonPrefixes": {
            "shape": "S98"
          },
          "EncodingType": {},
          "KeyCount": {
            "type": "integer"
          },
          "ContinuationToken": {},
          "NextContinuationToken": {},
          "StartAfter": {}
        }
      }
    },
    "ListParts": {
      "http": {
        "method": "GET",
        "requestUri": "/{Bucket}/{Key+}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Key",
          "UploadId"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "MaxParts": {
            "location": "querystring",
            "locationName": "max-parts",
            "type": "integer"
          },
          "PartNumberMarker": {
            "location": "querystring",
            "locationName": "part-number-marker",
            "type": "integer"
          },
          "UploadId": {
            "location": "querystring",
            "locationName": "uploadId"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AbortDate": {
            "location": "header",
            "locationName": "x-amz-abort-date",
            "type": "timestamp"
          },
          "AbortRuleId": {
            "location": "header",
            "locationName": "x-amz-abort-rule-id"
          },
          "Bucket": {},
          "Key": {},
          "UploadId": {},
          "PartNumberMarker": {
            "type": "integer"
          },
          "NextPartNumberMarker": {
            "type": "integer"
          },
          "MaxParts": {
            "type": "integer"
          },
          "IsTruncated": {
            "type": "boolean"
          },
          "Parts": {
            "locationName": "Part",
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "PartNumber": {
                  "type": "integer"
                },
                "LastModified": {
                  "type": "timestamp"
                },
                "ETag": {},
                "Size": {
                  "type": "integer"
                }
              }
            },
            "flattened": true
          },
          "Initiator": {
            "shape": "S97"
          },
          "Owner": {
            "shape": "S2v"
          },
          "StorageClass": {},
          "RequestCharged": {
            "location": "header",
            "locationName": "x-amz-request-charged"
          }
        }
      }
    },
    "PutBucketAccelerateConfiguration": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?accelerate"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "AccelerateConfiguration"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "AccelerateConfiguration": {
            "locationName": "AccelerateConfiguration",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            },
            "type": "structure",
            "members": {
              "Status": {}
            }
          }
        },
        "payload": "AccelerateConfiguration"
      }
    },
    "PutBucketAcl": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?acl"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "ACL": {
            "location": "header",
            "locationName": "x-amz-acl"
          },
          "AccessControlPolicy": {
            "shape": "Sa8",
            "locationName": "AccessControlPolicy",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            }
          },
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "ContentMD5": {
            "location": "header",
            "locationName": "Content-MD5"
          },
          "GrantFullControl": {
            "location": "header",
            "locationName": "x-amz-grant-full-control"
          },
          "GrantRead": {
            "location": "header",
            "locationName": "x-amz-grant-read"
          },
          "GrantReadACP": {
            "location": "header",
            "locationName": "x-amz-grant-read-acp"
          },
          "GrantWrite": {
            "location": "header",
            "locationName": "x-amz-grant-write"
          },
          "GrantWriteACP": {
            "location": "header",
            "locationName": "x-amz-grant-write-acp"
          }
        },
        "payload": "AccessControlPolicy"
      }
    },
    "PutBucketAnalyticsConfiguration": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?analytics"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Id",
          "AnalyticsConfiguration"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Id": {
            "location": "querystring",
            "locationName": "id"
          },
          "AnalyticsConfiguration": {
            "shape": "S37",
            "locationName": "AnalyticsConfiguration",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            }
          }
        },
        "payload": "AnalyticsConfiguration"
      }
    },
    "PutBucketCors": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?cors"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "CORSConfiguration"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "CORSConfiguration": {
            "locationName": "CORSConfiguration",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            },
            "type": "structure",
            "required": [
              "CORSRules"
            ],
            "members": {
              "CORSRules": {
                "shape": "S3n",
                "locationName": "CORSRule"
              }
            }
          },
          "ContentMD5": {
            "location": "header",
            "locationName": "Content-MD5"
          }
        },
        "payload": "CORSConfiguration"
      }
    },
    "PutBucketEncryption": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?encryption"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "ServerSideEncryptionConfiguration"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "ContentMD5": {
            "location": "header",
            "locationName": "Content-MD5"
          },
          "ServerSideEncryptionConfiguration": {
            "shape": "S40",
            "locationName": "ServerSideEncryptionConfiguration",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            }
          }
        },
        "payload": "ServerSideEncryptionConfiguration"
      }
    },
    "PutBucketInventoryConfiguration": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?inventory"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Id",
          "InventoryConfiguration"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Id": {
            "location": "querystring",
            "locationName": "id"
          },
          "InventoryConfiguration": {
            "shape": "S46",
            "locationName": "InventoryConfiguration",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            }
          }
        },
        "payload": "InventoryConfiguration"
      }
    },
    "PutBucketLifecycle": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?lifecycle"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "ContentMD5": {
            "location": "header",
            "locationName": "Content-MD5"
          },
          "LifecycleConfiguration": {
            "locationName": "LifecycleConfiguration",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            },
            "type": "structure",
            "required": [
              "Rules"
            ],
            "members": {
              "Rules": {
                "shape": "S4m",
                "locationName": "Rule"
              }
            }
          }
        },
        "payload": "LifecycleConfiguration"
      },
      "deprecated": true
    },
    "PutBucketLifecycleConfiguration": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?lifecycle"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "LifecycleConfiguration": {
            "locationName": "LifecycleConfiguration",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            },
            "type": "structure",
            "required": [
              "Rules"
            ],
            "members": {
              "Rules": {
                "shape": "S51",
                "locationName": "Rule"
              }
            }
          }
        },
        "payload": "LifecycleConfiguration"
      }
    },
    "PutBucketLogging": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?logging"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "BucketLoggingStatus"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "BucketLoggingStatus": {
            "locationName": "BucketLoggingStatus",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            },
            "type": "structure",
            "members": {
              "LoggingEnabled": {
                "shape": "S5b"
              }
            }
          },
          "ContentMD5": {
            "location": "header",
            "locationName": "Content-MD5"
          }
        },
        "payload": "BucketLoggingStatus"
      }
    },
    "PutBucketMetricsConfiguration": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?metrics"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Id",
          "MetricsConfiguration"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Id": {
            "location": "querystring",
            "locationName": "id"
          },
          "MetricsConfiguration": {
            "shape": "S5j",
            "locationName": "MetricsConfiguration",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            }
          }
        },
        "payload": "MetricsConfiguration"
      }
    },
    "PutBucketNotification": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?notification"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "NotificationConfiguration"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "ContentMD5": {
            "location": "header",
            "locationName": "Content-MD5"
          },
          "NotificationConfiguration": {
            "shape": "S5n",
            "locationName": "NotificationConfiguration",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            }
          }
        },
        "payload": "NotificationConfiguration"
      },
      "deprecated": true
    },
    "PutBucketNotificationConfiguration": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?notification"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "NotificationConfiguration"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "NotificationConfiguration": {
            "shape": "S5y",
            "locationName": "NotificationConfiguration",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            }
          }
        },
        "payload": "NotificationConfiguration"
      }
    },
    "PutBucketPolicy": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?policy"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Policy"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "ContentMD5": {
            "location": "header",
            "locationName": "Content-MD5"
          },
          "ConfirmRemoveSelfBucketAccess": {
            "location": "header",
            "locationName": "x-amz-confirm-remove-self-bucket-access",
            "type": "boolean"
          },
          "Policy": {}
        },
        "payload": "Policy"
      }
    },
    "PutBucketReplication": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?replication"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "ReplicationConfiguration"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "ContentMD5": {
            "location": "header",
            "locationName": "Content-MD5"
          },
          "ReplicationConfiguration": {
            "shape": "S6h",
            "locationName": "ReplicationConfiguration",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            }
          }
        },
        "payload": "ReplicationConfiguration"
      }
    },
    "PutBucketRequestPayment": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?requestPayment"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "RequestPaymentConfiguration"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "ContentMD5": {
            "location": "header",
            "locationName": "Content-MD5"
          },
          "RequestPaymentConfiguration": {
            "locationName": "RequestPaymentConfiguration",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            },
            "type": "structure",
            "required": [
              "Payer"
            ],
            "members": {
              "Payer": {}
            }
          }
        },
        "payload": "RequestPaymentConfiguration"
      }
    },
    "PutBucketTagging": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?tagging"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Tagging"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "ContentMD5": {
            "location": "header",
            "locationName": "Content-MD5"
          },
          "Tagging": {
            "shape": "Sau",
            "locationName": "Tagging",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            }
          }
        },
        "payload": "Tagging"
      }
    },
    "PutBucketVersioning": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?versioning"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "VersioningConfiguration"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "ContentMD5": {
            "location": "header",
            "locationName": "Content-MD5"
          },
          "MFA": {
            "location": "header",
            "locationName": "x-amz-mfa"
          },
          "VersioningConfiguration": {
            "locationName": "VersioningConfiguration",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            },
            "type": "structure",
            "members": {
              "MFADelete": {
                "locationName": "MfaDelete"
              },
              "Status": {}
            }
          }
        },
        "payload": "VersioningConfiguration"
      }
    },
    "PutBucketWebsite": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}?website"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "WebsiteConfiguration"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "ContentMD5": {
            "location": "header",
            "locationName": "Content-MD5"
          },
          "WebsiteConfiguration": {
            "locationName": "WebsiteConfiguration",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            },
            "type": "structure",
            "members": {
              "ErrorDocument": {
                "shape": "S7a"
              },
              "IndexDocument": {
                "shape": "S78"
              },
              "RedirectAllRequestsTo": {
                "shape": "S75"
              },
              "RoutingRules": {
                "shape": "S7b"
              }
            }
          }
        },
        "payload": "WebsiteConfiguration"
      }
    },
    "PutObject": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}/{Key+}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Key"
        ],
        "members": {
          "ACL": {
            "location": "header",
            "locationName": "x-amz-acl"
          },
          "Body": {
            "streaming": true,
            "type": "blob"
          },
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "CacheControl": {
            "location": "header",
            "locationName": "Cache-Control"
          },
          "ContentDisposition": {
            "location": "header",
            "locationName": "Content-Disposition"
          },
          "ContentEncoding": {
            "location": "header",
            "locationName": "Content-Encoding"
          },
          "ContentLanguage": {
            "location": "header",
            "locationName": "Content-Language"
          },
          "ContentLength": {
            "location": "header",
            "locationName": "Content-Length",
            "type": "long"
          },
          "ContentMD5": {
            "location": "header",
            "locationName": "Content-MD5"
          },
          "ContentType": {
            "location": "header",
            "locationName": "Content-Type"
          },
          "Expires": {
            "location": "header",
            "locationName": "Expires",
            "type": "timestamp"
          },
          "GrantFullControl": {
            "location": "header",
            "locationName": "x-amz-grant-full-control"
          },
          "GrantRead": {
            "location": "header",
            "locationName": "x-amz-grant-read"
          },
          "GrantReadACP": {
            "location": "header",
            "locationName": "x-amz-grant-read-acp"
          },
          "GrantWriteACP": {
            "location": "header",
            "locationName": "x-amz-grant-write-acp"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "Metadata": {
            "shape": "S11",
            "location": "headers",
            "locationName": "x-amz-meta-"
          },
          "ServerSideEncryption": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption"
          },
          "StorageClass": {
            "location": "header",
            "locationName": "x-amz-storage-class"
          },
          "WebsiteRedirectLocation": {
            "location": "header",
            "locationName": "x-amz-website-redirect-location"
          },
          "SSECustomerAlgorithm": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-algorithm"
          },
          "SSECustomerKey": {
            "shape": "S19",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key"
          },
          "SSECustomerKeyMD5": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key-MD5"
          },
          "SSEKMSKeyId": {
            "shape": "Sj",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-aws-kms-key-id"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          },
          "Tagging": {
            "location": "header",
            "locationName": "x-amz-tagging"
          }
        },
        "payload": "Body"
      },
      "output": {
        "type": "structure",
        "members": {
          "Expiration": {
            "location": "header",
            "locationName": "x-amz-expiration"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          },
          "ServerSideEncryption": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption"
          },
          "VersionId": {
            "location": "header",
            "locationName": "x-amz-version-id"
          },
          "SSECustomerAlgorithm": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-algorithm"
          },
          "SSECustomerKeyMD5": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key-MD5"
          },
          "SSEKMSKeyId": {
            "shape": "Sj",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-aws-kms-key-id"
          },
          "RequestCharged": {
            "location": "header",
            "locationName": "x-amz-request-charged"
          }
        }
      }
    },
    "PutObjectAcl": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}/{Key+}?acl"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Key"
        ],
        "members": {
          "ACL": {
            "location": "header",
            "locationName": "x-amz-acl"
          },
          "AccessControlPolicy": {
            "shape": "Sa8",
            "locationName": "AccessControlPolicy",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            }
          },
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "ContentMD5": {
            "location": "header",
            "locationName": "Content-MD5"
          },
          "GrantFullControl": {
            "location": "header",
            "locationName": "x-amz-grant-full-control"
          },
          "GrantRead": {
            "location": "header",
            "locationName": "x-amz-grant-read"
          },
          "GrantReadACP": {
            "location": "header",
            "locationName": "x-amz-grant-read-acp"
          },
          "GrantWrite": {
            "location": "header",
            "locationName": "x-amz-grant-write"
          },
          "GrantWriteACP": {
            "location": "header",
            "locationName": "x-amz-grant-write-acp"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          },
          "VersionId": {
            "location": "querystring",
            "locationName": "versionId"
          }
        },
        "payload": "AccessControlPolicy"
      },
      "output": {
        "type": "structure",
        "members": {
          "RequestCharged": {
            "location": "header",
            "locationName": "x-amz-request-charged"
          }
        }
      }
    },
    "PutObjectTagging": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}/{Key+}?tagging"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Key",
          "Tagging"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "VersionId": {
            "location": "querystring",
            "locationName": "versionId"
          },
          "ContentMD5": {
            "location": "header",
            "locationName": "Content-MD5"
          },
          "Tagging": {
            "shape": "Sau",
            "locationName": "Tagging",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            }
          }
        },
        "payload": "Tagging"
      },
      "output": {
        "type": "structure",
        "members": {
          "VersionId": {
            "location": "header",
            "locationName": "x-amz-version-id"
          }
        }
      }
    },
    "RestoreObject": {
      "http": {
        "requestUri": "/{Bucket}/{Key+}?restore"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Key"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "VersionId": {
            "location": "querystring",
            "locationName": "versionId"
          },
          "RestoreRequest": {
            "locationName": "RestoreRequest",
            "xmlNamespace": {
              "uri": "http://s3.amazonaws.com/doc/2006-03-01/"
            },
            "type": "structure",
            "members": {
              "Days": {
                "type": "integer"
              },
              "GlacierJobParameters": {
                "type": "structure",
                "required": [
                  "Tier"
                ],
                "members": {
                  "Tier": {}
                }
              },
              "Type": {},
              "Tier": {},
              "Description": {},
              "SelectParameters": {
                "type": "structure",
                "required": [
                  "InputSerialization",
                  "ExpressionType",
                  "Expression",
                  "OutputSerialization"
                ],
                "members": {
                  "InputSerialization": {
                    "type": "structure",
                    "members": {
                      "CSV": {
                        "type": "structure",
                        "members": {
                          "FileHeaderInfo": {},
                          "Comments": {},
                          "QuoteEscapeCharacter": {},
                          "RecordDelimiter": {},
                          "FieldDelimiter": {},
                          "QuoteCharacter": {}
                        }
                      }
                    }
                  },
                  "ExpressionType": {},
                  "Expression": {},
                  "OutputSerialization": {
                    "type": "structure",
                    "members": {
                      "CSV": {
                        "type": "structure",
                        "members": {
                          "QuoteFields": {},
                          "QuoteEscapeCharacter": {},
                          "RecordDelimiter": {},
                          "FieldDelimiter": {},
                          "QuoteCharacter": {}
                        }
                      }
                    }
                  }
                }
              },
              "OutputLocation": {
                "type": "structure",
                "members": {
                  "S3": {
                    "type": "structure",
                    "required": [
                      "BucketName",
                      "Prefix"
                    ],
                    "members": {
                      "BucketName": {},
                      "Prefix": {},
                      "Encryption": {
                        "type": "structure",
                        "required": [
                          "EncryptionType"
                        ],
                        "members": {
                          "EncryptionType": {},
                          "KMSKeyId": {
                            "shape": "Sj"
                          },
                          "KMSContext": {}
                        }
                      },
                      "CannedACL": {},
                      "AccessControlList": {
                        "shape": "S2y"
                      },
                      "Tagging": {
                        "shape": "Sau"
                      },
                      "UserMetadata": {
                        "type": "list",
                        "member": {
                          "locationName": "MetadataEntry",
                          "type": "structure",
                          "members": {
                            "Name": {},
                            "Value": {}
                          }
                        }
                      },
                      "StorageClass": {}
                    }
                  }
                }
              }
            }
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          }
        },
        "payload": "RestoreRequest"
      },
      "output": {
        "type": "structure",
        "members": {
          "RequestCharged": {
            "location": "header",
            "locationName": "x-amz-request-charged"
          },
          "RestoreOutputPath": {
            "location": "header",
            "locationName": "x-amz-restore-output-path"
          }
        }
      },
      "alias": "PostObjectRestore"
    },
    "UploadPart": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}/{Key+}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "Key",
          "PartNumber",
          "UploadId"
        ],
        "members": {
          "Body": {
            "streaming": true,
            "type": "blob"
          },
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "ContentLength": {
            "location": "header",
            "locationName": "Content-Length",
            "type": "long"
          },
          "ContentMD5": {
            "location": "header",
            "locationName": "Content-MD5"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "PartNumber": {
            "location": "querystring",
            "locationName": "partNumber",
            "type": "integer"
          },
          "UploadId": {
            "location": "querystring",
            "locationName": "uploadId"
          },
          "SSECustomerAlgorithm": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-algorithm"
          },
          "SSECustomerKey": {
            "shape": "S19",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key"
          },
          "SSECustomerKeyMD5": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key-MD5"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          }
        },
        "payload": "Body"
      },
      "output": {
        "type": "structure",
        "members": {
          "ServerSideEncryption": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption"
          },
          "ETag": {
            "location": "header",
            "locationName": "ETag"
          },
          "SSECustomerAlgorithm": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-algorithm"
          },
          "SSECustomerKeyMD5": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key-MD5"
          },
          "SSEKMSKeyId": {
            "shape": "Sj",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-aws-kms-key-id"
          },
          "RequestCharged": {
            "location": "header",
            "locationName": "x-amz-request-charged"
          }
        }
      }
    },
    "UploadPartCopy": {
      "http": {
        "method": "PUT",
        "requestUri": "/{Bucket}/{Key+}"
      },
      "input": {
        "type": "structure",
        "required": [
          "Bucket",
          "CopySource",
          "Key",
          "PartNumber",
          "UploadId"
        ],
        "members": {
          "Bucket": {
            "location": "uri",
            "locationName": "Bucket"
          },
          "CopySource": {
            "location": "header",
            "locationName": "x-amz-copy-source"
          },
          "CopySourceIfMatch": {
            "location": "header",
            "locationName": "x-amz-copy-source-if-match"
          },
          "CopySourceIfModifiedSince": {
            "location": "header",
            "locationName": "x-amz-copy-source-if-modified-since",
            "type": "timestamp"
          },
          "CopySourceIfNoneMatch": {
            "location": "header",
            "locationName": "x-amz-copy-source-if-none-match"
          },
          "CopySourceIfUnmodifiedSince": {
            "location": "header",
            "locationName": "x-amz-copy-source-if-unmodified-since",
            "type": "timestamp"
          },
          "CopySourceRange": {
            "location": "header",
            "locationName": "x-amz-copy-source-range"
          },
          "Key": {
            "location": "uri",
            "locationName": "Key"
          },
          "PartNumber": {
            "location": "querystring",
            "locationName": "partNumber",
            "type": "integer"
          },
          "UploadId": {
            "location": "querystring",
            "locationName": "uploadId"
          },
          "SSECustomerAlgorithm": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-algorithm"
          },
          "SSECustomerKey": {
            "shape": "S19",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key"
          },
          "SSECustomerKeyMD5": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key-MD5"
          },
          "CopySourceSSECustomerAlgorithm": {
            "location": "header",
            "locationName": "x-amz-copy-source-server-side-encryption-customer-algorithm"
          },
          "CopySourceSSECustomerKey": {
            "shape": "S1c",
            "location": "header",
            "locationName": "x-amz-copy-source-server-side-encryption-customer-key"
          },
          "CopySourceSSECustomerKeyMD5": {
            "location": "header",
            "locationName": "x-amz-copy-source-server-side-encryption-customer-key-MD5"
          },
          "RequestPayer": {
            "location": "header",
            "locationName": "x-amz-request-payer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CopySourceVersionId": {
            "location": "header",
            "locationName": "x-amz-copy-source-version-id"
          },
          "CopyPartResult": {
            "type": "structure",
            "members": {
              "ETag": {},
              "LastModified": {
                "type": "timestamp"
              }
            }
          },
          "ServerSideEncryption": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption"
          },
          "SSECustomerAlgorithm": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-algorithm"
          },
          "SSECustomerKeyMD5": {
            "location": "header",
            "locationName": "x-amz-server-side-encryption-customer-key-MD5"
          },
          "SSEKMSKeyId": {
            "shape": "Sj",
            "location": "header",
            "locationName": "x-amz-server-side-encryption-aws-kms-key-id"
          },
          "RequestCharged": {
            "location": "header",
            "locationName": "x-amz-request-charged"
          }
        },
        "payload": "CopyPartResult"
      }
    }
  },
  "shapes": {
    "Sj": {
      "type": "string",
      "sensitive": true
    },
    "S11": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S19": {
      "type": "blob",
      "sensitive": true
    },
    "S1c": {
      "type": "blob",
      "sensitive": true
    },
    "S2v": {
      "type": "structure",
      "members": {
        "DisplayName": {},
        "ID": {}
      }
    },
    "S2y": {
      "type": "list",
      "member": {
        "locationName": "Grant",
        "type": "structure",
        "members": {
          "Grantee": {
            "shape": "S30"
          },
          "Permission": {}
        }
      }
    },
    "S30": {
      "type": "structure",
      "required": [
        "Type"
      ],
      "members": {
        "DisplayName": {},
        "EmailAddress": {},
        "ID": {},
        "Type": {
          "locationName": "xsi:type",
          "xmlAttribute": true
        },
        "URI": {}
      },
      "xmlNamespace": {
        "prefix": "xsi",
        "uri": "http://www.w3.org/2001/XMLSchema-instance"
      }
    },
    "S37": {
      "type": "structure",
      "required": [
        "Id",
        "StorageClassAnalysis"
      ],
      "members": {
        "Id": {},
        "Filter": {
          "type": "structure",
          "members": {
            "Prefix": {},
            "Tag": {
              "shape": "S3a"
            },
            "And": {
              "type": "structure",
              "members": {
                "Prefix": {},
                "Tags": {
                  "shape": "S3d",
                  "flattened": true,
                  "locationName": "Tag"
                }
              }
            }
          }
        },
        "StorageClassAnalysis": {
          "type": "structure",
          "members": {
            "DataExport": {
              "type": "structure",
              "required": [
                "OutputSchemaVersion",
                "Destination"
              ],
              "members": {
                "OutputSchemaVersion": {},
                "Destination": {
                  "type": "structure",
                  "required": [
                    "S3BucketDestination"
                  ],
                  "members": {
                    "S3BucketDestination": {
                      "type": "structure",
                      "required": [
                        "Format",
                        "Bucket"
                      ],
                      "members": {
                        "Format": {},
                        "BucketAccountId": {},
                        "Bucket": {},
                        "Prefix": {}
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "S3a": {
      "type": "structure",
      "required": [
        "Key",
        "Value"
      ],
      "members": {
        "Key": {},
        "Value": {}
      }
    },
    "S3d": {
      "type": "list",
      "member": {
        "shape": "S3a",
        "locationName": "Tag"
      }
    },
    "S3n": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "AllowedMethods",
          "AllowedOrigins"
        ],
        "members": {
          "AllowedHeaders": {
            "locationName": "AllowedHeader",
            "type": "list",
            "member": {},
            "flattened": true
          },
          "AllowedMethods": {
            "locationName": "AllowedMethod",
            "type": "list",
            "member": {},
            "flattened": true
          },
          "AllowedOrigins": {
            "locationName": "AllowedOrigin",
            "type": "list",
            "member": {},
            "flattened": true
          },
          "ExposeHeaders": {
            "locationName": "ExposeHeader",
            "type": "list",
            "member": {},
            "flattened": true
          },
          "MaxAgeSeconds": {
            "type": "integer"
          }
        }
      },
      "flattened": true
    },
    "S40": {
      "type": "structure",
      "required": [
        "Rules"
      ],
      "members": {
        "Rules": {
          "locationName": "Rule",
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "ApplyServerSideEncryptionByDefault": {
                "type": "structure",
                "required": [
                  "SSEAlgorithm"
                ],
                "members": {
                  "SSEAlgorithm": {},
                  "KMSMasterKeyID": {
                    "shape": "Sj"
                  }
                }
              }
            }
          },
          "flattened": true
        }
      }
    },
    "S46": {
      "type": "structure",
      "required": [
        "Destination",
        "IsEnabled",
        "Id",
        "IncludedObjectVersions",
        "Schedule"
      ],
      "members": {
        "Destination": {
          "type": "structure",
          "required": [
            "S3BucketDestination"
          ],
          "members": {
            "S3BucketDestination": {
              "type": "structure",
              "required": [
                "Bucket",
                "Format"
              ],
              "members": {
                "AccountId": {},
                "Bucket": {},
                "Format": {},
                "Prefix": {},
                "Encryption": {
                  "type": "structure",
                  "members": {
                    "SSES3": {
                      "locationName": "SSE-S3",
                      "type": "structure",
                      "members": {}
                    },
                    "SSEKMS": {
                      "locationName": "SSE-KMS",
                      "type": "structure",
                      "required": [
                        "KeyId"
                      ],
                      "members": {
                        "KeyId": {
                          "shape": "Sj"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "IsEnabled": {
          "type": "boolean"
        },
        "Filter": {
          "type": "structure",
          "required": [
            "Prefix"
          ],
          "members": {
            "Prefix": {}
          }
        },
        "Id": {},
        "IncludedObjectVersions": {},
        "OptionalFields": {
          "type": "list",
          "member": {
            "locationName": "Field"
          }
        },
        "Schedule": {
          "type": "structure",
          "required": [
            "Frequency"
          ],
          "members": {
            "Frequency": {}
          }
        }
      }
    },
    "S4m": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Prefix",
          "Status"
        ],
        "members": {
          "Expiration": {
            "shape": "S4o"
          },
          "ID": {},
          "Prefix": {},
          "Status": {},
          "Transition": {
            "shape": "S4t"
          },
          "NoncurrentVersionTransition": {
            "shape": "S4v"
          },
          "NoncurrentVersionExpiration": {
            "shape": "S4w"
          },
          "AbortIncompleteMultipartUpload": {
            "shape": "S4x"
          }
        }
      },
      "flattened": true
    },
    "S4o": {
      "type": "structure",
      "members": {
        "Date": {
          "shape": "S4p"
        },
        "Days": {
          "type": "integer"
        },
        "ExpiredObjectDeleteMarker": {
          "type": "boolean"
        }
      }
    },
    "S4p": {
      "type": "timestamp",
      "timestampFormat": "iso8601"
    },
    "S4t": {
      "type": "structure",
      "members": {
        "Date": {
          "shape": "S4p"
        },
        "Days": {
          "type": "integer"
        },
        "StorageClass": {}
      }
    },
    "S4v": {
      "type": "structure",
      "members": {
        "NoncurrentDays": {
          "type": "integer"
        },
        "StorageClass": {}
      }
    },
    "S4w": {
      "type": "structure",
      "members": {
        "NoncurrentDays": {
          "type": "integer"
        }
      }
    },
    "S4x": {
      "type": "structure",
      "members": {
        "DaysAfterInitiation": {
          "type": "integer"
        }
      }
    },
    "S51": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Status"
        ],
        "members": {
          "Expiration": {
            "shape": "S4o"
          },
          "ID": {},
          "Prefix": {
            "deprecated": true
          },
          "Filter": {
            "type": "structure",
            "members": {
              "Prefix": {},
              "Tag": {
                "shape": "S3a"
              },
              "And": {
                "type": "structure",
                "members": {
                  "Prefix": {},
                  "Tags": {
                    "shape": "S3d",
                    "flattened": true,
                    "locationName": "Tag"
                  }
                }
              }
            }
          },
          "Status": {},
          "Transitions": {
            "locationName": "Transition",
            "type": "list",
            "member": {
              "shape": "S4t"
            },
            "flattened": true
          },
          "NoncurrentVersionTransitions": {
            "locationName": "NoncurrentVersionTransition",
            "type": "list",
            "member": {
              "shape": "S4v"
            },
            "flattened": true
          },
          "NoncurrentVersionExpiration": {
            "shape": "S4w"
          },
          "AbortIncompleteMultipartUpload": {
            "shape": "S4x"
          }
        }
      },
      "flattened": true
    },
    "S5b": {
      "type": "structure",
      "members": {
        "TargetBucket": {},
        "TargetGrants": {
          "type": "list",
          "member": {
            "locationName": "Grant",
            "type": "structure",
            "members": {
              "Grantee": {
                "shape": "S30"
              },
              "Permission": {}
            }
          }
        },
        "TargetPrefix": {}
      }
    },
    "S5j": {
      "type": "structure",
      "required": [
        "Id"
      ],
      "members": {
        "Id": {},
        "Filter": {
          "type": "structure",
          "members": {
            "Prefix": {},
            "Tag": {
              "shape": "S3a"
            },
            "And": {
              "type": "structure",
              "members": {
                "Prefix": {},
                "Tags": {
                  "shape": "S3d",
                  "flattened": true,
                  "locationName": "Tag"
                }
              }
            }
          }
        }
      }
    },
    "S5m": {
      "type": "structure",
      "required": [
        "Bucket"
      ],
      "members": {
        "Bucket": {
          "location": "uri",
          "locationName": "Bucket"
        }
      }
    },
    "S5n": {
      "type": "structure",
      "members": {
        "TopicConfiguration": {
          "type": "structure",
          "members": {
            "Id": {},
            "Events": {
              "shape": "S5q",
              "locationName": "Event"
            },
            "Event": {
              "deprecated": true
            },
            "Topic": {}
          }
        },
        "QueueConfiguration": {
          "type": "structure",
          "members": {
            "Id": {},
            "Event": {
              "deprecated": true
            },
            "Events": {
              "shape": "S5q",
              "locationName": "Event"
            },
            "Queue": {}
          }
        },
        "CloudFunctionConfiguration": {
          "type": "structure",
          "members": {
            "Id": {},
            "Event": {
              "deprecated": true
            },
            "Events": {
              "shape": "S5q",
              "locationName": "Event"
            },
            "CloudFunction": {},
            "InvocationRole": {}
          }
        }
      }
    },
    "S5q": {
      "type": "list",
      "member": {},
      "flattened": true
    },
    "S5y": {
      "type": "structure",
      "members": {
        "TopicConfigurations": {
          "locationName": "TopicConfiguration",
          "type": "list",
          "member": {
            "type": "structure",
            "required": [
              "TopicArn",
              "Events"
            ],
            "members": {
              "Id": {},
              "TopicArn": {
                "locationName": "Topic"
              },
              "Events": {
                "shape": "S5q",
                "locationName": "Event"
              },
              "Filter": {
                "shape": "S61"
              }
            }
          },
          "flattened": true
        },
        "QueueConfigurations": {
          "locationName": "QueueConfiguration",
          "type": "list",
          "member": {
            "type": "structure",
            "required": [
              "QueueArn",
              "Events"
            ],
            "members": {
              "Id": {},
              "QueueArn": {
                "locationName": "Queue"
              },
              "Events": {
                "shape": "S5q",
                "locationName": "Event"
              },
              "Filter": {
                "shape": "S61"
              }
            }
          },
          "flattened": true
        },
        "LambdaFunctionConfigurations": {
          "locationName": "CloudFunctionConfiguration",
          "type": "list",
          "member": {
            "type": "structure",
            "required": [
              "LambdaFunctionArn",
              "Events"
            ],
            "members": {
              "Id": {},
              "LambdaFunctionArn": {
                "locationName": "CloudFunction"
              },
              "Events": {
                "shape": "S5q",
                "locationName": "Event"
              },
              "Filter": {
                "shape": "S61"
              }
            }
          },
          "flattened": true
        }
      }
    },
    "S61": {
      "type": "structure",
      "members": {
        "Key": {
          "locationName": "S3Key",
          "type": "structure",
          "members": {
            "FilterRules": {
              "locationName": "FilterRule",
              "type": "list",
              "member": {
                "type": "structure",
                "members": {
                  "Name": {},
                  "Value": {}
                }
              },
              "flattened": true
            }
          }
        }
      }
    },
    "S6h": {
      "type": "structure",
      "required": [
        "Role",
        "Rules"
      ],
      "members": {
        "Role": {},
        "Rules": {
          "locationName": "Rule",
          "type": "list",
          "member": {
            "type": "structure",
            "required": [
              "Prefix",
              "Status",
              "Destination"
            ],
            "members": {
              "ID": {},
              "Prefix": {},
              "Status": {},
              "SourceSelectionCriteria": {
                "type": "structure",
                "members": {
                  "SseKmsEncryptedObjects": {
                    "type": "structure",
                    "required": [
                      "Status"
                    ],
                    "members": {
                      "Status": {}
                    }
                  }
                }
              },
              "Destination": {
                "type": "structure",
                "required": [
                  "Bucket"
                ],
                "members": {
                  "Bucket": {},
                  "Account": {},
                  "StorageClass": {},
                  "AccessControlTranslation": {
                    "type": "structure",
                    "required": [
                      "Owner"
                    ],
                    "members": {
                      "Owner": {}
                    }
                  },
                  "EncryptionConfiguration": {
                    "type": "structure",
                    "members": {
                      "ReplicaKmsKeyID": {}
                    }
                  }
                }
              }
            }
          },
          "flattened": true
        }
      }
    },
    "S75": {
      "type": "structure",
      "required": [
        "HostName"
      ],
      "members": {
        "HostName": {},
        "Protocol": {}
      }
    },
    "S78": {
      "type": "structure",
      "required": [
        "Suffix"
      ],
      "members": {
        "Suffix": {}
      }
    },
    "S7a": {
      "type": "structure",
      "required": [
        "Key"
      ],
      "members": {
        "Key": {}
      }
    },
    "S7b": {
      "type": "list",
      "member": {
        "locationName": "RoutingRule",
        "type": "structure",
        "required": [
          "Redirect"
        ],
        "members": {
          "Condition": {
            "type": "structure",
            "members": {
              "HttpErrorCodeReturnedEquals": {},
              "KeyPrefixEquals": {}
            }
          },
          "Redirect": {
            "type": "structure",
            "members": {
              "HostName": {},
              "HttpRedirectCode": {},
              "Protocol": {},
              "ReplaceKeyPrefixWith": {},
              "ReplaceKeyWith": {}
            }
          }
        }
      }
    },
    "S97": {
      "type": "structure",
      "members": {
        "ID": {},
        "DisplayName": {}
      }
    },
    "S98": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Prefix": {}
        }
      },
      "flattened": true
    },
    "S9q": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Key": {},
          "LastModified": {
            "type": "timestamp"
          },
          "ETag": {},
          "Size": {
            "type": "integer"
          },
          "StorageClass": {},
          "Owner": {
            "shape": "S2v"
          }
        }
      },
      "flattened": true
    },
    "Sa8": {
      "type": "structure",
      "members": {
        "Grants": {
          "shape": "S2y",
          "locationName": "AccessControlList"
        },
        "Owner": {
          "shape": "S2v"
        }
      }
    },
    "Sau": {
      "type": "structure",
      "required": [
        "TagSet"
      ],
      "members": {
        "TagSet": {
          "shape": "S3d"
        }
      }
    }
  }
}
},{}],144:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListBuckets": {
      "result_key": "Buckets"
    },
    "ListMultipartUploads": {
      "input_token": [
        "KeyMarker",
        "UploadIdMarker"
      ],
      "limit_key": "MaxUploads",
      "more_results": "IsTruncated",
      "output_token": [
        "NextKeyMarker",
        "NextUploadIdMarker"
      ],
      "result_key": [
        "Uploads",
        "CommonPrefixes"
      ]
    },
    "ListObjectVersions": {
      "input_token": [
        "KeyMarker",
        "VersionIdMarker"
      ],
      "limit_key": "MaxKeys",
      "more_results": "IsTruncated",
      "output_token": [
        "NextKeyMarker",
        "NextVersionIdMarker"
      ],
      "result_key": [
        "Versions",
        "DeleteMarkers",
        "CommonPrefixes"
      ]
    },
    "ListObjects": {
      "input_token": "Marker",
      "limit_key": "MaxKeys",
      "more_results": "IsTruncated",
      "output_token": "NextMarker || Contents[-1].Key",
      "result_key": [
        "Contents",
        "CommonPrefixes"
      ]
    },
    "ListObjectsV2": {
      "input_token": "ContinuationToken",
      "limit_key": "MaxKeys",
      "output_token": "NextContinuationToken",
      "result_key": [
        "Contents",
        "CommonPrefixes"
      ]
    },
    "ListParts": {
      "input_token": "PartNumberMarker",
      "limit_key": "MaxParts",
      "more_results": "IsTruncated",
      "output_token": "NextPartNumberMarker",
      "result_key": "Parts"
    }
  }
}
},{}],145:[function(require,module,exports){
module.exports={
  "version": 2,
  "waiters": {
    "BucketExists": {
      "delay": 5,
      "operation": "HeadBucket",
      "maxAttempts": 20,
      "acceptors": [
        {
          "expected": 200,
          "matcher": "status",
          "state": "success"
        },
        {
          "expected": 301,
          "matcher": "status",
          "state": "success"
        },
        {
          "expected": 403,
          "matcher": "status",
          "state": "success"
        },
        {
          "expected": 404,
          "matcher": "status",
          "state": "retry"
        }
      ]
    },
    "BucketNotExists": {
      "delay": 5,
      "operation": "HeadBucket",
      "maxAttempts": 20,
      "acceptors": [
        {
          "expected": 404,
          "matcher": "status",
          "state": "success"
        }
      ]
    },
    "ObjectExists": {
      "delay": 5,
      "operation": "HeadObject",
      "maxAttempts": 20,
      "acceptors": [
        {
          "expected": 200,
          "matcher": "status",
          "state": "success"
        },
        {
          "expected": 404,
          "matcher": "status",
          "state": "retry"
        }
      ]
    },
    "ObjectNotExists": {
      "delay": 5,
      "operation": "HeadObject",
      "maxAttempts": 20,
      "acceptors": [
        {
          "expected": 404,
          "matcher": "status",
          "state": "success"
        }
      ]
    }
  }
}

},{}],146:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-12-10",
    "endpointPrefix": "servicecatalog",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceFullName": "AWS Service Catalog",
    "signatureVersion": "v4",
    "targetPrefix": "AWS242ServiceCatalogService",
    "uid": "servicecatalog-2015-12-10"
  },
  "operations": {
    "AcceptPortfolioShare": {
      "input": {
        "type": "structure",
        "required": [
          "PortfolioId"
        ],
        "members": {
          "AcceptLanguage": {},
          "PortfolioId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AssociatePrincipalWithPortfolio": {
      "input": {
        "type": "structure",
        "required": [
          "PortfolioId",
          "PrincipalARN",
          "PrincipalType"
        ],
        "members": {
          "AcceptLanguage": {},
          "PortfolioId": {},
          "PrincipalARN": {},
          "PrincipalType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AssociateProductWithPortfolio": {
      "input": {
        "type": "structure",
        "required": [
          "ProductId",
          "PortfolioId"
        ],
        "members": {
          "AcceptLanguage": {},
          "ProductId": {},
          "PortfolioId": {},
          "SourcePortfolioId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "AssociateTagOptionWithResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceId",
          "TagOptionId"
        ],
        "members": {
          "ResourceId": {},
          "TagOptionId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "CopyProduct": {
      "input": {
        "type": "structure",
        "required": [
          "SourceProductArn",
          "IdempotencyToken"
        ],
        "members": {
          "AcceptLanguage": {},
          "SourceProductArn": {},
          "TargetProductId": {},
          "TargetProductName": {},
          "SourceProvisioningArtifactIdentifiers": {
            "type": "list",
            "member": {
              "type": "map",
              "key": {},
              "value": {}
            }
          },
          "CopyOptions": {
            "type": "list",
            "member": {}
          },
          "IdempotencyToken": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CopyProductToken": {}
        }
      }
    },
    "CreateConstraint": {
      "input": {
        "type": "structure",
        "required": [
          "PortfolioId",
          "ProductId",
          "Parameters",
          "Type",
          "IdempotencyToken"
        ],
        "members": {
          "AcceptLanguage": {},
          "PortfolioId": {},
          "ProductId": {},
          "Parameters": {},
          "Type": {},
          "Description": {},
          "IdempotencyToken": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ConstraintDetail": {
            "shape": "Sv"
          },
          "ConstraintParameters": {},
          "Status": {}
        }
      }
    },
    "CreatePortfolio": {
      "input": {
        "type": "structure",
        "required": [
          "DisplayName",
          "ProviderName",
          "IdempotencyToken"
        ],
        "members": {
          "AcceptLanguage": {},
          "DisplayName": {},
          "Description": {},
          "ProviderName": {},
          "Tags": {
            "shape": "S12"
          },
          "IdempotencyToken": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "PortfolioDetail": {
            "shape": "S17"
          },
          "Tags": {
            "shape": "S1a"
          }
        }
      }
    },
    "CreatePortfolioShare": {
      "input": {
        "type": "structure",
        "required": [
          "PortfolioId",
          "AccountId"
        ],
        "members": {
          "AcceptLanguage": {},
          "PortfolioId": {},
          "AccountId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "CreateProduct": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "Owner",
          "ProductType",
          "ProvisioningArtifactParameters",
          "IdempotencyToken"
        ],
        "members": {
          "AcceptLanguage": {},
          "Name": {},
          "Owner": {},
          "Description": {},
          "Distributor": {},
          "SupportDescription": {},
          "SupportEmail": {},
          "SupportUrl": {},
          "ProductType": {},
          "Tags": {
            "shape": "S12"
          },
          "ProvisioningArtifactParameters": {
            "shape": "S1k"
          },
          "IdempotencyToken": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ProductViewDetail": {
            "shape": "S1s"
          },
          "ProvisioningArtifactDetail": {
            "shape": "S1x"
          },
          "Tags": {
            "shape": "S1a"
          }
        }
      }
    },
    "CreateProvisioningArtifact": {
      "input": {
        "type": "structure",
        "required": [
          "ProductId",
          "Parameters",
          "IdempotencyToken"
        ],
        "members": {
          "AcceptLanguage": {},
          "ProductId": {},
          "Parameters": {
            "shape": "S1k"
          },
          "IdempotencyToken": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ProvisioningArtifactDetail": {
            "shape": "S1x"
          },
          "Info": {
            "shape": "S1n"
          },
          "Status": {}
        }
      }
    },
    "CreateTagOption": {
      "input": {
        "type": "structure",
        "required": [
          "Key",
          "Value"
        ],
        "members": {
          "Key": {},
          "Value": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TagOptionDetail": {
            "shape": "S25"
          }
        }
      }
    },
    "DeleteConstraint": {
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "AcceptLanguage": {},
          "Id": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeletePortfolio": {
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "AcceptLanguage": {},
          "Id": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeletePortfolioShare": {
      "input": {
        "type": "structure",
        "required": [
          "PortfolioId",
          "AccountId"
        ],
        "members": {
          "AcceptLanguage": {},
          "PortfolioId": {},
          "AccountId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteProduct": {
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "AcceptLanguage": {},
          "Id": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteProvisioningArtifact": {
      "input": {
        "type": "structure",
        "required": [
          "ProductId",
          "ProvisioningArtifactId"
        ],
        "members": {
          "AcceptLanguage": {},
          "ProductId": {},
          "ProvisioningArtifactId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DescribeConstraint": {
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "AcceptLanguage": {},
          "Id": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ConstraintDetail": {
            "shape": "Sv"
          },
          "ConstraintParameters": {},
          "Status": {}
        }
      }
    },
    "DescribeCopyProductStatus": {
      "input": {
        "type": "structure",
        "required": [
          "CopyProductToken"
        ],
        "members": {
          "AcceptLanguage": {},
          "CopyProductToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CopyProductStatus": {},
          "TargetProductId": {},
          "StatusDetail": {}
        }
      }
    },
    "DescribePortfolio": {
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "AcceptLanguage": {},
          "Id": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "PortfolioDetail": {
            "shape": "S17"
          },
          "Tags": {
            "shape": "S1a"
          },
          "TagOptions": {
            "shape": "S2p"
          }
        }
      }
    },
    "DescribeProduct": {
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "AcceptLanguage": {},
          "Id": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ProductViewSummary": {
            "shape": "S1t"
          },
          "ProvisioningArtifacts": {
            "shape": "S2s"
          }
        }
      }
    },
    "DescribeProductAsAdmin": {
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "AcceptLanguage": {},
          "Id": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ProductViewDetail": {
            "shape": "S1s"
          },
          "ProvisioningArtifactSummaries": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Id": {},
                "Name": {},
                "Description": {},
                "CreatedTime": {
                  "type": "timestamp"
                },
                "ProvisioningArtifactMetadata": {
                  "shape": "S1n"
                }
              }
            }
          },
          "Tags": {
            "shape": "S1a"
          },
          "TagOptions": {
            "shape": "S2p"
          }
        }
      }
    },
    "DescribeProductView": {
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "AcceptLanguage": {},
          "Id": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ProductViewSummary": {
            "shape": "S1t"
          },
          "ProvisioningArtifacts": {
            "shape": "S2s"
          }
        }
      }
    },
    "DescribeProvisionedProduct": {
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "AcceptLanguage": {},
          "Id": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ProvisionedProductDetail": {
            "shape": "S33"
          }
        }
      }
    },
    "DescribeProvisioningArtifact": {
      "input": {
        "type": "structure",
        "required": [
          "ProvisioningArtifactId",
          "ProductId"
        ],
        "members": {
          "AcceptLanguage": {},
          "ProvisioningArtifactId": {},
          "ProductId": {},
          "Verbose": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ProvisioningArtifactDetail": {
            "shape": "S1x"
          },
          "Info": {
            "shape": "S1n"
          },
          "Status": {}
        }
      }
    },
    "DescribeProvisioningParameters": {
      "input": {
        "type": "structure",
        "required": [
          "ProductId",
          "ProvisioningArtifactId"
        ],
        "members": {
          "AcceptLanguage": {},
          "ProductId": {},
          "ProvisioningArtifactId": {},
          "PathId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ProvisioningArtifactParameters": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ParameterKey": {},
                "DefaultValue": {},
                "ParameterType": {},
                "IsNoEcho": {
                  "type": "boolean"
                },
                "Description": {},
                "ParameterConstraints": {
                  "type": "structure",
                  "members": {
                    "AllowedValues": {
                      "type": "list",
                      "member": {}
                    }
                  }
                }
              }
            }
          },
          "ConstraintSummaries": {
            "shape": "S3p"
          },
          "UsageInstructions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Type": {},
                "Value": {}
              }
            }
          },
          "TagOptions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Key": {},
                "Values": {
                  "type": "list",
                  "member": {}
                }
              }
            }
          }
        }
      }
    },
    "DescribeRecord": {
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "AcceptLanguage": {},
          "Id": {},
          "PageToken": {},
          "PageSize": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RecordDetail": {
            "shape": "S42"
          },
          "RecordOutputs": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "OutputKey": {},
                "OutputValue": {},
                "Description": {}
              }
            }
          },
          "NextPageToken": {}
        }
      }
    },
    "DescribeTagOption": {
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TagOptionDetail": {
            "shape": "S25"
          }
        }
      }
    },
    "DisassociatePrincipalFromPortfolio": {
      "input": {
        "type": "structure",
        "required": [
          "PortfolioId",
          "PrincipalARN"
        ],
        "members": {
          "AcceptLanguage": {},
          "PortfolioId": {},
          "PrincipalARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DisassociateProductFromPortfolio": {
      "input": {
        "type": "structure",
        "required": [
          "ProductId",
          "PortfolioId"
        ],
        "members": {
          "AcceptLanguage": {},
          "ProductId": {},
          "PortfolioId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DisassociateTagOptionFromResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceId",
          "TagOptionId"
        ],
        "members": {
          "ResourceId": {},
          "TagOptionId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "ListAcceptedPortfolioShares": {
      "input": {
        "type": "structure",
        "members": {
          "AcceptLanguage": {},
          "PageToken": {},
          "PageSize": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "PortfolioDetails": {
            "shape": "S4t"
          },
          "NextPageToken": {}
        }
      }
    },
    "ListConstraintsForPortfolio": {
      "input": {
        "type": "structure",
        "required": [
          "PortfolioId"
        ],
        "members": {
          "AcceptLanguage": {},
          "PortfolioId": {},
          "ProductId": {},
          "PageSize": {
            "type": "integer"
          },
          "PageToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ConstraintDetails": {
            "type": "list",
            "member": {
              "shape": "Sv"
            }
          },
          "NextPageToken": {}
        }
      }
    },
    "ListLaunchPaths": {
      "input": {
        "type": "structure",
        "required": [
          "ProductId"
        ],
        "members": {
          "AcceptLanguage": {},
          "ProductId": {},
          "PageSize": {
            "type": "integer"
          },
          "PageToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "LaunchPathSummaries": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Id": {},
                "ConstraintSummaries": {
                  "shape": "S3p"
                },
                "Tags": {
                  "shape": "S1a"
                },
                "Name": {}
              }
            }
          },
          "NextPageToken": {}
        }
      }
    },
    "ListPortfolioAccess": {
      "input": {
        "type": "structure",
        "required": [
          "PortfolioId"
        ],
        "members": {
          "AcceptLanguage": {},
          "PortfolioId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AccountIds": {
            "type": "list",
            "member": {}
          },
          "NextPageToken": {}
        }
      }
    },
    "ListPortfolios": {
      "input": {
        "type": "structure",
        "members": {
          "AcceptLanguage": {},
          "PageToken": {},
          "PageSize": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "PortfolioDetails": {
            "shape": "S4t"
          },
          "NextPageToken": {}
        }
      }
    },
    "ListPortfoliosForProduct": {
      "input": {
        "type": "structure",
        "required": [
          "ProductId"
        ],
        "members": {
          "AcceptLanguage": {},
          "ProductId": {},
          "PageToken": {},
          "PageSize": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "PortfolioDetails": {
            "shape": "S4t"
          },
          "NextPageToken": {}
        }
      }
    },
    "ListPrincipalsForPortfolio": {
      "input": {
        "type": "structure",
        "required": [
          "PortfolioId"
        ],
        "members": {
          "AcceptLanguage": {},
          "PortfolioId": {},
          "PageSize": {
            "type": "integer"
          },
          "PageToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Principals": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "PrincipalARN": {},
                "PrincipalType": {}
              }
            }
          },
          "NextPageToken": {}
        }
      }
    },
    "ListProvisioningArtifacts": {
      "input": {
        "type": "structure",
        "required": [
          "ProductId"
        ],
        "members": {
          "AcceptLanguage": {},
          "ProductId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ProvisioningArtifactDetails": {
            "type": "list",
            "member": {
              "shape": "S1x"
            }
          },
          "NextPageToken": {}
        }
      }
    },
    "ListRecordHistory": {
      "input": {
        "type": "structure",
        "members": {
          "AcceptLanguage": {},
          "AccessLevelFilter": {
            "shape": "S5h"
          },
          "SearchFilter": {
            "type": "structure",
            "members": {
              "Key": {},
              "Value": {}
            }
          },
          "PageSize": {
            "type": "integer"
          },
          "PageToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RecordDetails": {
            "type": "list",
            "member": {
              "shape": "S42"
            }
          },
          "NextPageToken": {}
        }
      }
    },
    "ListResourcesForTagOption": {
      "input": {
        "type": "structure",
        "required": [
          "TagOptionId"
        ],
        "members": {
          "TagOptionId": {},
          "ResourceType": {},
          "PageSize": {
            "type": "integer"
          },
          "PageToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResourceDetails": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Id": {},
                "ARN": {},
                "Name": {},
                "Description": {},
                "CreatedTime": {
                  "type": "timestamp"
                }
              }
            }
          },
          "PageToken": {}
        }
      }
    },
    "ListTagOptions": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "type": "structure",
            "members": {
              "Key": {},
              "Value": {},
              "Active": {
                "type": "boolean"
              }
            }
          },
          "PageSize": {
            "type": "integer"
          },
          "PageToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TagOptionDetails": {
            "shape": "S2p"
          },
          "PageToken": {}
        }
      }
    },
    "ProvisionProduct": {
      "input": {
        "type": "structure",
        "required": [
          "ProductId",
          "ProvisioningArtifactId",
          "ProvisionedProductName",
          "ProvisionToken"
        ],
        "members": {
          "AcceptLanguage": {},
          "ProductId": {},
          "ProvisioningArtifactId": {},
          "PathId": {},
          "ProvisionedProductName": {},
          "ProvisioningParameters": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Key": {},
                "Value": {}
              }
            }
          },
          "Tags": {
            "shape": "S1a"
          },
          "NotificationArns": {
            "type": "list",
            "member": {}
          },
          "ProvisionToken": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RecordDetail": {
            "shape": "S42"
          }
        }
      }
    },
    "RejectPortfolioShare": {
      "input": {
        "type": "structure",
        "required": [
          "PortfolioId"
        ],
        "members": {
          "AcceptLanguage": {},
          "PortfolioId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "ScanProvisionedProducts": {
      "input": {
        "type": "structure",
        "members": {
          "AcceptLanguage": {},
          "AccessLevelFilter": {
            "shape": "S5h"
          },
          "PageSize": {
            "type": "integer"
          },
          "PageToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ProvisionedProducts": {
            "type": "list",
            "member": {
              "shape": "S33"
            }
          },
          "NextPageToken": {}
        }
      }
    },
    "SearchProducts": {
      "input": {
        "type": "structure",
        "members": {
          "AcceptLanguage": {},
          "Filters": {
            "shape": "S6f"
          },
          "PageSize": {
            "type": "integer"
          },
          "SortBy": {},
          "SortOrder": {},
          "PageToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ProductViewSummaries": {
            "type": "list",
            "member": {
              "shape": "S1t"
            }
          },
          "ProductViewAggregations": {
            "type": "map",
            "key": {},
            "value": {
              "type": "list",
              "member": {
                "type": "structure",
                "members": {
                  "Value": {},
                  "ApproximateCount": {
                    "type": "integer"
                  }
                }
              }
            }
          },
          "NextPageToken": {}
        }
      }
    },
    "SearchProductsAsAdmin": {
      "input": {
        "type": "structure",
        "members": {
          "AcceptLanguage": {},
          "PortfolioId": {},
          "Filters": {
            "shape": "S6f"
          },
          "SortBy": {},
          "SortOrder": {},
          "PageToken": {},
          "PageSize": {
            "type": "integer"
          },
          "ProductSource": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ProductViewDetails": {
            "type": "list",
            "member": {
              "shape": "S1s"
            }
          },
          "NextPageToken": {}
        }
      }
    },
    "TerminateProvisionedProduct": {
      "input": {
        "type": "structure",
        "required": [
          "TerminateToken"
        ],
        "members": {
          "ProvisionedProductName": {},
          "ProvisionedProductId": {},
          "TerminateToken": {
            "idempotencyToken": true
          },
          "IgnoreErrors": {
            "type": "boolean"
          },
          "AcceptLanguage": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RecordDetail": {
            "shape": "S42"
          }
        }
      }
    },
    "UpdateConstraint": {
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "AcceptLanguage": {},
          "Id": {},
          "Description": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ConstraintDetail": {
            "shape": "Sv"
          },
          "ConstraintParameters": {},
          "Status": {}
        }
      }
    },
    "UpdatePortfolio": {
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "AcceptLanguage": {},
          "Id": {},
          "DisplayName": {},
          "Description": {},
          "ProviderName": {},
          "AddTags": {
            "shape": "S12"
          },
          "RemoveTags": {
            "shape": "S73"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "PortfolioDetail": {
            "shape": "S17"
          },
          "Tags": {
            "shape": "S1a"
          }
        }
      }
    },
    "UpdateProduct": {
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "AcceptLanguage": {},
          "Id": {},
          "Name": {},
          "Owner": {},
          "Description": {},
          "Distributor": {},
          "SupportDescription": {},
          "SupportEmail": {},
          "SupportUrl": {},
          "AddTags": {
            "shape": "S12"
          },
          "RemoveTags": {
            "shape": "S73"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ProductViewDetail": {
            "shape": "S1s"
          },
          "Tags": {
            "shape": "S1a"
          }
        }
      }
    },
    "UpdateProvisionedProduct": {
      "input": {
        "type": "structure",
        "required": [
          "UpdateToken"
        ],
        "members": {
          "AcceptLanguage": {},
          "ProvisionedProductName": {},
          "ProvisionedProductId": {},
          "ProductId": {},
          "ProvisioningArtifactId": {},
          "PathId": {},
          "ProvisioningParameters": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Key": {},
                "Value": {},
                "UsePreviousValue": {
                  "type": "boolean"
                }
              }
            }
          },
          "UpdateToken": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RecordDetail": {
            "shape": "S42"
          }
        }
      }
    },
    "UpdateProvisioningArtifact": {
      "input": {
        "type": "structure",
        "required": [
          "ProductId",
          "ProvisioningArtifactId"
        ],
        "members": {
          "AcceptLanguage": {},
          "ProductId": {},
          "ProvisioningArtifactId": {},
          "Name": {},
          "Description": {},
          "Active": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ProvisioningArtifactDetail": {
            "shape": "S1x"
          },
          "Info": {
            "shape": "S1n"
          },
          "Status": {}
        }
      }
    },
    "UpdateTagOption": {
      "input": {
        "type": "structure",
        "required": [
          "Id"
        ],
        "members": {
          "Id": {},
          "Value": {},
          "Active": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TagOptionDetail": {
            "shape": "S25"
          }
        }
      }
    }
  },
  "shapes": {
    "Sv": {
      "type": "structure",
      "members": {
        "ConstraintId": {},
        "Type": {},
        "Description": {},
        "Owner": {}
      }
    },
    "S12": {
      "type": "list",
      "member": {
        "shape": "S13"
      }
    },
    "S13": {
      "type": "structure",
      "required": [
        "Key",
        "Value"
      ],
      "members": {
        "Key": {},
        "Value": {}
      }
    },
    "S17": {
      "type": "structure",
      "members": {
        "Id": {},
        "ARN": {},
        "DisplayName": {},
        "Description": {},
        "CreatedTime": {
          "type": "timestamp"
        },
        "ProviderName": {}
      }
    },
    "S1a": {
      "type": "list",
      "member": {
        "shape": "S13"
      }
    },
    "S1k": {
      "type": "structure",
      "required": [
        "Info"
      ],
      "members": {
        "Name": {},
        "Description": {},
        "Info": {
          "shape": "S1n"
        },
        "Type": {}
      }
    },
    "S1n": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S1s": {
      "type": "structure",
      "members": {
        "ProductViewSummary": {
          "shape": "S1t"
        },
        "Status": {},
        "ProductARN": {},
        "CreatedTime": {
          "type": "timestamp"
        }
      }
    },
    "S1t": {
      "type": "structure",
      "members": {
        "Id": {},
        "ProductId": {},
        "Name": {},
        "Owner": {},
        "ShortDescription": {},
        "Type": {},
        "Distributor": {},
        "HasDefaultPath": {
          "type": "boolean"
        },
        "SupportEmail": {},
        "SupportDescription": {},
        "SupportUrl": {}
      }
    },
    "S1x": {
      "type": "structure",
      "members": {
        "Id": {},
        "Name": {},
        "Description": {},
        "Type": {},
        "CreatedTime": {
          "type": "timestamp"
        },
        "Active": {
          "type": "boolean"
        }
      }
    },
    "S25": {
      "type": "structure",
      "members": {
        "Key": {},
        "Value": {},
        "Active": {
          "type": "boolean"
        },
        "Id": {}
      }
    },
    "S2p": {
      "type": "list",
      "member": {
        "shape": "S25"
      }
    },
    "S2s": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Id": {},
          "Name": {},
          "Description": {},
          "CreatedTime": {
            "type": "timestamp"
          }
        }
      }
    },
    "S33": {
      "type": "structure",
      "members": {
        "Name": {},
        "Arn": {},
        "Type": {},
        "Id": {},
        "Status": {},
        "StatusMessage": {},
        "CreatedTime": {
          "type": "timestamp"
        },
        "IdempotencyToken": {},
        "LastRecordId": {}
      }
    },
    "S3p": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Type": {},
          "Description": {}
        }
      }
    },
    "S42": {
      "type": "structure",
      "members": {
        "RecordId": {},
        "ProvisionedProductName": {},
        "Status": {},
        "CreatedTime": {
          "type": "timestamp"
        },
        "UpdatedTime": {
          "type": "timestamp"
        },
        "ProvisionedProductType": {},
        "RecordType": {},
        "ProvisionedProductId": {},
        "ProductId": {},
        "ProvisioningArtifactId": {},
        "PathId": {},
        "RecordErrors": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "Code": {},
              "Description": {}
            }
          }
        },
        "RecordTags": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "Key": {},
              "Value": {}
            }
          }
        }
      }
    },
    "S4t": {
      "type": "list",
      "member": {
        "shape": "S17"
      }
    },
    "S5h": {
      "type": "structure",
      "members": {
        "Key": {},
        "Value": {}
      }
    },
    "S6f": {
      "type": "map",
      "key": {},
      "value": {
        "type": "list",
        "member": {}
      }
    },
    "S73": {
      "type": "list",
      "member": {}
    }
  }
}
},{}],147:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListAcceptedPortfolioShares": {
      "input_token": "PageToken",
      "output_token": "NextPageToken",
      "limit_key": "PageSize"
    },
    "ListConstraintsForPortfolio": {
      "input_token": "PageToken",
      "output_token": "NextPageToken",
      "limit_key": "PageSize"
    },
    "ListLaunchPaths": {
      "input_token": "PageToken",
      "output_token": "NextPageToken",
      "limit_key": "PageSize"
    },
    "ListPortfolios": {
      "input_token": "PageToken",
      "output_token": "NextPageToken",
      "limit_key": "PageSize"
    },
    "ListPortfoliosForProduct": {
      "input_token": "PageToken",
      "output_token": "NextPageToken",
      "limit_key": "PageSize"
    },
    "ListPrincipalsForPortfolio": {
      "input_token": "PageToken",
      "output_token": "NextPageToken",
      "limit_key": "PageSize"
    },
    "ListResourcesForTagOption": {
      "input_token": "PageToken",
      "output_token": "PageToken",
      "limit_key": "PageSize"
    },
    "ListTagOptions": {
      "input_token": "PageToken",
      "output_token": "PageToken",
      "limit_key": "PageSize"
    },
    "SearchProducts": {
      "input_token": "PageToken",
      "output_token": "NextPageToken",
      "limit_key": "PageSize"
    },
    "SearchProductsAsAdmin": {
      "input_token": "PageToken",
      "output_token": "NextPageToken",
      "limit_key": "PageSize"
    }
  }
}

},{}],148:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "uid": "sns-2010-03-31",
    "apiVersion": "2010-03-31",
    "endpointPrefix": "sns",
    "protocol": "query",
    "serviceAbbreviation": "Amazon SNS",
    "serviceFullName": "Amazon Simple Notification Service",
    "signatureVersion": "v4",
    "xmlNamespace": "http://sns.amazonaws.com/doc/2010-03-31/"
  },
  "operations": {
    "AddPermission": {
      "input": {
        "type": "structure",
        "required": [
          "TopicArn",
          "Label",
          "AWSAccountId",
          "ActionName"
        ],
        "members": {
          "TopicArn": {},
          "Label": {},
          "AWSAccountId": {
            "type": "list",
            "member": {}
          },
          "ActionName": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "CheckIfPhoneNumberIsOptedOut": {
      "input": {
        "type": "structure",
        "required": [
          "phoneNumber"
        ],
        "members": {
          "phoneNumber": {}
        }
      },
      "output": {
        "resultWrapper": "CheckIfPhoneNumberIsOptedOutResult",
        "type": "structure",
        "members": {
          "isOptedOut": {
            "type": "boolean"
          }
        }
      }
    },
    "ConfirmSubscription": {
      "input": {
        "type": "structure",
        "required": [
          "TopicArn",
          "Token"
        ],
        "members": {
          "TopicArn": {},
          "Token": {},
          "AuthenticateOnUnsubscribe": {}
        }
      },
      "output": {
        "resultWrapper": "ConfirmSubscriptionResult",
        "type": "structure",
        "members": {
          "SubscriptionArn": {}
        }
      }
    },
    "CreatePlatformApplication": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "Platform",
          "Attributes"
        ],
        "members": {
          "Name": {},
          "Platform": {},
          "Attributes": {
            "shape": "Sj"
          }
        }
      },
      "output": {
        "resultWrapper": "CreatePlatformApplicationResult",
        "type": "structure",
        "members": {
          "PlatformApplicationArn": {}
        }
      }
    },
    "CreatePlatformEndpoint": {
      "input": {
        "type": "structure",
        "required": [
          "PlatformApplicationArn",
          "Token"
        ],
        "members": {
          "PlatformApplicationArn": {},
          "Token": {},
          "CustomUserData": {},
          "Attributes": {
            "shape": "Sj"
          }
        }
      },
      "output": {
        "resultWrapper": "CreatePlatformEndpointResult",
        "type": "structure",
        "members": {
          "EndpointArn": {}
        }
      }
    },
    "CreateTopic": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      },
      "output": {
        "resultWrapper": "CreateTopicResult",
        "type": "structure",
        "members": {
          "TopicArn": {}
        }
      }
    },
    "DeleteEndpoint": {
      "input": {
        "type": "structure",
        "required": [
          "EndpointArn"
        ],
        "members": {
          "EndpointArn": {}
        }
      }
    },
    "DeletePlatformApplication": {
      "input": {
        "type": "structure",
        "required": [
          "PlatformApplicationArn"
        ],
        "members": {
          "PlatformApplicationArn": {}
        }
      }
    },
    "DeleteTopic": {
      "input": {
        "type": "structure",
        "required": [
          "TopicArn"
        ],
        "members": {
          "TopicArn": {}
        }
      }
    },
    "GetEndpointAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "EndpointArn"
        ],
        "members": {
          "EndpointArn": {}
        }
      },
      "output": {
        "resultWrapper": "GetEndpointAttributesResult",
        "type": "structure",
        "members": {
          "Attributes": {
            "shape": "Sj"
          }
        }
      }
    },
    "GetPlatformApplicationAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "PlatformApplicationArn"
        ],
        "members": {
          "PlatformApplicationArn": {}
        }
      },
      "output": {
        "resultWrapper": "GetPlatformApplicationAttributesResult",
        "type": "structure",
        "members": {
          "Attributes": {
            "shape": "Sj"
          }
        }
      }
    },
    "GetSMSAttributes": {
      "input": {
        "type": "structure",
        "members": {
          "attributes": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "resultWrapper": "GetSMSAttributesResult",
        "type": "structure",
        "members": {
          "attributes": {
            "shape": "Sj"
          }
        }
      }
    },
    "GetSubscriptionAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionArn"
        ],
        "members": {
          "SubscriptionArn": {}
        }
      },
      "output": {
        "resultWrapper": "GetSubscriptionAttributesResult",
        "type": "structure",
        "members": {
          "Attributes": {
            "type": "map",
            "key": {},
            "value": {}
          }
        }
      }
    },
    "GetTopicAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "TopicArn"
        ],
        "members": {
          "TopicArn": {}
        }
      },
      "output": {
        "resultWrapper": "GetTopicAttributesResult",
        "type": "structure",
        "members": {
          "Attributes": {
            "type": "map",
            "key": {},
            "value": {}
          }
        }
      }
    },
    "ListEndpointsByPlatformApplication": {
      "input": {
        "type": "structure",
        "required": [
          "PlatformApplicationArn"
        ],
        "members": {
          "PlatformApplicationArn": {},
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "ListEndpointsByPlatformApplicationResult",
        "type": "structure",
        "members": {
          "Endpoints": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "EndpointArn": {},
                "Attributes": {
                  "shape": "Sj"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListPhoneNumbersOptedOut": {
      "input": {
        "type": "structure",
        "members": {
          "nextToken": {}
        }
      },
      "output": {
        "resultWrapper": "ListPhoneNumbersOptedOutResult",
        "type": "structure",
        "members": {
          "phoneNumbers": {
            "type": "list",
            "member": {}
          },
          "nextToken": {}
        }
      }
    },
    "ListPlatformApplications": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "ListPlatformApplicationsResult",
        "type": "structure",
        "members": {
          "PlatformApplications": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "PlatformApplicationArn": {},
                "Attributes": {
                  "shape": "Sj"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListSubscriptions": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "ListSubscriptionsResult",
        "type": "structure",
        "members": {
          "Subscriptions": {
            "shape": "S1n"
          },
          "NextToken": {}
        }
      }
    },
    "ListSubscriptionsByTopic": {
      "input": {
        "type": "structure",
        "required": [
          "TopicArn"
        ],
        "members": {
          "TopicArn": {},
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "ListSubscriptionsByTopicResult",
        "type": "structure",
        "members": {
          "Subscriptions": {
            "shape": "S1n"
          },
          "NextToken": {}
        }
      }
    },
    "ListTopics": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {}
        }
      },
      "output": {
        "resultWrapper": "ListTopicsResult",
        "type": "structure",
        "members": {
          "Topics": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "TopicArn": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "OptInPhoneNumber": {
      "input": {
        "type": "structure",
        "required": [
          "phoneNumber"
        ],
        "members": {
          "phoneNumber": {}
        }
      },
      "output": {
        "resultWrapper": "OptInPhoneNumberResult",
        "type": "structure",
        "members": {}
      }
    },
    "Publish": {
      "input": {
        "type": "structure",
        "required": [
          "Message"
        ],
        "members": {
          "TopicArn": {},
          "TargetArn": {},
          "PhoneNumber": {},
          "Message": {},
          "Subject": {},
          "MessageStructure": {},
          "MessageAttributes": {
            "type": "map",
            "key": {
              "locationName": "Name"
            },
            "value": {
              "locationName": "Value",
              "type": "structure",
              "required": [
                "DataType"
              ],
              "members": {
                "DataType": {},
                "StringValue": {},
                "BinaryValue": {
                  "type": "blob"
                }
              }
            }
          }
        }
      },
      "output": {
        "resultWrapper": "PublishResult",
        "type": "structure",
        "members": {
          "MessageId": {}
        }
      }
    },
    "RemovePermission": {
      "input": {
        "type": "structure",
        "required": [
          "TopicArn",
          "Label"
        ],
        "members": {
          "TopicArn": {},
          "Label": {}
        }
      }
    },
    "SetEndpointAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "EndpointArn",
          "Attributes"
        ],
        "members": {
          "EndpointArn": {},
          "Attributes": {
            "shape": "Sj"
          }
        }
      }
    },
    "SetPlatformApplicationAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "PlatformApplicationArn",
          "Attributes"
        ],
        "members": {
          "PlatformApplicationArn": {},
          "Attributes": {
            "shape": "Sj"
          }
        }
      }
    },
    "SetSMSAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "attributes"
        ],
        "members": {
          "attributes": {
            "shape": "Sj"
          }
        }
      },
      "output": {
        "resultWrapper": "SetSMSAttributesResult",
        "type": "structure",
        "members": {}
      }
    },
    "SetSubscriptionAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionArn",
          "AttributeName"
        ],
        "members": {
          "SubscriptionArn": {},
          "AttributeName": {},
          "AttributeValue": {}
        }
      }
    },
    "SetTopicAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "TopicArn",
          "AttributeName"
        ],
        "members": {
          "TopicArn": {},
          "AttributeName": {},
          "AttributeValue": {}
        }
      }
    },
    "Subscribe": {
      "input": {
        "type": "structure",
        "required": [
          "TopicArn",
          "Protocol"
        ],
        "members": {
          "TopicArn": {},
          "Protocol": {},
          "Endpoint": {}
        }
      },
      "output": {
        "resultWrapper": "SubscribeResult",
        "type": "structure",
        "members": {
          "SubscriptionArn": {}
        }
      }
    },
    "Unsubscribe": {
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionArn"
        ],
        "members": {
          "SubscriptionArn": {}
        }
      }
    }
  },
  "shapes": {
    "Sj": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S1n": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "SubscriptionArn": {},
          "Owner": {},
          "Protocol": {},
          "Endpoint": {},
          "TopicArn": {}
        }
      }
    }
  }
}
},{}],149:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListEndpointsByPlatformApplication": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "result_key": "Endpoints"
    },
    "ListPlatformApplications": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "result_key": "PlatformApplications"
    },
    "ListSubscriptions": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "result_key": "Subscriptions"
    },
    "ListSubscriptionsByTopic": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "result_key": "Subscriptions"
    },
    "ListTopics": {
      "input_token": "NextToken",
      "output_token": "NextToken",
      "result_key": "Topics"
    }
  }
}

},{}],150:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2012-11-05",
    "endpointPrefix": "sqs",
    "protocol": "query",
    "serviceAbbreviation": "Amazon SQS",
    "serviceFullName": "Amazon Simple Queue Service",
    "signatureVersion": "v4",
    "uid": "sqs-2012-11-05",
    "xmlNamespace": "http://queue.amazonaws.com/doc/2012-11-05/"
  },
  "operations": {
    "AddPermission": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl",
          "Label",
          "AWSAccountIds",
          "Actions"
        ],
        "members": {
          "QueueUrl": {},
          "Label": {},
          "AWSAccountIds": {
            "type": "list",
            "member": {
              "locationName": "AWSAccountId"
            },
            "flattened": true
          },
          "Actions": {
            "type": "list",
            "member": {
              "locationName": "ActionName"
            },
            "flattened": true
          }
        }
      }
    },
    "ChangeMessageVisibility": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl",
          "ReceiptHandle",
          "VisibilityTimeout"
        ],
        "members": {
          "QueueUrl": {},
          "ReceiptHandle": {},
          "VisibilityTimeout": {
            "type": "integer"
          }
        }
      }
    },
    "ChangeMessageVisibilityBatch": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl",
          "Entries"
        ],
        "members": {
          "QueueUrl": {},
          "Entries": {
            "type": "list",
            "member": {
              "locationName": "ChangeMessageVisibilityBatchRequestEntry",
              "type": "structure",
              "required": [
                "Id",
                "ReceiptHandle"
              ],
              "members": {
                "Id": {},
                "ReceiptHandle": {},
                "VisibilityTimeout": {
                  "type": "integer"
                }
              }
            },
            "flattened": true
          }
        }
      },
      "output": {
        "resultWrapper": "ChangeMessageVisibilityBatchResult",
        "type": "structure",
        "required": [
          "Successful",
          "Failed"
        ],
        "members": {
          "Successful": {
            "type": "list",
            "member": {
              "locationName": "ChangeMessageVisibilityBatchResultEntry",
              "type": "structure",
              "required": [
                "Id"
              ],
              "members": {
                "Id": {}
              }
            },
            "flattened": true
          },
          "Failed": {
            "shape": "Sd"
          }
        }
      }
    },
    "CreateQueue": {
      "input": {
        "type": "structure",
        "required": [
          "QueueName"
        ],
        "members": {
          "QueueName": {},
          "Attributes": {
            "shape": "Sh",
            "locationName": "Attribute"
          }
        }
      },
      "output": {
        "resultWrapper": "CreateQueueResult",
        "type": "structure",
        "members": {
          "QueueUrl": {}
        }
      }
    },
    "DeleteMessage": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl",
          "ReceiptHandle"
        ],
        "members": {
          "QueueUrl": {},
          "ReceiptHandle": {}
        }
      }
    },
    "DeleteMessageBatch": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl",
          "Entries"
        ],
        "members": {
          "QueueUrl": {},
          "Entries": {
            "type": "list",
            "member": {
              "locationName": "DeleteMessageBatchRequestEntry",
              "type": "structure",
              "required": [
                "Id",
                "ReceiptHandle"
              ],
              "members": {
                "Id": {},
                "ReceiptHandle": {}
              }
            },
            "flattened": true
          }
        }
      },
      "output": {
        "resultWrapper": "DeleteMessageBatchResult",
        "type": "structure",
        "required": [
          "Successful",
          "Failed"
        ],
        "members": {
          "Successful": {
            "type": "list",
            "member": {
              "locationName": "DeleteMessageBatchResultEntry",
              "type": "structure",
              "required": [
                "Id"
              ],
              "members": {
                "Id": {}
              }
            },
            "flattened": true
          },
          "Failed": {
            "shape": "Sd"
          }
        }
      }
    },
    "DeleteQueue": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl"
        ],
        "members": {
          "QueueUrl": {}
        }
      }
    },
    "GetQueueAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl"
        ],
        "members": {
          "QueueUrl": {},
          "AttributeNames": {
            "shape": "St"
          }
        }
      },
      "output": {
        "resultWrapper": "GetQueueAttributesResult",
        "type": "structure",
        "members": {
          "Attributes": {
            "shape": "Sh",
            "locationName": "Attribute"
          }
        }
      }
    },
    "GetQueueUrl": {
      "input": {
        "type": "structure",
        "required": [
          "QueueName"
        ],
        "members": {
          "QueueName": {},
          "QueueOwnerAWSAccountId": {}
        }
      },
      "output": {
        "resultWrapper": "GetQueueUrlResult",
        "type": "structure",
        "members": {
          "QueueUrl": {}
        }
      }
    },
    "ListDeadLetterSourceQueues": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl"
        ],
        "members": {
          "QueueUrl": {}
        }
      },
      "output": {
        "resultWrapper": "ListDeadLetterSourceQueuesResult",
        "type": "structure",
        "required": [
          "queueUrls"
        ],
        "members": {
          "queueUrls": {
            "shape": "Sz"
          }
        }
      }
    },
    "ListQueueTags": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl"
        ],
        "members": {
          "QueueUrl": {}
        }
      },
      "output": {
        "resultWrapper": "ListQueueTagsResult",
        "type": "structure",
        "members": {
          "Tags": {
            "shape": "S12",
            "locationName": "Tag"
          }
        }
      }
    },
    "ListQueues": {
      "input": {
        "type": "structure",
        "members": {
          "QueueNamePrefix": {}
        }
      },
      "output": {
        "resultWrapper": "ListQueuesResult",
        "type": "structure",
        "members": {
          "QueueUrls": {
            "shape": "Sz"
          }
        }
      }
    },
    "PurgeQueue": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl"
        ],
        "members": {
          "QueueUrl": {}
        }
      }
    },
    "ReceiveMessage": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl"
        ],
        "members": {
          "QueueUrl": {},
          "AttributeNames": {
            "shape": "St"
          },
          "MessageAttributeNames": {
            "type": "list",
            "member": {
              "locationName": "MessageAttributeName"
            },
            "flattened": true
          },
          "MaxNumberOfMessages": {
            "type": "integer"
          },
          "VisibilityTimeout": {
            "type": "integer"
          },
          "WaitTimeSeconds": {
            "type": "integer"
          },
          "ReceiveRequestAttemptId": {}
        }
      },
      "output": {
        "resultWrapper": "ReceiveMessageResult",
        "type": "structure",
        "members": {
          "Messages": {
            "type": "list",
            "member": {
              "locationName": "Message",
              "type": "structure",
              "members": {
                "MessageId": {},
                "ReceiptHandle": {},
                "MD5OfBody": {},
                "Body": {},
                "Attributes": {
                  "locationName": "Attribute",
                  "type": "map",
                  "key": {
                    "locationName": "Name"
                  },
                  "value": {
                    "locationName": "Value"
                  },
                  "flattened": true
                },
                "MD5OfMessageAttributes": {},
                "MessageAttributes": {
                  "shape": "S1g",
                  "locationName": "MessageAttribute"
                }
              }
            },
            "flattened": true
          }
        }
      }
    },
    "RemovePermission": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl",
          "Label"
        ],
        "members": {
          "QueueUrl": {},
          "Label": {}
        }
      }
    },
    "SendMessage": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl",
          "MessageBody"
        ],
        "members": {
          "QueueUrl": {},
          "MessageBody": {},
          "DelaySeconds": {
            "type": "integer"
          },
          "MessageAttributes": {
            "shape": "S1g",
            "locationName": "MessageAttribute"
          },
          "MessageDeduplicationId": {},
          "MessageGroupId": {}
        }
      },
      "output": {
        "resultWrapper": "SendMessageResult",
        "type": "structure",
        "members": {
          "MD5OfMessageBody": {},
          "MD5OfMessageAttributes": {},
          "MessageId": {},
          "SequenceNumber": {}
        }
      }
    },
    "SendMessageBatch": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl",
          "Entries"
        ],
        "members": {
          "QueueUrl": {},
          "Entries": {
            "type": "list",
            "member": {
              "locationName": "SendMessageBatchRequestEntry",
              "type": "structure",
              "required": [
                "Id",
                "MessageBody"
              ],
              "members": {
                "Id": {},
                "MessageBody": {},
                "DelaySeconds": {
                  "type": "integer"
                },
                "MessageAttributes": {
                  "shape": "S1g",
                  "locationName": "MessageAttribute"
                },
                "MessageDeduplicationId": {},
                "MessageGroupId": {}
              }
            },
            "flattened": true
          }
        }
      },
      "output": {
        "resultWrapper": "SendMessageBatchResult",
        "type": "structure",
        "required": [
          "Successful",
          "Failed"
        ],
        "members": {
          "Successful": {
            "type": "list",
            "member": {
              "locationName": "SendMessageBatchResultEntry",
              "type": "structure",
              "required": [
                "Id",
                "MessageId",
                "MD5OfMessageBody"
              ],
              "members": {
                "Id": {},
                "MessageId": {},
                "MD5OfMessageBody": {},
                "MD5OfMessageAttributes": {},
                "SequenceNumber": {}
              }
            },
            "flattened": true
          },
          "Failed": {
            "shape": "Sd"
          }
        }
      }
    },
    "SetQueueAttributes": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl",
          "Attributes"
        ],
        "members": {
          "QueueUrl": {},
          "Attributes": {
            "shape": "Sh",
            "locationName": "Attribute"
          }
        }
      }
    },
    "TagQueue": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl",
          "Tags"
        ],
        "members": {
          "QueueUrl": {},
          "Tags": {
            "shape": "S12"
          }
        }
      }
    },
    "UntagQueue": {
      "input": {
        "type": "structure",
        "required": [
          "QueueUrl",
          "TagKeys"
        ],
        "members": {
          "QueueUrl": {},
          "TagKeys": {
            "type": "list",
            "member": {
              "locationName": "TagKey"
            },
            "flattened": true
          }
        }
      }
    }
  },
  "shapes": {
    "Sd": {
      "type": "list",
      "member": {
        "locationName": "BatchResultErrorEntry",
        "type": "structure",
        "required": [
          "Id",
          "SenderFault",
          "Code"
        ],
        "members": {
          "Id": {},
          "SenderFault": {
            "type": "boolean"
          },
          "Code": {},
          "Message": {}
        }
      },
      "flattened": true
    },
    "Sh": {
      "type": "map",
      "key": {
        "locationName": "Name"
      },
      "value": {
        "locationName": "Value"
      },
      "flattened": true,
      "locationName": "Attribute"
    },
    "St": {
      "type": "list",
      "member": {
        "locationName": "AttributeName"
      },
      "flattened": true
    },
    "Sz": {
      "type": "list",
      "member": {
        "locationName": "QueueUrl"
      },
      "flattened": true
    },
    "S12": {
      "type": "map",
      "key": {
        "locationName": "Key"
      },
      "value": {
        "locationName": "Value"
      },
      "flattened": true,
      "locationName": "Tag"
    },
    "S1g": {
      "type": "map",
      "key": {
        "locationName": "Name"
      },
      "value": {
        "locationName": "Value",
        "type": "structure",
        "required": [
          "DataType"
        ],
        "members": {
          "StringValue": {},
          "BinaryValue": {
            "type": "blob"
          },
          "StringListValues": {
            "flattened": true,
            "locationName": "StringListValue",
            "type": "list",
            "member": {
              "locationName": "StringListValue"
            }
          },
          "BinaryListValues": {
            "flattened": true,
            "locationName": "BinaryListValue",
            "type": "list",
            "member": {
              "locationName": "BinaryListValue",
              "type": "blob"
            }
          },
          "DataType": {}
        }
      },
      "flattened": true
    }
  }
}
},{}],151:[function(require,module,exports){
module.exports={
  "pagination": {
    "ListQueues": {
      "result_key": "QueueUrls"
    }
  }
}
},{}],152:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2014-11-06",
    "endpointPrefix": "ssm",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "Amazon SSM",
    "serviceFullName": "Amazon Simple Systems Manager (SSM)",
    "serviceId": "SSM",
    "signatureVersion": "v4",
    "targetPrefix": "AmazonSSM",
    "uid": "ssm-2014-11-06"
  },
  "operations": {
    "AddTagsToResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceType",
          "ResourceId",
          "Tags"
        ],
        "members": {
          "ResourceType": {},
          "ResourceId": {},
          "Tags": {
            "shape": "S4"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "CancelCommand": {
      "input": {
        "type": "structure",
        "required": [
          "CommandId"
        ],
        "members": {
          "CommandId": {},
          "InstanceIds": {
            "shape": "Sb"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "CreateActivation": {
      "input": {
        "type": "structure",
        "required": [
          "IamRole"
        ],
        "members": {
          "Description": {},
          "DefaultInstanceName": {},
          "IamRole": {},
          "RegistrationLimit": {
            "type": "integer"
          },
          "ExpirationDate": {
            "type": "timestamp"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ActivationId": {},
          "ActivationCode": {}
        }
      }
    },
    "CreateAssociation": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {},
          "DocumentVersion": {},
          "InstanceId": {},
          "Parameters": {
            "shape": "Sq"
          },
          "Targets": {
            "shape": "Su"
          },
          "ScheduleExpression": {},
          "OutputLocation": {
            "shape": "S10"
          },
          "AssociationName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AssociationDescription": {
            "shape": "S17"
          }
        }
      }
    },
    "CreateAssociationBatch": {
      "input": {
        "type": "structure",
        "required": [
          "Entries"
        ],
        "members": {
          "Entries": {
            "type": "list",
            "member": {
              "shape": "S1l"
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Successful": {
            "type": "list",
            "member": {
              "shape": "S17"
            }
          },
          "Failed": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Entry": {
                  "shape": "S1l"
                },
                "Message": {},
                "Fault": {}
              }
            }
          }
        }
      }
    },
    "CreateDocument": {
      "input": {
        "type": "structure",
        "required": [
          "Content",
          "Name"
        ],
        "members": {
          "Content": {},
          "Name": {},
          "DocumentType": {},
          "DocumentFormat": {},
          "TargetType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DocumentDescription": {
            "shape": "S1y"
          }
        }
      }
    },
    "CreateMaintenanceWindow": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "Schedule",
          "Duration",
          "Cutoff",
          "AllowUnassociatedTargets"
        ],
        "members": {
          "Name": {},
          "Description": {
            "shape": "S2h"
          },
          "Schedule": {},
          "Duration": {
            "type": "integer"
          },
          "Cutoff": {
            "type": "integer"
          },
          "AllowUnassociatedTargets": {
            "type": "boolean"
          },
          "ClientToken": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowId": {}
        }
      }
    },
    "CreatePatchBaseline": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "OperatingSystem": {},
          "Name": {},
          "GlobalFilters": {
            "shape": "S2s"
          },
          "ApprovalRules": {
            "shape": "S2y"
          },
          "ApprovedPatches": {
            "shape": "S33"
          },
          "ApprovedPatchesComplianceLevel": {},
          "RejectedPatches": {
            "shape": "S33"
          },
          "Description": {},
          "ClientToken": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BaselineId": {}
        }
      }
    },
    "CreateResourceDataSync": {
      "input": {
        "type": "structure",
        "required": [
          "SyncName",
          "S3Destination"
        ],
        "members": {
          "SyncName": {},
          "S3Destination": {
            "shape": "S3a"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteActivation": {
      "input": {
        "type": "structure",
        "required": [
          "ActivationId"
        ],
        "members": {
          "ActivationId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteAssociation": {
      "input": {
        "type": "structure",
        "members": {
          "Name": {},
          "InstanceId": {},
          "AssociationId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteDocument": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteMaintenanceWindow": {
      "input": {
        "type": "structure",
        "required": [
          "WindowId"
        ],
        "members": {
          "WindowId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowId": {}
        }
      }
    },
    "DeleteParameter": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteParameters": {
      "input": {
        "type": "structure",
        "required": [
          "Names"
        ],
        "members": {
          "Names": {
            "shape": "S3t"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DeletedParameters": {
            "shape": "S3t"
          },
          "InvalidParameters": {
            "shape": "S3t"
          }
        }
      }
    },
    "DeletePatchBaseline": {
      "input": {
        "type": "structure",
        "required": [
          "BaselineId"
        ],
        "members": {
          "BaselineId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BaselineId": {}
        }
      }
    },
    "DeleteResourceDataSync": {
      "input": {
        "type": "structure",
        "required": [
          "SyncName"
        ],
        "members": {
          "SyncName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeregisterManagedInstance": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "InstanceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeregisterPatchBaselineForPatchGroup": {
      "input": {
        "type": "structure",
        "required": [
          "BaselineId",
          "PatchGroup"
        ],
        "members": {
          "BaselineId": {},
          "PatchGroup": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BaselineId": {},
          "PatchGroup": {}
        }
      }
    },
    "DeregisterTargetFromMaintenanceWindow": {
      "input": {
        "type": "structure",
        "required": [
          "WindowId",
          "WindowTargetId"
        ],
        "members": {
          "WindowId": {},
          "WindowTargetId": {},
          "Safe": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowId": {},
          "WindowTargetId": {}
        }
      }
    },
    "DeregisterTaskFromMaintenanceWindow": {
      "input": {
        "type": "structure",
        "required": [
          "WindowId",
          "WindowTaskId"
        ],
        "members": {
          "WindowId": {},
          "WindowTaskId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowId": {},
          "WindowTaskId": {}
        }
      }
    },
    "DescribeActivations": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "FilterKey": {},
                "FilterValues": {
                  "type": "list",
                  "member": {}
                }
              }
            }
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ActivationList": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ActivationId": {},
                "Description": {},
                "DefaultInstanceName": {},
                "IamRole": {},
                "RegistrationLimit": {
                  "type": "integer"
                },
                "RegistrationsCount": {
                  "type": "integer"
                },
                "ExpirationDate": {
                  "type": "timestamp"
                },
                "Expired": {
                  "type": "boolean"
                },
                "CreatedDate": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeAssociation": {
      "input": {
        "type": "structure",
        "members": {
          "Name": {},
          "InstanceId": {},
          "AssociationId": {},
          "AssociationVersion": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AssociationDescription": {
            "shape": "S17"
          }
        }
      }
    },
    "DescribeAutomationExecutions": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Key",
                "Values"
              ],
              "members": {
                "Key": {},
                "Values": {
                  "type": "list",
                  "member": {}
                }
              }
            }
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AutomationExecutionMetadataList": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "AutomationExecutionId": {},
                "DocumentName": {},
                "DocumentVersion": {},
                "AutomationExecutionStatus": {},
                "ExecutionStartTime": {
                  "type": "timestamp"
                },
                "ExecutionEndTime": {
                  "type": "timestamp"
                },
                "ExecutedBy": {},
                "LogFile": {},
                "Outputs": {
                  "shape": "S52"
                },
                "Mode": {},
                "ParentAutomationExecutionId": {},
                "CurrentStepName": {},
                "CurrentAction": {},
                "FailureMessage": {},
                "TargetParameterName": {},
                "Targets": {
                  "shape": "Su"
                },
                "ResolvedTargets": {
                  "shape": "S57"
                },
                "MaxConcurrency": {},
                "MaxErrors": {},
                "Target": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeAutomationStepExecutions": {
      "input": {
        "type": "structure",
        "required": [
          "AutomationExecutionId"
        ],
        "members": {
          "AutomationExecutionId": {},
          "Filters": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Key",
                "Values"
              ],
              "members": {
                "Key": {},
                "Values": {
                  "type": "list",
                  "member": {}
                }
              }
            }
          },
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          },
          "ReverseOrder": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StepExecutions": {
            "shape": "S5i"
          },
          "NextToken": {}
        }
      }
    },
    "DescribeAvailablePatches": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "S5q"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Patches": {
            "type": "list",
            "member": {
              "shape": "S5y"
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeDocument": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {},
          "DocumentVersion": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Document": {
            "shape": "S1y"
          }
        }
      }
    },
    "DescribeDocumentPermission": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "PermissionType"
        ],
        "members": {
          "Name": {},
          "PermissionType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AccountIds": {
            "shape": "S6f"
          }
        }
      }
    },
    "DescribeEffectiveInstanceAssociations": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "InstanceId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Associations": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "AssociationId": {},
                "InstanceId": {},
                "Content": {},
                "AssociationVersion": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeEffectivePatchesForPatchBaseline": {
      "input": {
        "type": "structure",
        "required": [
          "BaselineId"
        ],
        "members": {
          "BaselineId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "EffectivePatches": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Patch": {
                  "shape": "S5y"
                },
                "PatchStatus": {
                  "type": "structure",
                  "members": {
                    "DeploymentStatus": {},
                    "ComplianceLevel": {},
                    "ApprovalDate": {
                      "type": "timestamp"
                    }
                  }
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeInstanceAssociationsStatus": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "InstanceId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstanceAssociationStatusInfos": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "AssociationId": {},
                "Name": {},
                "DocumentVersion": {},
                "AssociationVersion": {},
                "InstanceId": {},
                "ExecutionDate": {
                  "type": "timestamp"
                },
                "Status": {},
                "DetailedStatus": {},
                "ExecutionSummary": {},
                "ErrorCode": {},
                "OutputUrl": {
                  "type": "structure",
                  "members": {
                    "S3OutputUrl": {
                      "type": "structure",
                      "members": {
                        "OutputUrl": {}
                      }
                    }
                  }
                },
                "AssociationName": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeInstanceInformation": {
      "input": {
        "type": "structure",
        "members": {
          "InstanceInformationFilterList": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "key",
                "valueSet"
              ],
              "members": {
                "key": {},
                "valueSet": {
                  "shape": "S75"
                }
              }
            }
          },
          "Filters": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Key",
                "Values"
              ],
              "members": {
                "Key": {},
                "Values": {
                  "shape": "S75"
                }
              }
            }
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstanceInformationList": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "InstanceId": {},
                "PingStatus": {},
                "LastPingDateTime": {
                  "type": "timestamp"
                },
                "AgentVersion": {},
                "IsLatestVersion": {
                  "type": "boolean"
                },
                "PlatformType": {},
                "PlatformName": {},
                "PlatformVersion": {},
                "ActivationId": {},
                "IamRole": {},
                "RegistrationDate": {
                  "type": "timestamp"
                },
                "ResourceType": {},
                "Name": {},
                "IPAddress": {},
                "ComputerName": {},
                "AssociationStatus": {},
                "LastAssociationExecutionDate": {
                  "type": "timestamp"
                },
                "LastSuccessfulAssociationExecutionDate": {
                  "type": "timestamp"
                },
                "AssociationOverview": {
                  "type": "structure",
                  "members": {
                    "DetailedStatus": {},
                    "InstanceAssociationStatusAggregatedCount": {
                      "type": "map",
                      "key": {},
                      "value": {
                        "type": "integer"
                      }
                    }
                  }
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeInstancePatchStates": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceIds"
        ],
        "members": {
          "InstanceIds": {
            "shape": "Sb"
          },
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstancePatchStates": {
            "type": "list",
            "member": {
              "shape": "S7p"
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeInstancePatchStatesForPatchGroup": {
      "input": {
        "type": "structure",
        "required": [
          "PatchGroup"
        ],
        "members": {
          "PatchGroup": {},
          "Filters": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Key",
                "Values",
                "Type"
              ],
              "members": {
                "Key": {},
                "Values": {
                  "type": "list",
                  "member": {}
                },
                "Type": {}
              }
            }
          },
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstancePatchStates": {
            "type": "list",
            "member": {
              "shape": "S7p"
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeInstancePatches": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId"
        ],
        "members": {
          "InstanceId": {},
          "Filters": {
            "shape": "S5q"
          },
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Patches": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Title",
                "KBId",
                "Classification",
                "Severity",
                "State",
                "InstalledTime"
              ],
              "members": {
                "Title": {},
                "KBId": {},
                "Classification": {},
                "Severity": {},
                "State": {},
                "InstalledTime": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeMaintenanceWindowExecutionTaskInvocations": {
      "input": {
        "type": "structure",
        "required": [
          "WindowExecutionId",
          "TaskId"
        ],
        "members": {
          "WindowExecutionId": {},
          "TaskId": {},
          "Filters": {
            "shape": "S8g"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowExecutionTaskInvocationIdentities": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "WindowExecutionId": {},
                "TaskExecutionId": {},
                "InvocationId": {},
                "ExecutionId": {},
                "TaskType": {},
                "Parameters": {
                  "shape": "S8s"
                },
                "Status": {},
                "StatusDetails": {},
                "StartTime": {
                  "type": "timestamp"
                },
                "EndTime": {
                  "type": "timestamp"
                },
                "OwnerInformation": {
                  "shape": "S7r"
                },
                "WindowTargetId": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeMaintenanceWindowExecutionTasks": {
      "input": {
        "type": "structure",
        "required": [
          "WindowExecutionId"
        ],
        "members": {
          "WindowExecutionId": {},
          "Filters": {
            "shape": "S8g"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowExecutionTaskIdentities": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "WindowExecutionId": {},
                "TaskExecutionId": {},
                "Status": {},
                "StatusDetails": {},
                "StartTime": {
                  "type": "timestamp"
                },
                "EndTime": {
                  "type": "timestamp"
                },
                "TaskArn": {},
                "TaskType": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeMaintenanceWindowExecutions": {
      "input": {
        "type": "structure",
        "required": [
          "WindowId"
        ],
        "members": {
          "WindowId": {},
          "Filters": {
            "shape": "S8g"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowExecutions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "WindowId": {},
                "WindowExecutionId": {},
                "Status": {},
                "StatusDetails": {},
                "StartTime": {
                  "type": "timestamp"
                },
                "EndTime": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeMaintenanceWindowTargets": {
      "input": {
        "type": "structure",
        "required": [
          "WindowId"
        ],
        "members": {
          "WindowId": {},
          "Filters": {
            "shape": "S8g"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Targets": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "WindowId": {},
                "WindowTargetId": {},
                "ResourceType": {},
                "Targets": {
                  "shape": "Su"
                },
                "OwnerInformation": {
                  "shape": "S7r"
                },
                "Name": {},
                "Description": {
                  "shape": "S2h"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeMaintenanceWindowTasks": {
      "input": {
        "type": "structure",
        "required": [
          "WindowId"
        ],
        "members": {
          "WindowId": {},
          "Filters": {
            "shape": "S8g"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Tasks": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "WindowId": {},
                "WindowTaskId": {},
                "TaskArn": {},
                "Type": {},
                "Targets": {
                  "shape": "Su"
                },
                "TaskParameters": {
                  "shape": "S9e"
                },
                "Priority": {
                  "type": "integer"
                },
                "LoggingInfo": {
                  "shape": "S9k"
                },
                "ServiceRoleArn": {},
                "MaxConcurrency": {},
                "MaxErrors": {},
                "Name": {},
                "Description": {
                  "shape": "S2h"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeMaintenanceWindows": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "S8g"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowIdentities": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "WindowId": {},
                "Name": {},
                "Description": {
                  "shape": "S2h"
                },
                "Enabled": {
                  "type": "boolean"
                },
                "Duration": {
                  "type": "integer"
                },
                "Cutoff": {
                  "type": "integer"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribeParameters": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Key",
                "Values"
              ],
              "members": {
                "Key": {},
                "Values": {
                  "type": "list",
                  "member": {}
                }
              }
            }
          },
          "ParameterFilters": {
            "shape": "S9x"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Parameters": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "Type": {},
                "KeyId": {},
                "LastModifiedDate": {
                  "type": "timestamp"
                },
                "LastModifiedUser": {},
                "Description": {},
                "AllowedPattern": {},
                "Version": {
                  "type": "long"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribePatchBaselines": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "S5q"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BaselineIdentities": {
            "type": "list",
            "member": {
              "shape": "Sae"
            }
          },
          "NextToken": {}
        }
      }
    },
    "DescribePatchGroupState": {
      "input": {
        "type": "structure",
        "required": [
          "PatchGroup"
        ],
        "members": {
          "PatchGroup": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Instances": {
            "type": "integer"
          },
          "InstancesWithInstalledPatches": {
            "type": "integer"
          },
          "InstancesWithInstalledOtherPatches": {
            "type": "integer"
          },
          "InstancesWithMissingPatches": {
            "type": "integer"
          },
          "InstancesWithFailedPatches": {
            "type": "integer"
          },
          "InstancesWithNotApplicablePatches": {
            "type": "integer"
          }
        }
      }
    },
    "DescribePatchGroups": {
      "input": {
        "type": "structure",
        "members": {
          "MaxResults": {
            "type": "integer"
          },
          "Filters": {
            "shape": "S5q"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Mappings": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "PatchGroup": {},
                "BaselineIdentity": {
                  "shape": "Sae"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "GetAutomationExecution": {
      "input": {
        "type": "structure",
        "required": [
          "AutomationExecutionId"
        ],
        "members": {
          "AutomationExecutionId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AutomationExecution": {
            "type": "structure",
            "members": {
              "AutomationExecutionId": {},
              "DocumentName": {},
              "DocumentVersion": {},
              "ExecutionStartTime": {
                "type": "timestamp"
              },
              "ExecutionEndTime": {
                "type": "timestamp"
              },
              "AutomationExecutionStatus": {},
              "StepExecutions": {
                "shape": "S5i"
              },
              "StepExecutionsTruncated": {
                "type": "boolean"
              },
              "Parameters": {
                "shape": "S52"
              },
              "Outputs": {
                "shape": "S52"
              },
              "FailureMessage": {},
              "Mode": {},
              "ParentAutomationExecutionId": {},
              "ExecutedBy": {},
              "CurrentStepName": {},
              "CurrentAction": {},
              "TargetParameterName": {},
              "Targets": {
                "shape": "Su"
              },
              "ResolvedTargets": {
                "shape": "S57"
              },
              "MaxConcurrency": {},
              "MaxErrors": {},
              "Target": {}
            }
          }
        }
      }
    },
    "GetCommandInvocation": {
      "input": {
        "type": "structure",
        "required": [
          "CommandId",
          "InstanceId"
        ],
        "members": {
          "CommandId": {},
          "InstanceId": {},
          "PluginName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CommandId": {},
          "InstanceId": {},
          "Comment": {},
          "DocumentName": {},
          "PluginName": {},
          "ResponseCode": {
            "type": "integer"
          },
          "ExecutionStartDateTime": {},
          "ExecutionElapsedTime": {},
          "ExecutionEndDateTime": {},
          "Status": {},
          "StatusDetails": {},
          "StandardOutputContent": {},
          "StandardOutputUrl": {},
          "StandardErrorContent": {},
          "StandardErrorUrl": {}
        }
      }
    },
    "GetDefaultPatchBaseline": {
      "input": {
        "type": "structure",
        "members": {
          "OperatingSystem": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BaselineId": {},
          "OperatingSystem": {}
        }
      }
    },
    "GetDeployablePatchSnapshotForInstance": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId",
          "SnapshotId"
        ],
        "members": {
          "InstanceId": {},
          "SnapshotId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "InstanceId": {},
          "SnapshotId": {},
          "SnapshotDownloadUrl": {},
          "Product": {}
        }
      }
    },
    "GetDocument": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {},
          "DocumentVersion": {},
          "DocumentFormat": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Name": {},
          "DocumentVersion": {},
          "Content": {},
          "DocumentType": {},
          "DocumentFormat": {}
        }
      }
    },
    "GetInventory": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sb8"
          },
          "Aggregators": {
            "shape": "Sbe"
          },
          "ResultAttributes": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "TypeName"
              ],
              "members": {
                "TypeName": {}
              }
            }
          },
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Entities": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Id": {},
                "Data": {
                  "type": "map",
                  "key": {},
                  "value": {
                    "type": "structure",
                    "required": [
                      "TypeName",
                      "SchemaVersion",
                      "Content"
                    ],
                    "members": {
                      "TypeName": {},
                      "SchemaVersion": {},
                      "CaptureTime": {},
                      "ContentHash": {},
                      "Content": {
                        "shape": "Sbu"
                      }
                    }
                  }
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "GetInventorySchema": {
      "input": {
        "type": "structure",
        "members": {
          "TypeName": {},
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          },
          "Aggregator": {
            "type": "boolean"
          },
          "SubType": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Schemas": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "TypeName",
                "Attributes"
              ],
              "members": {
                "TypeName": {},
                "Version": {},
                "Attributes": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "required": [
                      "Name",
                      "DataType"
                    ],
                    "members": {
                      "Name": {},
                      "DataType": {}
                    }
                  }
                },
                "DisplayName": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "GetMaintenanceWindow": {
      "input": {
        "type": "structure",
        "required": [
          "WindowId"
        ],
        "members": {
          "WindowId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowId": {},
          "Name": {},
          "Description": {
            "shape": "S2h"
          },
          "Schedule": {},
          "Duration": {
            "type": "integer"
          },
          "Cutoff": {
            "type": "integer"
          },
          "AllowUnassociatedTargets": {
            "type": "boolean"
          },
          "Enabled": {
            "type": "boolean"
          },
          "CreatedDate": {
            "type": "timestamp"
          },
          "ModifiedDate": {
            "type": "timestamp"
          }
        }
      }
    },
    "GetMaintenanceWindowExecution": {
      "input": {
        "type": "structure",
        "required": [
          "WindowExecutionId"
        ],
        "members": {
          "WindowExecutionId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowExecutionId": {},
          "TaskIds": {
            "type": "list",
            "member": {}
          },
          "Status": {},
          "StatusDetails": {},
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          }
        }
      }
    },
    "GetMaintenanceWindowExecutionTask": {
      "input": {
        "type": "structure",
        "required": [
          "WindowExecutionId",
          "TaskId"
        ],
        "members": {
          "WindowExecutionId": {},
          "TaskId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowExecutionId": {},
          "TaskExecutionId": {},
          "TaskArn": {},
          "ServiceRole": {},
          "Type": {},
          "TaskParameters": {
            "type": "list",
            "member": {
              "shape": "S9e"
            },
            "sensitive": true
          },
          "Priority": {
            "type": "integer"
          },
          "MaxConcurrency": {},
          "MaxErrors": {},
          "Status": {},
          "StatusDetails": {},
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          }
        }
      }
    },
    "GetMaintenanceWindowExecutionTaskInvocation": {
      "input": {
        "type": "structure",
        "required": [
          "WindowExecutionId",
          "TaskId",
          "InvocationId"
        ],
        "members": {
          "WindowExecutionId": {},
          "TaskId": {},
          "InvocationId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowExecutionId": {},
          "TaskExecutionId": {},
          "InvocationId": {},
          "ExecutionId": {},
          "TaskType": {},
          "Parameters": {
            "shape": "S8s"
          },
          "Status": {},
          "StatusDetails": {},
          "StartTime": {
            "type": "timestamp"
          },
          "EndTime": {
            "type": "timestamp"
          },
          "OwnerInformation": {
            "shape": "S7r"
          },
          "WindowTargetId": {}
        }
      }
    },
    "GetMaintenanceWindowTask": {
      "input": {
        "type": "structure",
        "required": [
          "WindowId",
          "WindowTaskId"
        ],
        "members": {
          "WindowId": {},
          "WindowTaskId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowId": {},
          "WindowTaskId": {},
          "Targets": {
            "shape": "Su"
          },
          "TaskArn": {},
          "ServiceRoleArn": {},
          "TaskType": {},
          "TaskParameters": {
            "shape": "S9e"
          },
          "TaskInvocationParameters": {
            "shape": "Scn"
          },
          "Priority": {
            "type": "integer"
          },
          "MaxConcurrency": {},
          "MaxErrors": {},
          "LoggingInfo": {
            "shape": "S9k"
          },
          "Name": {},
          "Description": {
            "shape": "S2h"
          }
        }
      }
    },
    "GetParameter": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {},
          "WithDecryption": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Parameter": {
            "shape": "Sd5"
          }
        }
      }
    },
    "GetParameterHistory": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {},
          "WithDecryption": {
            "type": "boolean"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Parameters": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "Type": {},
                "KeyId": {},
                "LastModifiedDate": {
                  "type": "timestamp"
                },
                "LastModifiedUser": {},
                "Description": {},
                "Value": {},
                "AllowedPattern": {},
                "Version": {
                  "type": "long"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "GetParameters": {
      "input": {
        "type": "structure",
        "required": [
          "Names"
        ],
        "members": {
          "Names": {
            "shape": "S3t"
          },
          "WithDecryption": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Parameters": {
            "shape": "Sdd"
          },
          "InvalidParameters": {
            "shape": "S3t"
          }
        }
      }
    },
    "GetParametersByPath": {
      "input": {
        "type": "structure",
        "required": [
          "Path"
        ],
        "members": {
          "Path": {},
          "Recursive": {
            "type": "boolean"
          },
          "ParameterFilters": {
            "shape": "S9x"
          },
          "WithDecryption": {
            "type": "boolean"
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Parameters": {
            "shape": "Sdd"
          },
          "NextToken": {}
        }
      }
    },
    "GetPatchBaseline": {
      "input": {
        "type": "structure",
        "required": [
          "BaselineId"
        ],
        "members": {
          "BaselineId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BaselineId": {},
          "Name": {},
          "OperatingSystem": {},
          "GlobalFilters": {
            "shape": "S2s"
          },
          "ApprovalRules": {
            "shape": "S2y"
          },
          "ApprovedPatches": {
            "shape": "S33"
          },
          "ApprovedPatchesComplianceLevel": {},
          "RejectedPatches": {
            "shape": "S33"
          },
          "PatchGroups": {
            "type": "list",
            "member": {}
          },
          "CreatedDate": {
            "type": "timestamp"
          },
          "ModifiedDate": {
            "type": "timestamp"
          },
          "Description": {}
        }
      }
    },
    "GetPatchBaselineForPatchGroup": {
      "input": {
        "type": "structure",
        "required": [
          "PatchGroup"
        ],
        "members": {
          "PatchGroup": {},
          "OperatingSystem": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BaselineId": {},
          "PatchGroup": {},
          "OperatingSystem": {}
        }
      }
    },
    "ListAssociationVersions": {
      "input": {
        "type": "structure",
        "required": [
          "AssociationId"
        ],
        "members": {
          "AssociationId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AssociationVersions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "AssociationId": {},
                "AssociationVersion": {},
                "CreatedDate": {
                  "type": "timestamp"
                },
                "Name": {},
                "DocumentVersion": {},
                "Parameters": {
                  "shape": "Sq"
                },
                "Targets": {
                  "shape": "Su"
                },
                "ScheduleExpression": {},
                "OutputLocation": {
                  "shape": "S10"
                },
                "AssociationName": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListAssociations": {
      "input": {
        "type": "structure",
        "members": {
          "AssociationFilterList": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "key",
                "value"
              ],
              "members": {
                "key": {},
                "value": {}
              }
            }
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Associations": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "InstanceId": {},
                "AssociationId": {},
                "AssociationVersion": {},
                "DocumentVersion": {},
                "Targets": {
                  "shape": "Su"
                },
                "LastExecutionDate": {
                  "type": "timestamp"
                },
                "Overview": {
                  "shape": "S1e"
                },
                "ScheduleExpression": {},
                "AssociationName": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListCommandInvocations": {
      "input": {
        "type": "structure",
        "members": {
          "CommandId": {},
          "InstanceId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "Filters": {
            "shape": "Se0"
          },
          "Details": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CommandInvocations": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "CommandId": {},
                "InstanceId": {},
                "InstanceName": {},
                "Comment": {},
                "DocumentName": {},
                "RequestedDateTime": {
                  "type": "timestamp"
                },
                "Status": {},
                "StatusDetails": {},
                "TraceOutput": {},
                "StandardOutputUrl": {},
                "StandardErrorUrl": {},
                "CommandPlugins": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "Name": {},
                      "Status": {},
                      "StatusDetails": {},
                      "ResponseCode": {
                        "type": "integer"
                      },
                      "ResponseStartDateTime": {
                        "type": "timestamp"
                      },
                      "ResponseFinishDateTime": {
                        "type": "timestamp"
                      },
                      "Output": {},
                      "StandardOutputUrl": {},
                      "StandardErrorUrl": {},
                      "OutputS3Region": {},
                      "OutputS3BucketName": {},
                      "OutputS3KeyPrefix": {}
                    }
                  }
                },
                "ServiceRole": {},
                "NotificationConfig": {
                  "shape": "Scp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListCommands": {
      "input": {
        "type": "structure",
        "members": {
          "CommandId": {},
          "InstanceId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "Filters": {
            "shape": "Se0"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Commands": {
            "type": "list",
            "member": {
              "shape": "Seg"
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListComplianceItems": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sem"
          },
          "ResourceIds": {
            "type": "list",
            "member": {}
          },
          "ResourceTypes": {
            "type": "list",
            "member": {}
          },
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ComplianceItems": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ComplianceType": {},
                "ResourceType": {},
                "ResourceId": {},
                "Id": {},
                "Title": {},
                "Status": {},
                "Severity": {},
                "ExecutionSummary": {
                  "shape": "Sf4"
                },
                "Details": {
                  "shape": "Sf7"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListComplianceSummaries": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sem"
          },
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ComplianceSummaryItems": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ComplianceType": {},
                "CompliantSummary": {
                  "shape": "Sfc"
                },
                "NonCompliantSummary": {
                  "shape": "Sff"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListDocumentVersions": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DocumentVersions": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "DocumentVersion": {},
                "CreatedDate": {
                  "type": "timestamp"
                },
                "IsDefaultVersion": {
                  "type": "boolean"
                },
                "DocumentFormat": {}
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListDocuments": {
      "input": {
        "type": "structure",
        "members": {
          "DocumentFilterList": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "key",
                "value"
              ],
              "members": {
                "key": {},
                "value": {}
              }
            }
          },
          "Filters": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Key": {},
                "Values": {
                  "type": "list",
                  "member": {}
                }
              }
            }
          },
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DocumentIdentifiers": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Name": {},
                "Owner": {},
                "PlatformTypes": {
                  "shape": "S2c"
                },
                "DocumentVersion": {},
                "DocumentType": {},
                "SchemaVersion": {},
                "DocumentFormat": {},
                "TargetType": {},
                "Tags": {
                  "shape": "S4"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListInventoryEntries": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId",
          "TypeName"
        ],
        "members": {
          "InstanceId": {},
          "TypeName": {},
          "Filters": {
            "shape": "Sb8"
          },
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TypeName": {},
          "InstanceId": {},
          "SchemaVersion": {},
          "CaptureTime": {},
          "Entries": {
            "shape": "Sbu"
          },
          "NextToken": {}
        }
      }
    },
    "ListResourceComplianceSummaries": {
      "input": {
        "type": "structure",
        "members": {
          "Filters": {
            "shape": "Sem"
          },
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResourceComplianceSummaryItems": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ComplianceType": {},
                "ResourceType": {},
                "ResourceId": {},
                "Status": {},
                "OverallSeverity": {},
                "ExecutionSummary": {
                  "shape": "Sf4"
                },
                "CompliantSummary": {
                  "shape": "Sfc"
                },
                "NonCompliantSummary": {
                  "shape": "Sff"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListResourceDataSync": {
      "input": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResourceDataSyncItems": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "SyncName": {},
                "S3Destination": {
                  "shape": "S3a"
                },
                "LastSyncTime": {
                  "type": "timestamp"
                },
                "LastSuccessfulSyncTime": {
                  "type": "timestamp"
                },
                "LastStatus": {},
                "SyncCreatedTime": {
                  "type": "timestamp"
                }
              }
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListTagsForResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceType",
          "ResourceId"
        ],
        "members": {
          "ResourceType": {},
          "ResourceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TagList": {
            "shape": "S4"
          }
        }
      }
    },
    "ModifyDocumentPermission": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "PermissionType"
        ],
        "members": {
          "Name": {},
          "PermissionType": {},
          "AccountIdsToAdd": {
            "shape": "S6f"
          },
          "AccountIdsToRemove": {
            "shape": "S6f"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "PutComplianceItems": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceId",
          "ResourceType",
          "ComplianceType",
          "ExecutionSummary",
          "Items"
        ],
        "members": {
          "ResourceId": {},
          "ResourceType": {},
          "ComplianceType": {},
          "ExecutionSummary": {
            "shape": "Sf4"
          },
          "Items": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Severity",
                "Status"
              ],
              "members": {
                "Id": {},
                "Title": {},
                "Severity": {},
                "Status": {},
                "Details": {
                  "shape": "Sf7"
                }
              }
            }
          },
          "ItemContentHash": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "PutInventory": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId",
          "Items"
        ],
        "members": {
          "InstanceId": {},
          "Items": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "TypeName",
                "SchemaVersion",
                "CaptureTime"
              ],
              "members": {
                "TypeName": {},
                "SchemaVersion": {},
                "CaptureTime": {},
                "ContentHash": {},
                "Content": {
                  "shape": "Sbu"
                },
                "Context": {
                  "type": "map",
                  "key": {},
                  "value": {}
                }
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "PutParameter": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "Value",
          "Type"
        ],
        "members": {
          "Name": {},
          "Description": {},
          "Value": {},
          "Type": {},
          "KeyId": {},
          "Overwrite": {
            "type": "boolean"
          },
          "AllowedPattern": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Version": {
            "type": "long"
          }
        }
      }
    },
    "RegisterDefaultPatchBaseline": {
      "input": {
        "type": "structure",
        "required": [
          "BaselineId"
        ],
        "members": {
          "BaselineId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BaselineId": {}
        }
      }
    },
    "RegisterPatchBaselineForPatchGroup": {
      "input": {
        "type": "structure",
        "required": [
          "BaselineId",
          "PatchGroup"
        ],
        "members": {
          "BaselineId": {},
          "PatchGroup": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BaselineId": {},
          "PatchGroup": {}
        }
      }
    },
    "RegisterTargetWithMaintenanceWindow": {
      "input": {
        "type": "structure",
        "required": [
          "WindowId",
          "ResourceType",
          "Targets"
        ],
        "members": {
          "WindowId": {},
          "ResourceType": {},
          "Targets": {
            "shape": "Su"
          },
          "OwnerInformation": {
            "shape": "S7r"
          },
          "Name": {},
          "Description": {
            "shape": "S2h"
          },
          "ClientToken": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowTargetId": {}
        }
      }
    },
    "RegisterTaskWithMaintenanceWindow": {
      "input": {
        "type": "structure",
        "required": [
          "WindowId",
          "Targets",
          "TaskArn",
          "ServiceRoleArn",
          "TaskType",
          "MaxConcurrency",
          "MaxErrors"
        ],
        "members": {
          "WindowId": {},
          "Targets": {
            "shape": "Su"
          },
          "TaskArn": {},
          "ServiceRoleArn": {},
          "TaskType": {},
          "TaskParameters": {
            "shape": "S9e"
          },
          "TaskInvocationParameters": {
            "shape": "Scn"
          },
          "Priority": {
            "type": "integer"
          },
          "MaxConcurrency": {},
          "MaxErrors": {},
          "LoggingInfo": {
            "shape": "S9k"
          },
          "Name": {},
          "Description": {
            "shape": "S2h"
          },
          "ClientToken": {
            "idempotencyToken": true
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowTaskId": {}
        }
      }
    },
    "RemoveTagsFromResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceType",
          "ResourceId",
          "TagKeys"
        ],
        "members": {
          "ResourceType": {},
          "ResourceId": {},
          "TagKeys": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "SendAutomationSignal": {
      "input": {
        "type": "structure",
        "required": [
          "AutomationExecutionId",
          "SignalType"
        ],
        "members": {
          "AutomationExecutionId": {},
          "SignalType": {},
          "Payload": {
            "shape": "S52"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "SendCommand": {
      "input": {
        "type": "structure",
        "required": [
          "DocumentName"
        ],
        "members": {
          "InstanceIds": {
            "shape": "Sb"
          },
          "Targets": {
            "shape": "Su"
          },
          "DocumentName": {},
          "DocumentHash": {},
          "DocumentHashType": {},
          "TimeoutSeconds": {
            "type": "integer"
          },
          "Comment": {},
          "Parameters": {
            "shape": "Sq"
          },
          "OutputS3Region": {},
          "OutputS3BucketName": {},
          "OutputS3KeyPrefix": {},
          "MaxConcurrency": {},
          "MaxErrors": {},
          "ServiceRoleArn": {},
          "NotificationConfig": {
            "shape": "Scp"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Command": {
            "shape": "Seg"
          }
        }
      }
    },
    "StartAutomationExecution": {
      "input": {
        "type": "structure",
        "required": [
          "DocumentName"
        ],
        "members": {
          "DocumentName": {},
          "DocumentVersion": {},
          "Parameters": {
            "shape": "S52"
          },
          "ClientToken": {},
          "Mode": {},
          "TargetParameterName": {},
          "Targets": {
            "shape": "Su"
          },
          "MaxConcurrency": {},
          "MaxErrors": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AutomationExecutionId": {}
        }
      }
    },
    "StopAutomationExecution": {
      "input": {
        "type": "structure",
        "required": [
          "AutomationExecutionId"
        ],
        "members": {
          "AutomationExecutionId": {},
          "Type": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UpdateAssociation": {
      "input": {
        "type": "structure",
        "required": [
          "AssociationId"
        ],
        "members": {
          "AssociationId": {},
          "Parameters": {
            "shape": "Sq"
          },
          "DocumentVersion": {},
          "ScheduleExpression": {},
          "OutputLocation": {
            "shape": "S10"
          },
          "Name": {},
          "Targets": {
            "shape": "Su"
          },
          "AssociationName": {},
          "AssociationVersion": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AssociationDescription": {
            "shape": "S17"
          }
        }
      }
    },
    "UpdateAssociationStatus": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "InstanceId",
          "AssociationStatus"
        ],
        "members": {
          "Name": {},
          "InstanceId": {},
          "AssociationStatus": {
            "shape": "S1a"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AssociationDescription": {
            "shape": "S17"
          }
        }
      }
    },
    "UpdateDocument": {
      "input": {
        "type": "structure",
        "required": [
          "Content",
          "Name"
        ],
        "members": {
          "Content": {},
          "Name": {},
          "DocumentVersion": {},
          "DocumentFormat": {},
          "TargetType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DocumentDescription": {
            "shape": "S1y"
          }
        }
      }
    },
    "UpdateDocumentDefaultVersion": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "DocumentVersion"
        ],
        "members": {
          "Name": {},
          "DocumentVersion": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Description": {
            "type": "structure",
            "members": {
              "Name": {},
              "DefaultVersion": {}
            }
          }
        }
      }
    },
    "UpdateMaintenanceWindow": {
      "input": {
        "type": "structure",
        "required": [
          "WindowId"
        ],
        "members": {
          "WindowId": {},
          "Name": {},
          "Description": {
            "shape": "S2h"
          },
          "Schedule": {},
          "Duration": {
            "type": "integer"
          },
          "Cutoff": {
            "type": "integer"
          },
          "AllowUnassociatedTargets": {
            "type": "boolean"
          },
          "Enabled": {
            "type": "boolean"
          },
          "Replace": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowId": {},
          "Name": {},
          "Description": {
            "shape": "S2h"
          },
          "Schedule": {},
          "Duration": {
            "type": "integer"
          },
          "Cutoff": {
            "type": "integer"
          },
          "AllowUnassociatedTargets": {
            "type": "boolean"
          },
          "Enabled": {
            "type": "boolean"
          }
        }
      }
    },
    "UpdateMaintenanceWindowTarget": {
      "input": {
        "type": "structure",
        "required": [
          "WindowId",
          "WindowTargetId"
        ],
        "members": {
          "WindowId": {},
          "WindowTargetId": {},
          "Targets": {
            "shape": "Su"
          },
          "OwnerInformation": {
            "shape": "S7r"
          },
          "Name": {},
          "Description": {
            "shape": "S2h"
          },
          "Replace": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowId": {},
          "WindowTargetId": {},
          "Targets": {
            "shape": "Su"
          },
          "OwnerInformation": {
            "shape": "S7r"
          },
          "Name": {},
          "Description": {
            "shape": "S2h"
          }
        }
      }
    },
    "UpdateMaintenanceWindowTask": {
      "input": {
        "type": "structure",
        "required": [
          "WindowId",
          "WindowTaskId"
        ],
        "members": {
          "WindowId": {},
          "WindowTaskId": {},
          "Targets": {
            "shape": "Su"
          },
          "TaskArn": {},
          "ServiceRoleArn": {},
          "TaskParameters": {
            "shape": "S9e"
          },
          "TaskInvocationParameters": {
            "shape": "Scn"
          },
          "Priority": {
            "type": "integer"
          },
          "MaxConcurrency": {},
          "MaxErrors": {},
          "LoggingInfo": {
            "shape": "S9k"
          },
          "Name": {},
          "Description": {
            "shape": "S2h"
          },
          "Replace": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WindowId": {},
          "WindowTaskId": {},
          "Targets": {
            "shape": "Su"
          },
          "TaskArn": {},
          "ServiceRoleArn": {},
          "TaskParameters": {
            "shape": "S9e"
          },
          "TaskInvocationParameters": {
            "shape": "Scn"
          },
          "Priority": {
            "type": "integer"
          },
          "MaxConcurrency": {},
          "MaxErrors": {},
          "LoggingInfo": {
            "shape": "S9k"
          },
          "Name": {},
          "Description": {
            "shape": "S2h"
          }
        }
      }
    },
    "UpdateManagedInstanceRole": {
      "input": {
        "type": "structure",
        "required": [
          "InstanceId",
          "IamRole"
        ],
        "members": {
          "InstanceId": {},
          "IamRole": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UpdatePatchBaseline": {
      "input": {
        "type": "structure",
        "required": [
          "BaselineId"
        ],
        "members": {
          "BaselineId": {},
          "Name": {},
          "GlobalFilters": {
            "shape": "S2s"
          },
          "ApprovalRules": {
            "shape": "S2y"
          },
          "ApprovedPatches": {
            "shape": "S33"
          },
          "ApprovedPatchesComplianceLevel": {},
          "RejectedPatches": {
            "shape": "S33"
          },
          "Description": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "BaselineId": {},
          "Name": {},
          "OperatingSystem": {},
          "GlobalFilters": {
            "shape": "S2s"
          },
          "ApprovalRules": {
            "shape": "S2y"
          },
          "ApprovedPatches": {
            "shape": "S33"
          },
          "ApprovedPatchesComplianceLevel": {},
          "RejectedPatches": {
            "shape": "S33"
          },
          "CreatedDate": {
            "type": "timestamp"
          },
          "ModifiedDate": {
            "type": "timestamp"
          },
          "Description": {}
        }
      }
    }
  },
  "shapes": {
    "S4": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Key",
          "Value"
        ],
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "Sb": {
      "type": "list",
      "member": {}
    },
    "Sq": {
      "type": "map",
      "key": {},
      "value": {
        "type": "list",
        "member": {}
      }
    },
    "Su": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Key": {},
          "Values": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "S10": {
      "type": "structure",
      "members": {
        "S3Location": {
          "type": "structure",
          "members": {
            "OutputS3Region": {},
            "OutputS3BucketName": {},
            "OutputS3KeyPrefix": {}
          }
        }
      }
    },
    "S17": {
      "type": "structure",
      "members": {
        "Name": {},
        "InstanceId": {},
        "AssociationVersion": {},
        "Date": {
          "type": "timestamp"
        },
        "LastUpdateAssociationDate": {
          "type": "timestamp"
        },
        "Status": {
          "shape": "S1a"
        },
        "Overview": {
          "shape": "S1e"
        },
        "DocumentVersion": {},
        "Parameters": {
          "shape": "Sq"
        },
        "AssociationId": {},
        "Targets": {
          "shape": "Su"
        },
        "ScheduleExpression": {},
        "OutputLocation": {
          "shape": "S10"
        },
        "LastExecutionDate": {
          "type": "timestamp"
        },
        "LastSuccessfulExecutionDate": {
          "type": "timestamp"
        },
        "AssociationName": {}
      }
    },
    "S1a": {
      "type": "structure",
      "required": [
        "Date",
        "Name",
        "Message"
      ],
      "members": {
        "Date": {
          "type": "timestamp"
        },
        "Name": {},
        "Message": {},
        "AdditionalInfo": {}
      }
    },
    "S1e": {
      "type": "structure",
      "members": {
        "Status": {},
        "DetailedStatus": {},
        "AssociationStatusAggregatedCount": {
          "type": "map",
          "key": {},
          "value": {
            "type": "integer"
          }
        }
      }
    },
    "S1l": {
      "type": "structure",
      "required": [
        "Name"
      ],
      "members": {
        "Name": {},
        "InstanceId": {},
        "Parameters": {
          "shape": "Sq"
        },
        "DocumentVersion": {},
        "Targets": {
          "shape": "Su"
        },
        "ScheduleExpression": {},
        "OutputLocation": {
          "shape": "S10"
        },
        "AssociationName": {}
      }
    },
    "S1y": {
      "type": "structure",
      "members": {
        "Sha1": {},
        "Hash": {},
        "HashType": {},
        "Name": {},
        "Owner": {},
        "CreatedDate": {
          "type": "timestamp"
        },
        "Status": {},
        "DocumentVersion": {},
        "Description": {},
        "Parameters": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "Name": {},
              "Type": {},
              "Description": {},
              "DefaultValue": {}
            }
          }
        },
        "PlatformTypes": {
          "shape": "S2c"
        },
        "DocumentType": {},
        "SchemaVersion": {},
        "LatestVersion": {},
        "DefaultVersion": {},
        "DocumentFormat": {},
        "TargetType": {},
        "Tags": {
          "shape": "S4"
        }
      }
    },
    "S2c": {
      "type": "list",
      "member": {}
    },
    "S2h": {
      "type": "string",
      "sensitive": true
    },
    "S2s": {
      "type": "structure",
      "required": [
        "PatchFilters"
      ],
      "members": {
        "PatchFilters": {
          "type": "list",
          "member": {
            "type": "structure",
            "required": [
              "Key",
              "Values"
            ],
            "members": {
              "Key": {},
              "Values": {
                "type": "list",
                "member": {}
              }
            }
          }
        }
      }
    },
    "S2y": {
      "type": "structure",
      "required": [
        "PatchRules"
      ],
      "members": {
        "PatchRules": {
          "type": "list",
          "member": {
            "type": "structure",
            "required": [
              "PatchFilterGroup",
              "ApproveAfterDays"
            ],
            "members": {
              "PatchFilterGroup": {
                "shape": "S2s"
              },
              "ComplianceLevel": {},
              "ApproveAfterDays": {
                "type": "integer"
              }
            }
          }
        }
      }
    },
    "S33": {
      "type": "list",
      "member": {}
    },
    "S3a": {
      "type": "structure",
      "required": [
        "BucketName",
        "SyncFormat",
        "Region"
      ],
      "members": {
        "BucketName": {},
        "Prefix": {},
        "SyncFormat": {},
        "Region": {},
        "AWSKMSKeyARN": {}
      }
    },
    "S3t": {
      "type": "list",
      "member": {}
    },
    "S52": {
      "type": "map",
      "key": {},
      "value": {
        "type": "list",
        "member": {}
      }
    },
    "S57": {
      "type": "structure",
      "members": {
        "ParameterValues": {
          "type": "list",
          "member": {}
        },
        "Truncated": {
          "type": "boolean"
        }
      }
    },
    "S5i": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "StepName": {},
          "Action": {},
          "TimeoutSeconds": {
            "type": "long"
          },
          "OnFailure": {},
          "MaxAttempts": {
            "type": "integer"
          },
          "ExecutionStartTime": {
            "type": "timestamp"
          },
          "ExecutionEndTime": {
            "type": "timestamp"
          },
          "StepStatus": {},
          "ResponseCode": {},
          "Inputs": {
            "type": "map",
            "key": {},
            "value": {}
          },
          "Outputs": {
            "shape": "S52"
          },
          "Response": {},
          "FailureMessage": {},
          "FailureDetails": {
            "type": "structure",
            "members": {
              "FailureStage": {},
              "FailureType": {},
              "Details": {
                "shape": "S52"
              }
            }
          },
          "StepExecutionId": {},
          "OverriddenParameters": {
            "shape": "S52"
          }
        }
      }
    },
    "S5q": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Key": {},
          "Values": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "S5y": {
      "type": "structure",
      "members": {
        "Id": {},
        "ReleaseDate": {
          "type": "timestamp"
        },
        "Title": {},
        "Description": {},
        "ContentUrl": {},
        "Vendor": {},
        "ProductFamily": {},
        "Product": {},
        "Classification": {},
        "MsrcSeverity": {},
        "KbNumber": {},
        "MsrcNumber": {},
        "Language": {}
      }
    },
    "S6f": {
      "type": "list",
      "member": {}
    },
    "S75": {
      "type": "list",
      "member": {}
    },
    "S7p": {
      "type": "structure",
      "required": [
        "InstanceId",
        "PatchGroup",
        "BaselineId",
        "OperationStartTime",
        "OperationEndTime",
        "Operation"
      ],
      "members": {
        "InstanceId": {},
        "PatchGroup": {},
        "BaselineId": {},
        "SnapshotId": {},
        "OwnerInformation": {
          "shape": "S7r"
        },
        "InstalledCount": {
          "type": "integer"
        },
        "InstalledOtherCount": {
          "type": "integer"
        },
        "MissingCount": {
          "type": "integer"
        },
        "FailedCount": {
          "type": "integer"
        },
        "NotApplicableCount": {
          "type": "integer"
        },
        "OperationStartTime": {
          "type": "timestamp"
        },
        "OperationEndTime": {
          "type": "timestamp"
        },
        "Operation": {}
      }
    },
    "S7r": {
      "type": "string",
      "sensitive": true
    },
    "S8g": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Key": {},
          "Values": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "S8s": {
      "type": "string",
      "sensitive": true
    },
    "S9e": {
      "type": "map",
      "key": {},
      "value": {
        "type": "structure",
        "members": {
          "Values": {
            "type": "list",
            "member": {
              "type": "string",
              "sensitive": true
            },
            "sensitive": true
          }
        },
        "sensitive": true
      },
      "sensitive": true
    },
    "S9k": {
      "type": "structure",
      "required": [
        "S3BucketName",
        "S3Region"
      ],
      "members": {
        "S3BucketName": {},
        "S3KeyPrefix": {},
        "S3Region": {}
      }
    },
    "S9x": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Key"
        ],
        "members": {
          "Key": {},
          "Option": {},
          "Values": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "Sae": {
      "type": "structure",
      "members": {
        "BaselineId": {},
        "BaselineName": {},
        "OperatingSystem": {},
        "BaselineDescription": {},
        "DefaultBaseline": {
          "type": "boolean"
        }
      }
    },
    "Sb8": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Key",
          "Values"
        ],
        "members": {
          "Key": {},
          "Values": {
            "type": "list",
            "member": {}
          },
          "Type": {}
        }
      }
    },
    "Sbe": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Expression": {},
          "Aggregators": {
            "shape": "Sbe"
          }
        }
      }
    },
    "Sbu": {
      "type": "list",
      "member": {
        "type": "map",
        "key": {},
        "value": {}
      }
    },
    "Scn": {
      "type": "structure",
      "members": {
        "RunCommand": {
          "type": "structure",
          "members": {
            "Comment": {},
            "DocumentHash": {},
            "DocumentHashType": {},
            "NotificationConfig": {
              "shape": "Scp"
            },
            "OutputS3BucketName": {},
            "OutputS3KeyPrefix": {},
            "Parameters": {
              "shape": "Sq"
            },
            "ServiceRoleArn": {},
            "TimeoutSeconds": {
              "type": "integer"
            }
          }
        },
        "Automation": {
          "type": "structure",
          "members": {
            "DocumentVersion": {},
            "Parameters": {
              "shape": "S52"
            }
          }
        },
        "StepFunctions": {
          "type": "structure",
          "members": {
            "Input": {
              "type": "string",
              "sensitive": true
            },
            "Name": {}
          }
        },
        "Lambda": {
          "type": "structure",
          "members": {
            "ClientContext": {},
            "Qualifier": {},
            "Payload": {
              "type": "blob",
              "sensitive": true
            }
          }
        }
      }
    },
    "Scp": {
      "type": "structure",
      "members": {
        "NotificationArn": {},
        "NotificationEvents": {
          "type": "list",
          "member": {}
        },
        "NotificationType": {}
      }
    },
    "Sd5": {
      "type": "structure",
      "members": {
        "Name": {},
        "Type": {},
        "Value": {},
        "Version": {
          "type": "long"
        }
      }
    },
    "Sdd": {
      "type": "list",
      "member": {
        "shape": "Sd5"
      }
    },
    "Se0": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "key",
          "value"
        ],
        "members": {
          "key": {},
          "value": {}
        }
      }
    },
    "Seg": {
      "type": "structure",
      "members": {
        "CommandId": {},
        "DocumentName": {},
        "Comment": {},
        "ExpiresAfter": {
          "type": "timestamp"
        },
        "Parameters": {
          "shape": "Sq"
        },
        "InstanceIds": {
          "shape": "Sb"
        },
        "Targets": {
          "shape": "Su"
        },
        "RequestedDateTime": {
          "type": "timestamp"
        },
        "Status": {},
        "StatusDetails": {},
        "OutputS3Region": {},
        "OutputS3BucketName": {},
        "OutputS3KeyPrefix": {},
        "MaxConcurrency": {},
        "MaxErrors": {},
        "TargetCount": {
          "type": "integer"
        },
        "CompletedCount": {
          "type": "integer"
        },
        "ErrorCount": {
          "type": "integer"
        },
        "ServiceRole": {},
        "NotificationConfig": {
          "shape": "Scp"
        }
      }
    },
    "Sem": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Key": {},
          "Values": {
            "type": "list",
            "member": {}
          },
          "Type": {}
        }
      }
    },
    "Sf4": {
      "type": "structure",
      "required": [
        "ExecutionTime"
      ],
      "members": {
        "ExecutionTime": {
          "type": "timestamp"
        },
        "ExecutionId": {},
        "ExecutionType": {}
      }
    },
    "Sf7": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "Sfc": {
      "type": "structure",
      "members": {
        "CompliantCount": {
          "type": "integer"
        },
        "SeveritySummary": {
          "shape": "Sfe"
        }
      }
    },
    "Sfe": {
      "type": "structure",
      "members": {
        "CriticalCount": {
          "type": "integer"
        },
        "HighCount": {
          "type": "integer"
        },
        "MediumCount": {
          "type": "integer"
        },
        "LowCount": {
          "type": "integer"
        },
        "InformationalCount": {
          "type": "integer"
        },
        "UnspecifiedCount": {
          "type": "integer"
        }
      }
    },
    "Sff": {
      "type": "structure",
      "members": {
        "NonCompliantCount": {
          "type": "integer"
        },
        "SeveritySummary": {
          "shape": "Sfe"
        }
      }
    }
  }
}
},{}],153:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeActivations": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "ActivationList"
    },
    "DescribeInstanceInformation": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "InstanceInformationList"
    },
    "DescribeParameters": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken"
    },
    "GetParameterHistory": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken"
    },
    "GetParametersByPath": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken"
    },
    "ListAssociations": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "Associations"
    },
    "ListCommandInvocations": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "CommandInvocations"
    },
    "ListCommands": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "Commands"
    },
    "ListDocuments": {
      "input_token": "NextToken",
      "limit_key": "MaxResults",
      "output_token": "NextToken",
      "result_key": "DocumentIdentifiers"
    }
  }
}
},{}],154:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2013-06-30",
    "endpointPrefix": "storagegateway",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceFullName": "AWS Storage Gateway",
    "serviceId": "Storage Gateway",
    "signatureVersion": "v4",
    "targetPrefix": "StorageGateway_20130630",
    "uid": "storagegateway-2013-06-30"
  },
  "operations": {
    "ActivateGateway": {
      "input": {
        "type": "structure",
        "required": [
          "ActivationKey",
          "GatewayName",
          "GatewayTimezone",
          "GatewayRegion"
        ],
        "members": {
          "ActivationKey": {},
          "GatewayName": {},
          "GatewayTimezone": {},
          "GatewayRegion": {},
          "GatewayType": {},
          "TapeDriveType": {},
          "MediumChangerType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {}
        }
      }
    },
    "AddCache": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN",
          "DiskIds"
        ],
        "members": {
          "GatewayARN": {},
          "DiskIds": {
            "shape": "Sc"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {}
        }
      }
    },
    "AddTagsToResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceARN",
          "Tags"
        ],
        "members": {
          "ResourceARN": {},
          "Tags": {
            "shape": "Sh"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResourceARN": {}
        }
      }
    },
    "AddUploadBuffer": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN",
          "DiskIds"
        ],
        "members": {
          "GatewayARN": {},
          "DiskIds": {
            "shape": "Sc"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {}
        }
      }
    },
    "AddWorkingStorage": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN",
          "DiskIds"
        ],
        "members": {
          "GatewayARN": {},
          "DiskIds": {
            "shape": "Sc"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {}
        }
      }
    },
    "CancelArchival": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN",
          "TapeARN"
        ],
        "members": {
          "GatewayARN": {},
          "TapeARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TapeARN": {}
        }
      }
    },
    "CancelRetrieval": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN",
          "TapeARN"
        ],
        "members": {
          "GatewayARN": {},
          "TapeARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TapeARN": {}
        }
      }
    },
    "CreateCachediSCSIVolume": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN",
          "VolumeSizeInBytes",
          "TargetName",
          "NetworkInterfaceId",
          "ClientToken"
        ],
        "members": {
          "GatewayARN": {},
          "VolumeSizeInBytes": {
            "type": "long"
          },
          "SnapshotId": {},
          "TargetName": {},
          "SourceVolumeARN": {},
          "NetworkInterfaceId": {},
          "ClientToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VolumeARN": {},
          "TargetARN": {}
        }
      }
    },
    "CreateNFSFileShare": {
      "input": {
        "type": "structure",
        "required": [
          "ClientToken",
          "GatewayARN",
          "Role",
          "LocationARN"
        ],
        "members": {
          "ClientToken": {},
          "NFSFileShareDefaults": {
            "shape": "S15"
          },
          "GatewayARN": {},
          "KMSEncrypted": {
            "type": "boolean"
          },
          "KMSKey": {},
          "Role": {},
          "LocationARN": {},
          "DefaultStorageClass": {},
          "ClientList": {
            "shape": "S1d"
          },
          "Squash": {},
          "ReadOnly": {
            "type": "boolean"
          },
          "GuessMIMETypeEnabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FileShareARN": {}
        }
      }
    },
    "CreateSnapshot": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeARN",
          "SnapshotDescription"
        ],
        "members": {
          "VolumeARN": {},
          "SnapshotDescription": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VolumeARN": {},
          "SnapshotId": {}
        }
      }
    },
    "CreateSnapshotFromVolumeRecoveryPoint": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeARN",
          "SnapshotDescription"
        ],
        "members": {
          "VolumeARN": {},
          "SnapshotDescription": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SnapshotId": {},
          "VolumeARN": {},
          "VolumeRecoveryPointTime": {}
        }
      }
    },
    "CreateStorediSCSIVolume": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN",
          "DiskId",
          "PreserveExistingData",
          "TargetName",
          "NetworkInterfaceId"
        ],
        "members": {
          "GatewayARN": {},
          "DiskId": {},
          "SnapshotId": {},
          "PreserveExistingData": {
            "type": "boolean"
          },
          "TargetName": {},
          "NetworkInterfaceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VolumeARN": {},
          "VolumeSizeInBytes": {
            "type": "long"
          },
          "TargetARN": {}
        }
      }
    },
    "CreateTapeWithBarcode": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN",
          "TapeSizeInBytes",
          "TapeBarcode"
        ],
        "members": {
          "GatewayARN": {},
          "TapeSizeInBytes": {
            "type": "long"
          },
          "TapeBarcode": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TapeARN": {}
        }
      }
    },
    "CreateTapes": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN",
          "TapeSizeInBytes",
          "ClientToken",
          "NumTapesToCreate",
          "TapeBarcodePrefix"
        ],
        "members": {
          "GatewayARN": {},
          "TapeSizeInBytes": {
            "type": "long"
          },
          "ClientToken": {},
          "NumTapesToCreate": {
            "type": "integer"
          },
          "TapeBarcodePrefix": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TapeARNs": {
            "shape": "S1z"
          }
        }
      }
    },
    "DeleteBandwidthRateLimit": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN",
          "BandwidthType"
        ],
        "members": {
          "GatewayARN": {},
          "BandwidthType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {}
        }
      }
    },
    "DeleteChapCredentials": {
      "input": {
        "type": "structure",
        "required": [
          "TargetARN",
          "InitiatorName"
        ],
        "members": {
          "TargetARN": {},
          "InitiatorName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TargetARN": {},
          "InitiatorName": {}
        }
      }
    },
    "DeleteFileShare": {
      "input": {
        "type": "structure",
        "required": [
          "FileShareARN"
        ],
        "members": {
          "FileShareARN": {},
          "ForceDelete": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FileShareARN": {}
        }
      }
    },
    "DeleteGateway": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {}
        }
      }
    },
    "DeleteSnapshotSchedule": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeARN"
        ],
        "members": {
          "VolumeARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VolumeARN": {}
        }
      }
    },
    "DeleteTape": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN",
          "TapeARN"
        ],
        "members": {
          "GatewayARN": {},
          "TapeARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TapeARN": {}
        }
      }
    },
    "DeleteTapeArchive": {
      "input": {
        "type": "structure",
        "required": [
          "TapeARN"
        ],
        "members": {
          "TapeARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TapeARN": {}
        }
      }
    },
    "DeleteVolume": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeARN"
        ],
        "members": {
          "VolumeARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VolumeARN": {}
        }
      }
    },
    "DescribeBandwidthRateLimit": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {},
          "AverageUploadRateLimitInBitsPerSec": {
            "type": "long"
          },
          "AverageDownloadRateLimitInBitsPerSec": {
            "type": "long"
          }
        }
      }
    },
    "DescribeCache": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {},
          "DiskIds": {
            "shape": "Sc"
          },
          "CacheAllocatedInBytes": {
            "type": "long"
          },
          "CacheUsedPercentage": {
            "type": "double"
          },
          "CacheDirtyPercentage": {
            "type": "double"
          },
          "CacheHitPercentage": {
            "type": "double"
          },
          "CacheMissPercentage": {
            "type": "double"
          }
        }
      }
    },
    "DescribeCachediSCSIVolumes": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeARNs"
        ],
        "members": {
          "VolumeARNs": {
            "shape": "S2q"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CachediSCSIVolumes": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "VolumeARN": {},
                "VolumeId": {},
                "VolumeType": {},
                "VolumeStatus": {},
                "VolumeSizeInBytes": {
                  "type": "long"
                },
                "VolumeProgress": {
                  "type": "double"
                },
                "SourceSnapshotId": {},
                "VolumeiSCSIAttributes": {
                  "shape": "S2y"
                },
                "CreatedDate": {
                  "type": "timestamp"
                },
                "VolumeUsedInBytes": {
                  "type": "long"
                }
              }
            }
          }
        }
      }
    },
    "DescribeChapCredentials": {
      "input": {
        "type": "structure",
        "required": [
          "TargetARN"
        ],
        "members": {
          "TargetARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChapCredentials": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "TargetARN": {},
                "SecretToAuthenticateInitiator": {},
                "InitiatorName": {},
                "SecretToAuthenticateTarget": {}
              }
            }
          }
        }
      }
    },
    "DescribeGatewayInformation": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {},
          "GatewayId": {},
          "GatewayName": {},
          "GatewayTimezone": {},
          "GatewayState": {},
          "GatewayNetworkInterfaces": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Ipv4Address": {},
                "MacAddress": {},
                "Ipv6Address": {}
              }
            }
          },
          "GatewayType": {},
          "NextUpdateAvailabilityDate": {},
          "LastSoftwareUpdate": {}
        }
      }
    },
    "DescribeMaintenanceStartTime": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {},
          "HourOfDay": {
            "type": "integer"
          },
          "MinuteOfHour": {
            "type": "integer"
          },
          "DayOfWeek": {
            "type": "integer"
          },
          "Timezone": {}
        }
      }
    },
    "DescribeNFSFileShares": {
      "input": {
        "type": "structure",
        "required": [
          "FileShareARNList"
        ],
        "members": {
          "FileShareARNList": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NFSFileShareInfoList": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "NFSFileShareDefaults": {
                  "shape": "S15"
                },
                "FileShareARN": {},
                "FileShareId": {},
                "FileShareStatus": {},
                "GatewayARN": {},
                "KMSEncrypted": {
                  "type": "boolean"
                },
                "KMSKey": {},
                "Path": {},
                "Role": {},
                "LocationARN": {},
                "DefaultStorageClass": {},
                "ClientList": {
                  "shape": "S1d"
                },
                "Squash": {},
                "ReadOnly": {
                  "type": "boolean"
                },
                "GuessMIMETypeEnabled": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      }
    },
    "DescribeSnapshotSchedule": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeARN"
        ],
        "members": {
          "VolumeARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VolumeARN": {},
          "StartAt": {
            "type": "integer"
          },
          "RecurrenceInHours": {
            "type": "integer"
          },
          "Description": {},
          "Timezone": {}
        }
      }
    },
    "DescribeStorediSCSIVolumes": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeARNs"
        ],
        "members": {
          "VolumeARNs": {
            "shape": "S2q"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StorediSCSIVolumes": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "VolumeARN": {},
                "VolumeId": {},
                "VolumeType": {},
                "VolumeStatus": {},
                "VolumeSizeInBytes": {
                  "type": "long"
                },
                "VolumeProgress": {
                  "type": "double"
                },
                "VolumeDiskId": {},
                "SourceSnapshotId": {},
                "PreservedExistingData": {
                  "type": "boolean"
                },
                "VolumeiSCSIAttributes": {
                  "shape": "S2y"
                },
                "CreatedDate": {
                  "type": "timestamp"
                },
                "VolumeUsedInBytes": {
                  "type": "long"
                }
              }
            }
          }
        }
      }
    },
    "DescribeTapeArchives": {
      "input": {
        "type": "structure",
        "members": {
          "TapeARNs": {
            "shape": "S1z"
          },
          "Marker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TapeArchives": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "TapeARN": {},
                "TapeBarcode": {},
                "TapeCreatedDate": {
                  "type": "timestamp"
                },
                "TapeSizeInBytes": {
                  "type": "long"
                },
                "CompletionTime": {
                  "type": "timestamp"
                },
                "RetrievedTo": {},
                "TapeStatus": {},
                "TapeUsedInBytes": {
                  "type": "long"
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeTapeRecoveryPoints": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {},
          "Marker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {},
          "TapeRecoveryPointInfos": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "TapeARN": {},
                "TapeRecoveryPointTime": {
                  "type": "timestamp"
                },
                "TapeSizeInBytes": {
                  "type": "long"
                },
                "TapeStatus": {}
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeTapes": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {},
          "TapeARNs": {
            "shape": "S1z"
          },
          "Marker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Tapes": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "TapeARN": {},
                "TapeBarcode": {},
                "TapeCreatedDate": {
                  "type": "timestamp"
                },
                "TapeSizeInBytes": {
                  "type": "long"
                },
                "TapeStatus": {},
                "VTLDevice": {},
                "Progress": {
                  "type": "double"
                },
                "TapeUsedInBytes": {
                  "type": "long"
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeUploadBuffer": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {},
          "DiskIds": {
            "shape": "Sc"
          },
          "UploadBufferUsedInBytes": {
            "type": "long"
          },
          "UploadBufferAllocatedInBytes": {
            "type": "long"
          }
        }
      }
    },
    "DescribeVTLDevices": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {},
          "VTLDeviceARNs": {
            "type": "list",
            "member": {}
          },
          "Marker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {},
          "VTLDevices": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "VTLDeviceARN": {},
                "VTLDeviceType": {},
                "VTLDeviceVendor": {},
                "VTLDeviceProductIdentifier": {},
                "DeviceiSCSIAttributes": {
                  "type": "structure",
                  "members": {
                    "TargetARN": {},
                    "NetworkInterfaceId": {},
                    "NetworkInterfacePort": {
                      "type": "integer"
                    },
                    "ChapEnabled": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeWorkingStorage": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {},
          "DiskIds": {
            "shape": "Sc"
          },
          "WorkingStorageUsedInBytes": {
            "type": "long"
          },
          "WorkingStorageAllocatedInBytes": {
            "type": "long"
          }
        }
      }
    },
    "DisableGateway": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {}
        }
      }
    },
    "ListFileShares": {
      "input": {
        "type": "structure",
        "members": {
          "GatewayARN": {},
          "Limit": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Marker": {},
          "NextMarker": {},
          "FileShareInfoList": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "FileShareARN": {},
                "FileShareId": {},
                "FileShareStatus": {},
                "GatewayARN": {}
              }
            }
          }
        }
      }
    },
    "ListGateways": {
      "input": {
        "type": "structure",
        "members": {
          "Marker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Gateways": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "GatewayId": {},
                "GatewayARN": {},
                "GatewayType": {},
                "GatewayOperationalState": {},
                "GatewayName": {}
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "ListLocalDisks": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {},
          "Disks": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "DiskId": {},
                "DiskPath": {},
                "DiskNode": {},
                "DiskStatus": {},
                "DiskSizeInBytes": {
                  "type": "long"
                },
                "DiskAllocationType": {},
                "DiskAllocationResource": {}
              }
            }
          }
        }
      }
    },
    "ListTagsForResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceARN"
        ],
        "members": {
          "ResourceARN": {},
          "Marker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResourceARN": {},
          "Marker": {},
          "Tags": {
            "shape": "Sh"
          }
        }
      }
    },
    "ListTapes": {
      "input": {
        "type": "structure",
        "members": {
          "TapeARNs": {
            "shape": "S1z"
          },
          "Marker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TapeInfos": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "TapeARN": {},
                "TapeBarcode": {},
                "TapeSizeInBytes": {
                  "type": "long"
                },
                "TapeStatus": {},
                "GatewayARN": {}
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "ListVolumeInitiators": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeARN"
        ],
        "members": {
          "VolumeARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Initiators": {
            "type": "list",
            "member": {}
          }
        }
      }
    },
    "ListVolumeRecoveryPoints": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {},
          "VolumeRecoveryPointInfos": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "VolumeARN": {},
                "VolumeSizeInBytes": {
                  "type": "long"
                },
                "VolumeUsageInBytes": {
                  "type": "long"
                },
                "VolumeRecoveryPointTime": {}
              }
            }
          }
        }
      }
    },
    "ListVolumes": {
      "input": {
        "type": "structure",
        "members": {
          "GatewayARN": {},
          "Marker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {},
          "Marker": {},
          "VolumeInfos": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "VolumeARN": {},
                "VolumeId": {},
                "GatewayARN": {},
                "GatewayId": {},
                "VolumeType": {},
                "VolumeSizeInBytes": {
                  "type": "long"
                }
              }
            }
          }
        }
      }
    },
    "NotifyWhenUploaded": {
      "input": {
        "type": "structure",
        "required": [
          "FileShareARN"
        ],
        "members": {
          "FileShareARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FileShareARN": {},
          "NotificationId": {}
        }
      }
    },
    "RefreshCache": {
      "input": {
        "type": "structure",
        "required": [
          "FileShareARN"
        ],
        "members": {
          "FileShareARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FileShareARN": {}
        }
      }
    },
    "RemoveTagsFromResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceARN",
          "TagKeys"
        ],
        "members": {
          "ResourceARN": {},
          "TagKeys": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResourceARN": {}
        }
      }
    },
    "ResetCache": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {}
        }
      }
    },
    "RetrieveTapeArchive": {
      "input": {
        "type": "structure",
        "required": [
          "TapeARN",
          "GatewayARN"
        ],
        "members": {
          "TapeARN": {},
          "GatewayARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TapeARN": {}
        }
      }
    },
    "RetrieveTapeRecoveryPoint": {
      "input": {
        "type": "structure",
        "required": [
          "TapeARN",
          "GatewayARN"
        ],
        "members": {
          "TapeARN": {},
          "GatewayARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TapeARN": {}
        }
      }
    },
    "SetLocalConsolePassword": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN",
          "LocalConsolePassword"
        ],
        "members": {
          "GatewayARN": {},
          "LocalConsolePassword": {
            "type": "string",
            "sensitive": true
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {}
        }
      }
    },
    "ShutdownGateway": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {}
        }
      }
    },
    "StartGateway": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {}
        }
      }
    },
    "UpdateBandwidthRateLimit": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {},
          "AverageUploadRateLimitInBitsPerSec": {
            "type": "long"
          },
          "AverageDownloadRateLimitInBitsPerSec": {
            "type": "long"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {}
        }
      }
    },
    "UpdateChapCredentials": {
      "input": {
        "type": "structure",
        "required": [
          "TargetARN",
          "SecretToAuthenticateInitiator",
          "InitiatorName"
        ],
        "members": {
          "TargetARN": {},
          "SecretToAuthenticateInitiator": {},
          "InitiatorName": {},
          "SecretToAuthenticateTarget": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "TargetARN": {},
          "InitiatorName": {}
        }
      }
    },
    "UpdateGatewayInformation": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {},
          "GatewayName": {},
          "GatewayTimezone": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {},
          "GatewayName": {}
        }
      }
    },
    "UpdateGatewaySoftwareNow": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN"
        ],
        "members": {
          "GatewayARN": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {}
        }
      }
    },
    "UpdateMaintenanceStartTime": {
      "input": {
        "type": "structure",
        "required": [
          "GatewayARN",
          "HourOfDay",
          "MinuteOfHour",
          "DayOfWeek"
        ],
        "members": {
          "GatewayARN": {},
          "HourOfDay": {
            "type": "integer"
          },
          "MinuteOfHour": {
            "type": "integer"
          },
          "DayOfWeek": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GatewayARN": {}
        }
      }
    },
    "UpdateNFSFileShare": {
      "input": {
        "type": "structure",
        "required": [
          "FileShareARN"
        ],
        "members": {
          "FileShareARN": {},
          "KMSEncrypted": {
            "type": "boolean"
          },
          "KMSKey": {},
          "NFSFileShareDefaults": {
            "shape": "S15"
          },
          "DefaultStorageClass": {},
          "ClientList": {
            "shape": "S1d"
          },
          "Squash": {},
          "ReadOnly": {
            "type": "boolean"
          },
          "GuessMIMETypeEnabled": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "FileShareARN": {}
        }
      }
    },
    "UpdateSnapshotSchedule": {
      "input": {
        "type": "structure",
        "required": [
          "VolumeARN",
          "StartAt",
          "RecurrenceInHours"
        ],
        "members": {
          "VolumeARN": {},
          "StartAt": {
            "type": "integer"
          },
          "RecurrenceInHours": {
            "type": "integer"
          },
          "Description": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VolumeARN": {}
        }
      }
    },
    "UpdateVTLDeviceType": {
      "input": {
        "type": "structure",
        "required": [
          "VTLDeviceARN",
          "DeviceType"
        ],
        "members": {
          "VTLDeviceARN": {},
          "DeviceType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "VTLDeviceARN": {}
        }
      }
    }
  },
  "shapes": {
    "Sc": {
      "type": "list",
      "member": {}
    },
    "Sh": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Key",
          "Value"
        ],
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "S15": {
      "type": "structure",
      "members": {
        "FileMode": {},
        "DirectoryMode": {},
        "GroupId": {
          "type": "long"
        },
        "OwnerId": {
          "type": "long"
        }
      }
    },
    "S1d": {
      "type": "list",
      "member": {}
    },
    "S1z": {
      "type": "list",
      "member": {}
    },
    "S2q": {
      "type": "list",
      "member": {}
    },
    "S2y": {
      "type": "structure",
      "members": {
        "TargetARN": {},
        "NetworkInterfaceId": {},
        "NetworkInterfacePort": {
          "type": "integer"
        },
        "LunNumber": {
          "type": "integer"
        },
        "ChapEnabled": {
          "type": "boolean"
        }
      }
    }
  }
}
},{}],155:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeCachediSCSIVolumes": {
      "result_key": "CachediSCSIVolumes"
    },
    "DescribeStorediSCSIVolumes": {
      "result_key": "StorediSCSIVolumes"
    },
    "DescribeTapeArchives": {
      "input_token": "Marker",
      "limit_key": "Limit",
      "output_token": "Marker",
      "result_key": "TapeArchives"
    },
    "DescribeTapeRecoveryPoints": {
      "input_token": "Marker",
      "limit_key": "Limit",
      "output_token": "Marker",
      "result_key": "TapeRecoveryPointInfos"
    },
    "DescribeTapes": {
      "input_token": "Marker",
      "limit_key": "Limit",
      "output_token": "Marker",
      "result_key": "Tapes"
    },
    "DescribeVTLDevices": {
      "input_token": "Marker",
      "limit_key": "Limit",
      "output_token": "Marker",
      "result_key": "VTLDevices"
    },
    "ListGateways": {
      "input_token": "Marker",
      "limit_key": "Limit",
      "output_token": "Marker",
      "result_key": "Gateways"
    },
    "ListLocalDisks": {
      "result_key": "Disks"
    },
    "ListVolumeRecoveryPoints": {
      "result_key": "VolumeRecoveryPointInfos"
    },
    "ListVolumes": {
      "input_token": "Marker",
      "limit_key": "Limit",
      "output_token": "Marker",
      "result_key": "VolumeInfos"
    }
  }
}
},{}],156:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2012-08-10",
    "endpointPrefix": "streams.dynamodb",
    "jsonVersion": "1.0",
    "protocol": "json",
    "serviceFullName": "Amazon DynamoDB Streams",
    "signatureVersion": "v4",
    "signingName": "dynamodb",
    "targetPrefix": "DynamoDBStreams_20120810",
    "uid": "streams-dynamodb-2012-08-10"
  },
  "operations": {
    "DescribeStream": {
      "input": {
        "type": "structure",
        "required": [
          "StreamArn"
        ],
        "members": {
          "StreamArn": {},
          "Limit": {
            "type": "integer"
          },
          "ExclusiveStartShardId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "StreamDescription": {
            "type": "structure",
            "members": {
              "StreamArn": {},
              "StreamLabel": {},
              "StreamStatus": {},
              "StreamViewType": {},
              "CreationRequestDateTime": {
                "type": "timestamp"
              },
              "TableName": {},
              "KeySchema": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "required": [
                    "AttributeName",
                    "KeyType"
                  ],
                  "members": {
                    "AttributeName": {},
                    "KeyType": {}
                  }
                }
              },
              "Shards": {
                "type": "list",
                "member": {
                  "type": "structure",
                  "members": {
                    "ShardId": {},
                    "SequenceNumberRange": {
                      "type": "structure",
                      "members": {
                        "StartingSequenceNumber": {},
                        "EndingSequenceNumber": {}
                      }
                    },
                    "ParentShardId": {}
                  }
                }
              },
              "LastEvaluatedShardId": {}
            }
          }
        }
      }
    },
    "GetRecords": {
      "input": {
        "type": "structure",
        "required": [
          "ShardIterator"
        ],
        "members": {
          "ShardIterator": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Records": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "eventID": {},
                "eventName": {},
                "eventVersion": {},
                "eventSource": {},
                "awsRegion": {},
                "dynamodb": {
                  "type": "structure",
                  "members": {
                    "ApproximateCreationDateTime": {
                      "type": "timestamp"
                    },
                    "Keys": {
                      "shape": "Sr"
                    },
                    "NewImage": {
                      "shape": "Sr"
                    },
                    "OldImage": {
                      "shape": "Sr"
                    },
                    "SequenceNumber": {},
                    "SizeBytes": {
                      "type": "long"
                    },
                    "StreamViewType": {}
                  }
                },
                "userIdentity": {
                  "type": "structure",
                  "members": {
                    "PrincipalId": {},
                    "Type": {}
                  }
                }
              }
            }
          },
          "NextShardIterator": {}
        }
      }
    },
    "GetShardIterator": {
      "input": {
        "type": "structure",
        "required": [
          "StreamArn",
          "ShardId",
          "ShardIteratorType"
        ],
        "members": {
          "StreamArn": {},
          "ShardId": {},
          "ShardIteratorType": {},
          "SequenceNumber": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ShardIterator": {}
        }
      }
    },
    "ListStreams": {
      "input": {
        "type": "structure",
        "members": {
          "TableName": {},
          "Limit": {
            "type": "integer"
          },
          "ExclusiveStartStreamArn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Streams": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "StreamArn": {},
                "TableName": {},
                "StreamLabel": {}
              }
            }
          },
          "LastEvaluatedStreamArn": {}
        }
      }
    }
  },
  "shapes": {
    "Sr": {
      "type": "map",
      "key": {},
      "value": {
        "shape": "St"
      }
    },
    "St": {
      "type": "structure",
      "members": {
        "S": {},
        "N": {},
        "B": {
          "type": "blob"
        },
        "SS": {
          "type": "list",
          "member": {}
        },
        "NS": {
          "type": "list",
          "member": {}
        },
        "BS": {
          "type": "list",
          "member": {
            "type": "blob"
          }
        },
        "M": {
          "type": "map",
          "key": {},
          "value": {
            "shape": "St"
          }
        },
        "L": {
          "type": "list",
          "member": {
            "shape": "St"
          }
        },
        "NULL": {
          "type": "boolean"
        },
        "BOOL": {
          "type": "boolean"
        }
      }
    }
  }
}
},{}],157:[function(require,module,exports){
arguments[4][19][0].apply(exports,arguments)
},{"dup":19}],158:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2011-06-15",
    "endpointPrefix": "sts",
    "globalEndpoint": "sts.amazonaws.com",
    "protocol": "query",
    "serviceAbbreviation": "AWS STS",
    "serviceFullName": "AWS Security Token Service",
    "signatureVersion": "v4",
    "uid": "sts-2011-06-15",
    "xmlNamespace": "https://sts.amazonaws.com/doc/2011-06-15/"
  },
  "operations": {
    "AssumeRole": {
      "input": {
        "type": "structure",
        "required": [
          "RoleArn",
          "RoleSessionName"
        ],
        "members": {
          "RoleArn": {},
          "RoleSessionName": {},
          "Policy": {},
          "DurationSeconds": {
            "type": "integer"
          },
          "ExternalId": {},
          "SerialNumber": {},
          "TokenCode": {}
        }
      },
      "output": {
        "resultWrapper": "AssumeRoleResult",
        "type": "structure",
        "members": {
          "Credentials": {
            "shape": "Sa"
          },
          "AssumedRoleUser": {
            "shape": "Sf"
          },
          "PackedPolicySize": {
            "type": "integer"
          }
        }
      }
    },
    "AssumeRoleWithSAML": {
      "input": {
        "type": "structure",
        "required": [
          "RoleArn",
          "PrincipalArn",
          "SAMLAssertion"
        ],
        "members": {
          "RoleArn": {},
          "PrincipalArn": {},
          "SAMLAssertion": {},
          "Policy": {},
          "DurationSeconds": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "AssumeRoleWithSAMLResult",
        "type": "structure",
        "members": {
          "Credentials": {
            "shape": "Sa"
          },
          "AssumedRoleUser": {
            "shape": "Sf"
          },
          "PackedPolicySize": {
            "type": "integer"
          },
          "Subject": {},
          "SubjectType": {},
          "Issuer": {},
          "Audience": {},
          "NameQualifier": {}
        }
      }
    },
    "AssumeRoleWithWebIdentity": {
      "input": {
        "type": "structure",
        "required": [
          "RoleArn",
          "RoleSessionName",
          "WebIdentityToken"
        ],
        "members": {
          "RoleArn": {},
          "RoleSessionName": {},
          "WebIdentityToken": {},
          "ProviderId": {},
          "Policy": {},
          "DurationSeconds": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "AssumeRoleWithWebIdentityResult",
        "type": "structure",
        "members": {
          "Credentials": {
            "shape": "Sa"
          },
          "SubjectFromWebIdentityToken": {},
          "AssumedRoleUser": {
            "shape": "Sf"
          },
          "PackedPolicySize": {
            "type": "integer"
          },
          "Provider": {},
          "Audience": {}
        }
      }
    },
    "DecodeAuthorizationMessage": {
      "input": {
        "type": "structure",
        "required": [
          "EncodedMessage"
        ],
        "members": {
          "EncodedMessage": {}
        }
      },
      "output": {
        "resultWrapper": "DecodeAuthorizationMessageResult",
        "type": "structure",
        "members": {
          "DecodedMessage": {}
        }
      }
    },
    "GetCallerIdentity": {
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "resultWrapper": "GetCallerIdentityResult",
        "type": "structure",
        "members": {
          "UserId": {},
          "Account": {},
          "Arn": {}
        }
      }
    },
    "GetFederationToken": {
      "input": {
        "type": "structure",
        "required": [
          "Name"
        ],
        "members": {
          "Name": {},
          "Policy": {},
          "DurationSeconds": {
            "type": "integer"
          }
        }
      },
      "output": {
        "resultWrapper": "GetFederationTokenResult",
        "type": "structure",
        "members": {
          "Credentials": {
            "shape": "Sa"
          },
          "FederatedUser": {
            "type": "structure",
            "required": [
              "FederatedUserId",
              "Arn"
            ],
            "members": {
              "FederatedUserId": {},
              "Arn": {}
            }
          },
          "PackedPolicySize": {
            "type": "integer"
          }
        }
      }
    },
    "GetSessionToken": {
      "input": {
        "type": "structure",
        "members": {
          "DurationSeconds": {
            "type": "integer"
          },
          "SerialNumber": {},
          "TokenCode": {}
        }
      },
      "output": {
        "resultWrapper": "GetSessionTokenResult",
        "type": "structure",
        "members": {
          "Credentials": {
            "shape": "Sa"
          }
        }
      }
    }
  },
  "shapes": {
    "Sa": {
      "type": "structure",
      "required": [
        "AccessKeyId",
        "SecretAccessKey",
        "SessionToken",
        "Expiration"
      ],
      "members": {
        "AccessKeyId": {},
        "SecretAccessKey": {},
        "SessionToken": {},
        "Expiration": {
          "type": "timestamp"
        }
      }
    },
    "Sf": {
      "type": "structure",
      "required": [
        "AssumedRoleId",
        "Arn"
      ],
      "members": {
        "AssumedRoleId": {},
        "Arn": {}
      }
    }
  }
}
},{}],159:[function(require,module,exports){
arguments[4][19][0].apply(exports,arguments)
},{"dup":19}],160:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2015-08-24",
    "endpointPrefix": "waf",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "WAF",
    "serviceFullName": "AWS WAF",
    "serviceId": "WAF",
    "signatureVersion": "v4",
    "targetPrefix": "AWSWAF_20150824",
    "uid": "waf-2015-08-24"
  },
  "operations": {
    "CreateByteMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "ChangeToken"
        ],
        "members": {
          "Name": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ByteMatchSet": {
            "shape": "S5"
          },
          "ChangeToken": {}
        }
      }
    },
    "CreateGeoMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "ChangeToken"
        ],
        "members": {
          "Name": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GeoMatchSet": {
            "shape": "Sh"
          },
          "ChangeToken": {}
        }
      }
    },
    "CreateIPSet": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "ChangeToken"
        ],
        "members": {
          "Name": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IPSet": {
            "shape": "So"
          },
          "ChangeToken": {}
        }
      }
    },
    "CreateRateBasedRule": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "MetricName",
          "RateKey",
          "RateLimit",
          "ChangeToken"
        ],
        "members": {
          "Name": {},
          "MetricName": {},
          "RateKey": {},
          "RateLimit": {
            "type": "long"
          },
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Rule": {
            "shape": "Sy"
          },
          "ChangeToken": {}
        }
      }
    },
    "CreateRegexMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "ChangeToken"
        ],
        "members": {
          "Name": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RegexMatchSet": {
            "shape": "S15"
          },
          "ChangeToken": {}
        }
      }
    },
    "CreateRegexPatternSet": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "ChangeToken"
        ],
        "members": {
          "Name": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RegexPatternSet": {
            "shape": "S1a"
          },
          "ChangeToken": {}
        }
      }
    },
    "CreateRule": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "MetricName",
          "ChangeToken"
        ],
        "members": {
          "Name": {},
          "MetricName": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Rule": {
            "shape": "S1f"
          },
          "ChangeToken": {}
        }
      }
    },
    "CreateRuleGroup": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "MetricName",
          "ChangeToken"
        ],
        "members": {
          "Name": {},
          "MetricName": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RuleGroup": {
            "shape": "S1i"
          },
          "ChangeToken": {}
        }
      }
    },
    "CreateSizeConstraintSet": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "ChangeToken"
        ],
        "members": {
          "Name": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SizeConstraintSet": {
            "shape": "S1l"
          },
          "ChangeToken": {}
        }
      }
    },
    "CreateSqlInjectionMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "ChangeToken"
        ],
        "members": {
          "Name": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SqlInjectionMatchSet": {
            "shape": "S1s"
          },
          "ChangeToken": {}
        }
      }
    },
    "CreateWebACL": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "MetricName",
          "DefaultAction",
          "ChangeToken"
        ],
        "members": {
          "Name": {},
          "MetricName": {},
          "DefaultAction": {
            "shape": "S1w"
          },
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WebACL": {
            "shape": "S1z"
          },
          "ChangeToken": {}
        }
      }
    },
    "CreateXssMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "ChangeToken"
        ],
        "members": {
          "Name": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "XssMatchSet": {
            "shape": "S28"
          },
          "ChangeToken": {}
        }
      }
    },
    "DeleteByteMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "ByteMatchSetId",
          "ChangeToken"
        ],
        "members": {
          "ByteMatchSetId": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "DeleteGeoMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "GeoMatchSetId",
          "ChangeToken"
        ],
        "members": {
          "GeoMatchSetId": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "DeleteIPSet": {
      "input": {
        "type": "structure",
        "required": [
          "IPSetId",
          "ChangeToken"
        ],
        "members": {
          "IPSetId": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "DeleteRateBasedRule": {
      "input": {
        "type": "structure",
        "required": [
          "RuleId",
          "ChangeToken"
        ],
        "members": {
          "RuleId": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "DeleteRegexMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "RegexMatchSetId",
          "ChangeToken"
        ],
        "members": {
          "RegexMatchSetId": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "DeleteRegexPatternSet": {
      "input": {
        "type": "structure",
        "required": [
          "RegexPatternSetId",
          "ChangeToken"
        ],
        "members": {
          "RegexPatternSetId": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "DeleteRule": {
      "input": {
        "type": "structure",
        "required": [
          "RuleId",
          "ChangeToken"
        ],
        "members": {
          "RuleId": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "DeleteRuleGroup": {
      "input": {
        "type": "structure",
        "required": [
          "RuleGroupId",
          "ChangeToken"
        ],
        "members": {
          "RuleGroupId": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "DeleteSizeConstraintSet": {
      "input": {
        "type": "structure",
        "required": [
          "SizeConstraintSetId",
          "ChangeToken"
        ],
        "members": {
          "SizeConstraintSetId": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "DeleteSqlInjectionMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "SqlInjectionMatchSetId",
          "ChangeToken"
        ],
        "members": {
          "SqlInjectionMatchSetId": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "DeleteWebACL": {
      "input": {
        "type": "structure",
        "required": [
          "WebACLId",
          "ChangeToken"
        ],
        "members": {
          "WebACLId": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "DeleteXssMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "XssMatchSetId",
          "ChangeToken"
        ],
        "members": {
          "XssMatchSetId": {},
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "GetByteMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "ByteMatchSetId"
        ],
        "members": {
          "ByteMatchSetId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ByteMatchSet": {
            "shape": "S5"
          }
        }
      }
    },
    "GetChangeToken": {
      "input": {
        "type": "structure",
        "members": {}
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "GetChangeTokenStatus": {
      "input": {
        "type": "structure",
        "required": [
          "ChangeToken"
        ],
        "members": {
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeTokenStatus": {}
        }
      }
    },
    "GetGeoMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "GeoMatchSetId"
        ],
        "members": {
          "GeoMatchSetId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GeoMatchSet": {
            "shape": "Sh"
          }
        }
      }
    },
    "GetIPSet": {
      "input": {
        "type": "structure",
        "required": [
          "IPSetId"
        ],
        "members": {
          "IPSetId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "IPSet": {
            "shape": "So"
          }
        }
      }
    },
    "GetRateBasedRule": {
      "input": {
        "type": "structure",
        "required": [
          "RuleId"
        ],
        "members": {
          "RuleId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Rule": {
            "shape": "Sy"
          }
        }
      }
    },
    "GetRateBasedRuleManagedKeys": {
      "input": {
        "type": "structure",
        "required": [
          "RuleId"
        ],
        "members": {
          "RuleId": {},
          "NextMarker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ManagedKeys": {
            "type": "list",
            "member": {}
          },
          "NextMarker": {}
        }
      }
    },
    "GetRegexMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "RegexMatchSetId"
        ],
        "members": {
          "RegexMatchSetId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RegexMatchSet": {
            "shape": "S15"
          }
        }
      }
    },
    "GetRegexPatternSet": {
      "input": {
        "type": "structure",
        "required": [
          "RegexPatternSetId"
        ],
        "members": {
          "RegexPatternSetId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RegexPatternSet": {
            "shape": "S1a"
          }
        }
      }
    },
    "GetRule": {
      "input": {
        "type": "structure",
        "required": [
          "RuleId"
        ],
        "members": {
          "RuleId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Rule": {
            "shape": "S1f"
          }
        }
      }
    },
    "GetRuleGroup": {
      "input": {
        "type": "structure",
        "required": [
          "RuleGroupId"
        ],
        "members": {
          "RuleGroupId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "RuleGroup": {
            "shape": "S1i"
          }
        }
      }
    },
    "GetSampledRequests": {
      "input": {
        "type": "structure",
        "required": [
          "WebAclId",
          "RuleId",
          "TimeWindow",
          "MaxItems"
        ],
        "members": {
          "WebAclId": {},
          "RuleId": {},
          "TimeWindow": {
            "shape": "S3q"
          },
          "MaxItems": {
            "type": "long"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SampledRequests": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Request",
                "Weight"
              ],
              "members": {
                "Request": {
                  "type": "structure",
                  "members": {
                    "ClientIP": {},
                    "Country": {},
                    "URI": {},
                    "Method": {},
                    "HTTPVersion": {},
                    "Headers": {
                      "type": "list",
                      "member": {
                        "type": "structure",
                        "members": {
                          "Name": {},
                          "Value": {}
                        }
                      }
                    }
                  }
                },
                "Weight": {
                  "type": "long"
                },
                "Timestamp": {
                  "type": "timestamp"
                },
                "Action": {},
                "RuleWithinRuleGroup": {}
              }
            }
          },
          "PopulationSize": {
            "type": "long"
          },
          "TimeWindow": {
            "shape": "S3q"
          }
        }
      }
    },
    "GetSizeConstraintSet": {
      "input": {
        "type": "structure",
        "required": [
          "SizeConstraintSetId"
        ],
        "members": {
          "SizeConstraintSetId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SizeConstraintSet": {
            "shape": "S1l"
          }
        }
      }
    },
    "GetSqlInjectionMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "SqlInjectionMatchSetId"
        ],
        "members": {
          "SqlInjectionMatchSetId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "SqlInjectionMatchSet": {
            "shape": "S1s"
          }
        }
      }
    },
    "GetWebACL": {
      "input": {
        "type": "structure",
        "required": [
          "WebACLId"
        ],
        "members": {
          "WebACLId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "WebACL": {
            "shape": "S1z"
          }
        }
      }
    },
    "GetXssMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "XssMatchSetId"
        ],
        "members": {
          "XssMatchSetId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "XssMatchSet": {
            "shape": "S28"
          }
        }
      }
    },
    "ListActivatedRulesInRuleGroup": {
      "input": {
        "type": "structure",
        "members": {
          "RuleGroupId": {},
          "NextMarker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "ActivatedRules": {
            "shape": "S20"
          }
        }
      }
    },
    "ListByteMatchSets": {
      "input": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "ByteMatchSets": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "ByteMatchSetId",
                "Name"
              ],
              "members": {
                "ByteMatchSetId": {},
                "Name": {}
              }
            }
          }
        }
      }
    },
    "ListGeoMatchSets": {
      "input": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "GeoMatchSets": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "GeoMatchSetId",
                "Name"
              ],
              "members": {
                "GeoMatchSetId": {},
                "Name": {}
              }
            }
          }
        }
      }
    },
    "ListIPSets": {
      "input": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "IPSets": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "IPSetId",
                "Name"
              ],
              "members": {
                "IPSetId": {},
                "Name": {}
              }
            }
          }
        }
      }
    },
    "ListRateBasedRules": {
      "input": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Rules": {
            "shape": "S4y"
          }
        }
      }
    },
    "ListRegexMatchSets": {
      "input": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "RegexMatchSets": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "RegexMatchSetId",
                "Name"
              ],
              "members": {
                "RegexMatchSetId": {},
                "Name": {}
              }
            }
          }
        }
      }
    },
    "ListRegexPatternSets": {
      "input": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "RegexPatternSets": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "RegexPatternSetId",
                "Name"
              ],
              "members": {
                "RegexPatternSetId": {},
                "Name": {}
              }
            }
          }
        }
      }
    },
    "ListRuleGroups": {
      "input": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "RuleGroups": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "RuleGroupId",
                "Name"
              ],
              "members": {
                "RuleGroupId": {},
                "Name": {}
              }
            }
          }
        }
      }
    },
    "ListRules": {
      "input": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Rules": {
            "shape": "S4y"
          }
        }
      }
    },
    "ListSizeConstraintSets": {
      "input": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "SizeConstraintSets": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "SizeConstraintSetId",
                "Name"
              ],
              "members": {
                "SizeConstraintSetId": {},
                "Name": {}
              }
            }
          }
        }
      }
    },
    "ListSqlInjectionMatchSets": {
      "input": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "SqlInjectionMatchSets": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "SqlInjectionMatchSetId",
                "Name"
              ],
              "members": {
                "SqlInjectionMatchSetId": {},
                "Name": {}
              }
            }
          }
        }
      }
    },
    "ListSubscribedRuleGroups": {
      "input": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "RuleGroups": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "RuleGroupId",
                "Name",
                "MetricName"
              ],
              "members": {
                "RuleGroupId": {},
                "Name": {},
                "MetricName": {}
              }
            }
          }
        }
      }
    },
    "ListWebACLs": {
      "input": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "WebACLs": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "WebACLId",
                "Name"
              ],
              "members": {
                "WebACLId": {},
                "Name": {}
              }
            }
          }
        }
      }
    },
    "ListXssMatchSets": {
      "input": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "Limit": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextMarker": {},
          "XssMatchSets": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "XssMatchSetId",
                "Name"
              ],
              "members": {
                "XssMatchSetId": {},
                "Name": {}
              }
            }
          }
        }
      }
    },
    "UpdateByteMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "ByteMatchSetId",
          "ChangeToken",
          "Updates"
        ],
        "members": {
          "ByteMatchSetId": {},
          "ChangeToken": {},
          "Updates": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Action",
                "ByteMatchTuple"
              ],
              "members": {
                "Action": {},
                "ByteMatchTuple": {
                  "shape": "S8"
                }
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "UpdateGeoMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "GeoMatchSetId",
          "ChangeToken",
          "Updates"
        ],
        "members": {
          "GeoMatchSetId": {},
          "ChangeToken": {},
          "Updates": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Action",
                "GeoMatchConstraint"
              ],
              "members": {
                "Action": {},
                "GeoMatchConstraint": {
                  "shape": "Sj"
                }
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "UpdateIPSet": {
      "input": {
        "type": "structure",
        "required": [
          "IPSetId",
          "ChangeToken",
          "Updates"
        ],
        "members": {
          "IPSetId": {},
          "ChangeToken": {},
          "Updates": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Action",
                "IPSetDescriptor"
              ],
              "members": {
                "Action": {},
                "IPSetDescriptor": {
                  "shape": "Sq"
                }
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "UpdateRateBasedRule": {
      "input": {
        "type": "structure",
        "required": [
          "RuleId",
          "ChangeToken",
          "Updates",
          "RateLimit"
        ],
        "members": {
          "RuleId": {},
          "ChangeToken": {},
          "Updates": {
            "shape": "S6c"
          },
          "RateLimit": {
            "type": "long"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "UpdateRegexMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "RegexMatchSetId",
          "Updates",
          "ChangeToken"
        ],
        "members": {
          "RegexMatchSetId": {},
          "Updates": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Action",
                "RegexMatchTuple"
              ],
              "members": {
                "Action": {},
                "RegexMatchTuple": {
                  "shape": "S17"
                }
              }
            }
          },
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "UpdateRegexPatternSet": {
      "input": {
        "type": "structure",
        "required": [
          "RegexPatternSetId",
          "Updates",
          "ChangeToken"
        ],
        "members": {
          "RegexPatternSetId": {},
          "Updates": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Action",
                "RegexPatternString"
              ],
              "members": {
                "Action": {},
                "RegexPatternString": {}
              }
            }
          },
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "UpdateRule": {
      "input": {
        "type": "structure",
        "required": [
          "RuleId",
          "ChangeToken",
          "Updates"
        ],
        "members": {
          "RuleId": {},
          "ChangeToken": {},
          "Updates": {
            "shape": "S6c"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "UpdateRuleGroup": {
      "input": {
        "type": "structure",
        "required": [
          "RuleGroupId",
          "Updates",
          "ChangeToken"
        ],
        "members": {
          "RuleGroupId": {},
          "Updates": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Action",
                "ActivatedRule"
              ],
              "members": {
                "Action": {},
                "ActivatedRule": {
                  "shape": "S21"
                }
              }
            }
          },
          "ChangeToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "UpdateSizeConstraintSet": {
      "input": {
        "type": "structure",
        "required": [
          "SizeConstraintSetId",
          "ChangeToken",
          "Updates"
        ],
        "members": {
          "SizeConstraintSetId": {},
          "ChangeToken": {},
          "Updates": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Action",
                "SizeConstraint"
              ],
              "members": {
                "Action": {},
                "SizeConstraint": {
                  "shape": "S1n"
                }
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "UpdateSqlInjectionMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "SqlInjectionMatchSetId",
          "ChangeToken",
          "Updates"
        ],
        "members": {
          "SqlInjectionMatchSetId": {},
          "ChangeToken": {},
          "Updates": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Action",
                "SqlInjectionMatchTuple"
              ],
              "members": {
                "Action": {},
                "SqlInjectionMatchTuple": {
                  "shape": "S1u"
                }
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "UpdateWebACL": {
      "input": {
        "type": "structure",
        "required": [
          "WebACLId",
          "ChangeToken"
        ],
        "members": {
          "WebACLId": {},
          "ChangeToken": {},
          "Updates": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Action",
                "ActivatedRule"
              ],
              "members": {
                "Action": {},
                "ActivatedRule": {
                  "shape": "S21"
                }
              }
            }
          },
          "DefaultAction": {
            "shape": "S1w"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    },
    "UpdateXssMatchSet": {
      "input": {
        "type": "structure",
        "required": [
          "XssMatchSetId",
          "ChangeToken",
          "Updates"
        ],
        "members": {
          "XssMatchSetId": {},
          "ChangeToken": {},
          "Updates": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Action",
                "XssMatchTuple"
              ],
              "members": {
                "Action": {},
                "XssMatchTuple": {
                  "shape": "S2a"
                }
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ChangeToken": {}
        }
      }
    }
  },
  "shapes": {
    "S5": {
      "type": "structure",
      "required": [
        "ByteMatchSetId",
        "ByteMatchTuples"
      ],
      "members": {
        "ByteMatchSetId": {},
        "Name": {},
        "ByteMatchTuples": {
          "type": "list",
          "member": {
            "shape": "S8"
          }
        }
      }
    },
    "S8": {
      "type": "structure",
      "required": [
        "FieldToMatch",
        "TargetString",
        "TextTransformation",
        "PositionalConstraint"
      ],
      "members": {
        "FieldToMatch": {
          "shape": "S9"
        },
        "TargetString": {
          "type": "blob"
        },
        "TextTransformation": {},
        "PositionalConstraint": {}
      }
    },
    "S9": {
      "type": "structure",
      "required": [
        "Type"
      ],
      "members": {
        "Type": {},
        "Data": {}
      }
    },
    "Sh": {
      "type": "structure",
      "required": [
        "GeoMatchSetId",
        "GeoMatchConstraints"
      ],
      "members": {
        "GeoMatchSetId": {},
        "Name": {},
        "GeoMatchConstraints": {
          "type": "list",
          "member": {
            "shape": "Sj"
          }
        }
      }
    },
    "Sj": {
      "type": "structure",
      "required": [
        "Type",
        "Value"
      ],
      "members": {
        "Type": {},
        "Value": {}
      }
    },
    "So": {
      "type": "structure",
      "required": [
        "IPSetId",
        "IPSetDescriptors"
      ],
      "members": {
        "IPSetId": {},
        "Name": {},
        "IPSetDescriptors": {
          "type": "list",
          "member": {
            "shape": "Sq"
          }
        }
      }
    },
    "Sq": {
      "type": "structure",
      "required": [
        "Type",
        "Value"
      ],
      "members": {
        "Type": {},
        "Value": {}
      }
    },
    "Sy": {
      "type": "structure",
      "required": [
        "RuleId",
        "MatchPredicates",
        "RateKey",
        "RateLimit"
      ],
      "members": {
        "RuleId": {},
        "Name": {},
        "MetricName": {},
        "MatchPredicates": {
          "shape": "Sz"
        },
        "RateKey": {},
        "RateLimit": {
          "type": "long"
        }
      }
    },
    "Sz": {
      "type": "list",
      "member": {
        "shape": "S10"
      }
    },
    "S10": {
      "type": "structure",
      "required": [
        "Negated",
        "Type",
        "DataId"
      ],
      "members": {
        "Negated": {
          "type": "boolean"
        },
        "Type": {},
        "DataId": {}
      }
    },
    "S15": {
      "type": "structure",
      "members": {
        "RegexMatchSetId": {},
        "Name": {},
        "RegexMatchTuples": {
          "type": "list",
          "member": {
            "shape": "S17"
          }
        }
      }
    },
    "S17": {
      "type": "structure",
      "required": [
        "FieldToMatch",
        "TextTransformation",
        "RegexPatternSetId"
      ],
      "members": {
        "FieldToMatch": {
          "shape": "S9"
        },
        "TextTransformation": {},
        "RegexPatternSetId": {}
      }
    },
    "S1a": {
      "type": "structure",
      "required": [
        "RegexPatternSetId",
        "RegexPatternStrings"
      ],
      "members": {
        "RegexPatternSetId": {},
        "Name": {},
        "RegexPatternStrings": {
          "type": "list",
          "member": {}
        }
      }
    },
    "S1f": {
      "type": "structure",
      "required": [
        "RuleId",
        "Predicates"
      ],
      "members": {
        "RuleId": {},
        "Name": {},
        "MetricName": {},
        "Predicates": {
          "shape": "Sz"
        }
      }
    },
    "S1i": {
      "type": "structure",
      "required": [
        "RuleGroupId"
      ],
      "members": {
        "RuleGroupId": {},
        "Name": {},
        "MetricName": {}
      }
    },
    "S1l": {
      "type": "structure",
      "required": [
        "SizeConstraintSetId",
        "SizeConstraints"
      ],
      "members": {
        "SizeConstraintSetId": {},
        "Name": {},
        "SizeConstraints": {
          "type": "list",
          "member": {
            "shape": "S1n"
          }
        }
      }
    },
    "S1n": {
      "type": "structure",
      "required": [
        "FieldToMatch",
        "TextTransformation",
        "ComparisonOperator",
        "Size"
      ],
      "members": {
        "FieldToMatch": {
          "shape": "S9"
        },
        "TextTransformation": {},
        "ComparisonOperator": {},
        "Size": {
          "type": "long"
        }
      }
    },
    "S1s": {
      "type": "structure",
      "required": [
        "SqlInjectionMatchSetId",
        "SqlInjectionMatchTuples"
      ],
      "members": {
        "SqlInjectionMatchSetId": {},
        "Name": {},
        "SqlInjectionMatchTuples": {
          "type": "list",
          "member": {
            "shape": "S1u"
          }
        }
      }
    },
    "S1u": {
      "type": "structure",
      "required": [
        "FieldToMatch",
        "TextTransformation"
      ],
      "members": {
        "FieldToMatch": {
          "shape": "S9"
        },
        "TextTransformation": {}
      }
    },
    "S1w": {
      "type": "structure",
      "required": [
        "Type"
      ],
      "members": {
        "Type": {}
      }
    },
    "S1z": {
      "type": "structure",
      "required": [
        "WebACLId",
        "DefaultAction",
        "Rules"
      ],
      "members": {
        "WebACLId": {},
        "Name": {},
        "MetricName": {},
        "DefaultAction": {
          "shape": "S1w"
        },
        "Rules": {
          "shape": "S20"
        }
      }
    },
    "S20": {
      "type": "list",
      "member": {
        "shape": "S21"
      }
    },
    "S21": {
      "type": "structure",
      "required": [
        "Priority",
        "RuleId"
      ],
      "members": {
        "Priority": {
          "type": "integer"
        },
        "RuleId": {},
        "Action": {
          "shape": "S1w"
        },
        "OverrideAction": {
          "type": "structure",
          "required": [
            "Type"
          ],
          "members": {
            "Type": {}
          }
        },
        "Type": {}
      }
    },
    "S28": {
      "type": "structure",
      "required": [
        "XssMatchSetId",
        "XssMatchTuples"
      ],
      "members": {
        "XssMatchSetId": {},
        "Name": {},
        "XssMatchTuples": {
          "type": "list",
          "member": {
            "shape": "S2a"
          }
        }
      }
    },
    "S2a": {
      "type": "structure",
      "required": [
        "FieldToMatch",
        "TextTransformation"
      ],
      "members": {
        "FieldToMatch": {
          "shape": "S9"
        },
        "TextTransformation": {}
      }
    },
    "S3q": {
      "type": "structure",
      "required": [
        "StartTime",
        "EndTime"
      ],
      "members": {
        "StartTime": {
          "type": "timestamp"
        },
        "EndTime": {
          "type": "timestamp"
        }
      }
    },
    "S4y": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "RuleId",
          "Name"
        ],
        "members": {
          "RuleId": {},
          "Name": {}
        }
      }
    },
    "S6c": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Action",
          "Predicate"
        ],
        "members": {
          "Action": {},
          "Predicate": {
            "shape": "S10"
          }
        }
      }
    }
  }
}
},{}],161:[function(require,module,exports){
arguments[4][19][0].apply(exports,arguments)
},{"dup":19}],162:[function(require,module,exports){
module.exports={
  "version": "2.0",
  "metadata": {
    "apiVersion": "2016-05-01",
    "endpointPrefix": "workdocs",
    "jsonVersion": "1.1",
    "protocol": "rest-json",
    "serviceFullName": "Amazon WorkDocs",
    "signatureVersion": "v4",
    "uid": "workdocs-2016-05-01"
  },
  "operations": {
    "AbortDocumentVersionUpload": {
      "http": {
        "method": "DELETE",
        "requestUri": "/api/v1/documents/{DocumentId}/versions/{VersionId}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "DocumentId",
          "VersionId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "DocumentId": {
            "location": "uri",
            "locationName": "DocumentId"
          },
          "VersionId": {
            "location": "uri",
            "locationName": "VersionId"
          }
        }
      }
    },
    "ActivateUser": {
      "http": {
        "requestUri": "/api/v1/users/{UserId}/activation",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "UserId"
        ],
        "members": {
          "UserId": {
            "location": "uri",
            "locationName": "UserId"
          },
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "User": {
            "shape": "S8"
          }
        }
      }
    },
    "AddResourcePermissions": {
      "http": {
        "requestUri": "/api/v1/resources/{ResourceId}/permissions",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "ResourceId",
          "Principals"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "ResourceId": {
            "location": "uri",
            "locationName": "ResourceId"
          },
          "Principals": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "Id",
                "Type",
                "Role"
              ],
              "members": {
                "Id": {},
                "Type": {},
                "Role": {}
              }
            }
          },
          "NotificationOptions": {
            "type": "structure",
            "members": {
              "SendEmail": {
                "type": "boolean"
              },
              "EmailMessage": {
                "shape": "St"
              }
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ShareResults": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "PrincipalId": {},
                "Role": {},
                "Status": {},
                "ShareId": {},
                "StatusMessage": {
                  "shape": "St"
                }
              }
            }
          }
        }
      }
    },
    "CreateComment": {
      "http": {
        "requestUri": "/api/v1/documents/{DocumentId}/versions/{VersionId}/comment",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "DocumentId",
          "VersionId",
          "Text"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "DocumentId": {
            "location": "uri",
            "locationName": "DocumentId"
          },
          "VersionId": {
            "location": "uri",
            "locationName": "VersionId"
          },
          "ParentId": {},
          "ThreadId": {},
          "Text": {
            "shape": "S10"
          },
          "Visibility": {},
          "NotifyCollaborators": {
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Comment": {
            "shape": "S13"
          }
        }
      }
    },
    "CreateCustomMetadata": {
      "http": {
        "method": "PUT",
        "requestUri": "/api/v1/resources/{ResourceId}/customMetadata",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "ResourceId",
          "CustomMetadata"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "ResourceId": {
            "location": "uri",
            "locationName": "ResourceId"
          },
          "VersionId": {
            "location": "querystring",
            "locationName": "versionid"
          },
          "CustomMetadata": {
            "shape": "S16"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "CreateFolder": {
      "http": {
        "requestUri": "/api/v1/folders",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "ParentFolderId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "Name": {},
          "ParentFolderId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Metadata": {
            "shape": "S1d"
          }
        }
      }
    },
    "CreateLabels": {
      "http": {
        "method": "PUT",
        "requestUri": "/api/v1/resources/{ResourceId}/labels",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "ResourceId",
          "Labels"
        ],
        "members": {
          "ResourceId": {
            "location": "uri",
            "locationName": "ResourceId"
          },
          "Labels": {
            "shape": "S1g"
          },
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "CreateNotificationSubscription": {
      "http": {
        "requestUri": "/api/v1/organizations/{OrganizationId}/subscriptions",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "OrganizationId",
          "Endpoint",
          "Protocol",
          "SubscriptionType"
        ],
        "members": {
          "OrganizationId": {
            "location": "uri",
            "locationName": "OrganizationId"
          },
          "Endpoint": {},
          "Protocol": {},
          "SubscriptionType": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Subscription": {
            "shape": "S1p"
          }
        }
      }
    },
    "CreateUser": {
      "http": {
        "requestUri": "/api/v1/users",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "Username",
          "GivenName",
          "Surname",
          "Password"
        ],
        "members": {
          "OrganizationId": {},
          "Username": {},
          "EmailAddress": {},
          "GivenName": {},
          "Surname": {},
          "Password": {
            "type": "string",
            "sensitive": true
          },
          "TimeZoneId": {},
          "StorageRule": {
            "shape": "Sj"
          },
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "User": {
            "shape": "S8"
          }
        }
      }
    },
    "DeactivateUser": {
      "http": {
        "method": "DELETE",
        "requestUri": "/api/v1/users/{UserId}/activation",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "UserId"
        ],
        "members": {
          "UserId": {
            "location": "uri",
            "locationName": "UserId"
          },
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          }
        }
      }
    },
    "DeleteComment": {
      "http": {
        "method": "DELETE",
        "requestUri": "/api/v1/documents/{DocumentId}/versions/{VersionId}/comment/{CommentId}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "DocumentId",
          "VersionId",
          "CommentId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "DocumentId": {
            "location": "uri",
            "locationName": "DocumentId"
          },
          "VersionId": {
            "location": "uri",
            "locationName": "VersionId"
          },
          "CommentId": {
            "location": "uri",
            "locationName": "CommentId"
          }
        }
      }
    },
    "DeleteCustomMetadata": {
      "http": {
        "method": "DELETE",
        "requestUri": "/api/v1/resources/{ResourceId}/customMetadata",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "ResourceId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "ResourceId": {
            "location": "uri",
            "locationName": "ResourceId"
          },
          "VersionId": {
            "location": "querystring",
            "locationName": "versionId"
          },
          "Keys": {
            "location": "querystring",
            "locationName": "keys",
            "type": "list",
            "member": {}
          },
          "DeleteAll": {
            "location": "querystring",
            "locationName": "deleteAll",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteDocument": {
      "http": {
        "method": "DELETE",
        "requestUri": "/api/v1/documents/{DocumentId}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "DocumentId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "DocumentId": {
            "location": "uri",
            "locationName": "DocumentId"
          }
        }
      }
    },
    "DeleteFolder": {
      "http": {
        "method": "DELETE",
        "requestUri": "/api/v1/folders/{FolderId}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "FolderId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "FolderId": {
            "location": "uri",
            "locationName": "FolderId"
          }
        }
      }
    },
    "DeleteFolderContents": {
      "http": {
        "method": "DELETE",
        "requestUri": "/api/v1/folders/{FolderId}/contents",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "FolderId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "FolderId": {
            "location": "uri",
            "locationName": "FolderId"
          }
        }
      }
    },
    "DeleteLabels": {
      "http": {
        "method": "DELETE",
        "requestUri": "/api/v1/resources/{ResourceId}/labels",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "ResourceId"
        ],
        "members": {
          "ResourceId": {
            "location": "uri",
            "locationName": "ResourceId"
          },
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "Labels": {
            "shape": "S1g",
            "location": "querystring",
            "locationName": "labels"
          },
          "DeleteAll": {
            "location": "querystring",
            "locationName": "deleteAll",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteNotificationSubscription": {
      "http": {
        "method": "DELETE",
        "requestUri": "/api/v1/organizations/{OrganizationId}/subscriptions/{SubscriptionId}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "SubscriptionId",
          "OrganizationId"
        ],
        "members": {
          "SubscriptionId": {
            "location": "uri",
            "locationName": "SubscriptionId"
          },
          "OrganizationId": {
            "location": "uri",
            "locationName": "OrganizationId"
          }
        }
      }
    },
    "DeleteUser": {
      "http": {
        "method": "DELETE",
        "requestUri": "/api/v1/users/{UserId}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "UserId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "UserId": {
            "location": "uri",
            "locationName": "UserId"
          }
        }
      }
    },
    "DescribeActivities": {
      "http": {
        "method": "GET",
        "requestUri": "/api/v1/activities",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "StartTime": {
            "location": "querystring",
            "locationName": "startTime",
            "type": "timestamp"
          },
          "EndTime": {
            "location": "querystring",
            "locationName": "endTime",
            "type": "timestamp"
          },
          "OrganizationId": {
            "location": "querystring",
            "locationName": "organizationId"
          },
          "UserId": {
            "location": "querystring",
            "locationName": "userId"
          },
          "Limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "marker"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "UserActivities": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Type": {},
                "TimeStamp": {
                  "type": "timestamp"
                },
                "OrganizationId": {},
                "Initiator": {
                  "shape": "S2c"
                },
                "Participants": {
                  "type": "structure",
                  "members": {
                    "Users": {
                      "type": "list",
                      "member": {
                        "shape": "S2c"
                      }
                    },
                    "Groups": {
                      "shape": "S2f"
                    }
                  }
                },
                "ResourceMetadata": {
                  "shape": "S2i"
                },
                "OriginalParent": {
                  "shape": "S2i"
                },
                "CommentMetadata": {
                  "type": "structure",
                  "members": {
                    "CommentId": {},
                    "Contributor": {
                      "shape": "S8"
                    },
                    "CreatedTimestamp": {
                      "type": "timestamp"
                    },
                    "CommentStatus": {},
                    "RecipientId": {}
                  }
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeComments": {
      "http": {
        "method": "GET",
        "requestUri": "/api/v1/documents/{DocumentId}/versions/{VersionId}/comments",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "DocumentId",
          "VersionId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "DocumentId": {
            "location": "uri",
            "locationName": "DocumentId"
          },
          "VersionId": {
            "location": "uri",
            "locationName": "VersionId"
          },
          "Limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "marker"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Comments": {
            "type": "list",
            "member": {
              "shape": "S13"
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeDocumentVersions": {
      "http": {
        "method": "GET",
        "requestUri": "/api/v1/documents/{DocumentId}/versions",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "DocumentId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "DocumentId": {
            "location": "uri",
            "locationName": "DocumentId"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "Limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          },
          "Include": {
            "location": "querystring",
            "locationName": "include"
          },
          "Fields": {
            "location": "querystring",
            "locationName": "fields"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "DocumentVersions": {
            "type": "list",
            "member": {
              "shape": "S2t"
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeFolderContents": {
      "http": {
        "method": "GET",
        "requestUri": "/api/v1/folders/{FolderId}/contents",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FolderId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "FolderId": {
            "location": "uri",
            "locationName": "FolderId"
          },
          "Sort": {
            "location": "querystring",
            "locationName": "sort"
          },
          "Order": {
            "location": "querystring",
            "locationName": "order"
          },
          "Limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "Type": {
            "location": "querystring",
            "locationName": "type"
          },
          "Include": {
            "location": "querystring",
            "locationName": "include"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Folders": {
            "shape": "S36"
          },
          "Documents": {
            "type": "list",
            "member": {
              "shape": "S38"
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeGroups": {
      "http": {
        "method": "GET",
        "requestUri": "/api/v1/groups",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "SearchQuery"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "SearchQuery": {
            "shape": "S3a",
            "location": "querystring",
            "locationName": "searchQuery"
          },
          "OrganizationId": {
            "location": "querystring",
            "locationName": "organizationId"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "Limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Groups": {
            "shape": "S2f"
          },
          "Marker": {}
        }
      }
    },
    "DescribeNotificationSubscriptions": {
      "http": {
        "method": "GET",
        "requestUri": "/api/v1/organizations/{OrganizationId}/subscriptions",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "OrganizationId"
        ],
        "members": {
          "OrganizationId": {
            "location": "uri",
            "locationName": "OrganizationId"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "Limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Subscriptions": {
            "type": "list",
            "member": {
              "shape": "S1p"
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeResourcePermissions": {
      "http": {
        "method": "GET",
        "requestUri": "/api/v1/resources/{ResourceId}/permissions",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "ResourceId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "ResourceId": {
            "location": "uri",
            "locationName": "ResourceId"
          },
          "PrincipalId": {
            "location": "querystring",
            "locationName": "principalId"
          },
          "Limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "marker"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Principals": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "Id": {},
                "Type": {},
                "Roles": {
                  "type": "list",
                  "member": {
                    "type": "structure",
                    "members": {
                      "Role": {},
                      "Type": {}
                    }
                  }
                }
              }
            }
          },
          "Marker": {}
        }
      }
    },
    "DescribeRootFolders": {
      "http": {
        "method": "GET",
        "requestUri": "/api/v1/me/root",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "AuthenticationToken"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "Limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "marker"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Folders": {
            "shape": "S36"
          },
          "Marker": {}
        }
      }
    },
    "DescribeUsers": {
      "http": {
        "method": "GET",
        "requestUri": "/api/v1/users",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "OrganizationId": {
            "location": "querystring",
            "locationName": "organizationId"
          },
          "UserIds": {
            "location": "querystring",
            "locationName": "userIds"
          },
          "Query": {
            "shape": "S3a",
            "location": "querystring",
            "locationName": "query"
          },
          "Include": {
            "location": "querystring",
            "locationName": "include"
          },
          "Order": {
            "location": "querystring",
            "locationName": "order"
          },
          "Sort": {
            "location": "querystring",
            "locationName": "sort"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "marker"
          },
          "Limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          },
          "Fields": {
            "location": "querystring",
            "locationName": "fields"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Users": {
            "type": "list",
            "member": {
              "shape": "S8"
            }
          },
          "TotalNumberOfUsers": {
            "deprecated": true,
            "type": "long"
          },
          "Marker": {}
        }
      }
    },
    "GetCurrentUser": {
      "http": {
        "method": "GET",
        "requestUri": "/api/v1/me",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "AuthenticationToken"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "User": {
            "shape": "S8"
          }
        }
      }
    },
    "GetDocument": {
      "http": {
        "method": "GET",
        "requestUri": "/api/v1/documents/{DocumentId}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "DocumentId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "DocumentId": {
            "location": "uri",
            "locationName": "DocumentId"
          },
          "IncludeCustomMetadata": {
            "location": "querystring",
            "locationName": "includeCustomMetadata",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Metadata": {
            "shape": "S38"
          },
          "CustomMetadata": {
            "shape": "S16"
          }
        }
      }
    },
    "GetDocumentPath": {
      "http": {
        "method": "GET",
        "requestUri": "/api/v1/documents/{DocumentId}/path",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "DocumentId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "DocumentId": {
            "location": "uri",
            "locationName": "DocumentId"
          },
          "Limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          },
          "Fields": {
            "location": "querystring",
            "locationName": "fields"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "marker"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Path": {
            "shape": "S41"
          }
        }
      }
    },
    "GetDocumentVersion": {
      "http": {
        "method": "GET",
        "requestUri": "/api/v1/documents/{DocumentId}/versions/{VersionId}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "DocumentId",
          "VersionId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "DocumentId": {
            "location": "uri",
            "locationName": "DocumentId"
          },
          "VersionId": {
            "location": "uri",
            "locationName": "VersionId"
          },
          "Fields": {
            "location": "querystring",
            "locationName": "fields"
          },
          "IncludeCustomMetadata": {
            "location": "querystring",
            "locationName": "includeCustomMetadata",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Metadata": {
            "shape": "S2t"
          },
          "CustomMetadata": {
            "shape": "S16"
          }
        }
      }
    },
    "GetFolder": {
      "http": {
        "method": "GET",
        "requestUri": "/api/v1/folders/{FolderId}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FolderId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "FolderId": {
            "location": "uri",
            "locationName": "FolderId"
          },
          "IncludeCustomMetadata": {
            "location": "querystring",
            "locationName": "includeCustomMetadata",
            "type": "boolean"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Metadata": {
            "shape": "S1d"
          },
          "CustomMetadata": {
            "shape": "S16"
          }
        }
      }
    },
    "GetFolderPath": {
      "http": {
        "method": "GET",
        "requestUri": "/api/v1/folders/{FolderId}/path",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FolderId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "FolderId": {
            "location": "uri",
            "locationName": "FolderId"
          },
          "Limit": {
            "location": "querystring",
            "locationName": "limit",
            "type": "integer"
          },
          "Fields": {
            "location": "querystring",
            "locationName": "fields"
          },
          "Marker": {
            "location": "querystring",
            "locationName": "marker"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Path": {
            "shape": "S41"
          }
        }
      }
    },
    "InitiateDocumentVersionUpload": {
      "http": {
        "requestUri": "/api/v1/documents",
        "responseCode": 201
      },
      "input": {
        "type": "structure",
        "required": [
          "ParentFolderId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "Id": {},
          "Name": {},
          "ContentCreatedTimestamp": {
            "type": "timestamp"
          },
          "ContentModifiedTimestamp": {
            "type": "timestamp"
          },
          "ContentType": {},
          "DocumentSizeInBytes": {
            "type": "long"
          },
          "ParentFolderId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Metadata": {
            "shape": "S38"
          },
          "UploadMetadata": {
            "type": "structure",
            "members": {
              "UploadUrl": {
                "shape": "S2y"
              },
              "SignedHeaders": {
                "type": "map",
                "key": {},
                "value": {}
              }
            }
          }
        }
      }
    },
    "RemoveAllResourcePermissions": {
      "http": {
        "method": "DELETE",
        "requestUri": "/api/v1/resources/{ResourceId}/permissions",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "ResourceId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "ResourceId": {
            "location": "uri",
            "locationName": "ResourceId"
          }
        }
      }
    },
    "RemoveResourcePermission": {
      "http": {
        "method": "DELETE",
        "requestUri": "/api/v1/resources/{ResourceId}/permissions/{PrincipalId}",
        "responseCode": 204
      },
      "input": {
        "type": "structure",
        "required": [
          "ResourceId",
          "PrincipalId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "ResourceId": {
            "location": "uri",
            "locationName": "ResourceId"
          },
          "PrincipalId": {
            "location": "uri",
            "locationName": "PrincipalId"
          },
          "PrincipalType": {
            "location": "querystring",
            "locationName": "type"
          }
        }
      }
    },
    "UpdateDocument": {
      "http": {
        "method": "PATCH",
        "requestUri": "/api/v1/documents/{DocumentId}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "DocumentId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "DocumentId": {
            "location": "uri",
            "locationName": "DocumentId"
          },
          "Name": {},
          "ParentFolderId": {},
          "ResourceState": {}
        }
      }
    },
    "UpdateDocumentVersion": {
      "http": {
        "method": "PATCH",
        "requestUri": "/api/v1/documents/{DocumentId}/versions/{VersionId}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "DocumentId",
          "VersionId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "DocumentId": {
            "location": "uri",
            "locationName": "DocumentId"
          },
          "VersionId": {
            "location": "uri",
            "locationName": "VersionId"
          },
          "VersionStatus": {}
        }
      }
    },
    "UpdateFolder": {
      "http": {
        "method": "PATCH",
        "requestUri": "/api/v1/folders/{FolderId}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "FolderId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "FolderId": {
            "location": "uri",
            "locationName": "FolderId"
          },
          "Name": {},
          "ParentFolderId": {},
          "ResourceState": {}
        }
      }
    },
    "UpdateUser": {
      "http": {
        "method": "PATCH",
        "requestUri": "/api/v1/users/{UserId}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "required": [
          "UserId"
        ],
        "members": {
          "AuthenticationToken": {
            "shape": "S2",
            "location": "header",
            "locationName": "Authentication"
          },
          "UserId": {
            "location": "uri",
            "locationName": "UserId"
          },
          "GivenName": {},
          "Surname": {},
          "Type": {},
          "StorageRule": {
            "shape": "Sj"
          },
          "TimeZoneId": {},
          "Locale": {},
          "GrantPoweruserPrivileges": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "User": {
            "shape": "S8"
          }
        }
      }
    }
  },
  "shapes": {
    "S2": {
      "type": "string",
      "sensitive": true
    },
    "S8": {
      "type": "structure",
      "members": {
        "Id": {},
        "Username": {},
        "EmailAddress": {},
        "GivenName": {},
        "Surname": {},
        "OrganizationId": {},
        "RootFolderId": {},
        "RecycleBinFolderId": {},
        "Status": {},
        "Type": {},
        "CreatedTimestamp": {
          "type": "timestamp"
        },
        "ModifiedTimestamp": {
          "type": "timestamp"
        },
        "TimeZoneId": {},
        "Locale": {},
        "Storage": {
          "type": "structure",
          "members": {
            "StorageUtilizedInBytes": {
              "type": "long"
            },
            "StorageRule": {
              "shape": "Sj"
            }
          }
        }
      }
    },
    "Sj": {
      "type": "structure",
      "members": {
        "StorageAllocatedInBytes": {
          "type": "long"
        },
        "StorageType": {}
      }
    },
    "St": {
      "type": "string",
      "sensitive": true
    },
    "S10": {
      "type": "string",
      "sensitive": true
    },
    "S13": {
      "type": "structure",
      "required": [
        "CommentId"
      ],
      "members": {
        "CommentId": {},
        "ParentId": {},
        "ThreadId": {},
        "Text": {
          "shape": "S10"
        },
        "Contributor": {
          "shape": "S8"
        },
        "CreatedTimestamp": {
          "type": "timestamp"
        },
        "Status": {},
        "Visibility": {},
        "RecipientId": {}
      }
    },
    "S16": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S1d": {
      "type": "structure",
      "members": {
        "Id": {},
        "Name": {},
        "CreatorId": {},
        "ParentFolderId": {},
        "CreatedTimestamp": {
          "type": "timestamp"
        },
        "ModifiedTimestamp": {
          "type": "timestamp"
        },
        "ResourceState": {},
        "Signature": {},
        "Labels": {
          "shape": "S1g"
        },
        "Size": {
          "type": "long"
        },
        "LatestVersionSize": {
          "type": "long"
        }
      }
    },
    "S1g": {
      "type": "list",
      "member": {}
    },
    "S1p": {
      "type": "structure",
      "members": {
        "SubscriptionId": {},
        "EndPoint": {},
        "Protocol": {}
      }
    },
    "S2c": {
      "type": "structure",
      "members": {
        "Id": {},
        "Username": {},
        "GivenName": {},
        "Surname": {},
        "EmailAddress": {}
      }
    },
    "S2f": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Id": {},
          "Name": {}
        }
      }
    },
    "S2i": {
      "type": "structure",
      "members": {
        "Type": {},
        "Name": {},
        "OriginalName": {},
        "Id": {},
        "VersionId": {},
        "Owner": {
          "shape": "S2c"
        },
        "ParentId": {}
      }
    },
    "S2t": {
      "type": "structure",
      "members": {
        "Id": {},
        "Name": {},
        "ContentType": {},
        "Size": {
          "type": "long"
        },
        "Signature": {},
        "Status": {},
        "CreatedTimestamp": {
          "type": "timestamp"
        },
        "ModifiedTimestamp": {
          "type": "timestamp"
        },
        "ContentCreatedTimestamp": {
          "type": "timestamp"
        },
        "ContentModifiedTimestamp": {
          "type": "timestamp"
        },
        "CreatorId": {},
        "Thumbnail": {
          "type": "map",
          "key": {},
          "value": {
            "shape": "S2y"
          }
        },
        "Source": {
          "type": "map",
          "key": {},
          "value": {
            "shape": "S2y"
          }
        }
      }
    },
    "S2y": {
      "type": "string",
      "sensitive": true
    },
    "S36": {
      "type": "list",
      "member": {
        "shape": "S1d"
      }
    },
    "S38": {
      "type": "structure",
      "members": {
        "Id": {},
        "CreatorId": {},
        "ParentFolderId": {},
        "CreatedTimestamp": {
          "type": "timestamp"
        },
        "ModifiedTimestamp": {
          "type": "timestamp"
        },
        "LatestVersionMetadata": {
          "shape": "S2t"
        },
        "ResourceState": {},
        "Labels": {
          "shape": "S1g"
        }
      }
    },
    "S3a": {
      "type": "string",
      "sensitive": true
    },
    "S41": {
      "type": "structure",
      "members": {
        "Components": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "Id": {},
              "Name": {}
            }
          }
        }
      }
    }
  }
}
},{}],163:[function(require,module,exports){
module.exports={
  "pagination": {
    "DescribeDocumentVersions": {
      "input_token": "Marker",
      "limit_key": "Limit",
      "output_token": "Marker",
      "result_key": "DocumentVersions"
    },
    "DescribeFolderContents": {
      "input_token": "Marker",
      "limit_key": "Limit",
      "output_token": "Marker",
      "result_key": [
        "Folders",
        "Documents"
      ]
    },
    "DescribeUsers": {
      "input_token": "Marker",
      "limit_key": "Limit",
      "output_token": "Marker",
      "result_key": "Users"
    }
  }
}
},{}],164:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['acm'] = {};
AWS.ACM = Service.defineService('acm', ['2015-12-08']);
Object.defineProperty(apiLoader.services['acm'], '2015-12-08', {
  get: function get() {
    var model = require('../apis/acm-2015-12-08.min.json');
    model.paginators = require('../apis/acm-2015-12-08.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.ACM;

},{"../apis/acm-2015-12-08.min.json":1,"../apis/acm-2015-12-08.paginators.json":2,"../lib/core":239,"../lib/node_loader":236}],165:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['apigateway'] = {};
AWS.APIGateway = Service.defineService('apigateway', ['2015-07-09']);
require('../lib/services/apigateway');
Object.defineProperty(apiLoader.services['apigateway'], '2015-07-09', {
  get: function get() {
    var model = require('../apis/apigateway-2015-07-09.min.json');
    model.paginators = require('../apis/apigateway-2015-07-09.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.APIGateway;

},{"../apis/apigateway-2015-07-09.min.json":3,"../apis/apigateway-2015-07-09.paginators.json":4,"../lib/core":239,"../lib/node_loader":236,"../lib/services/apigateway":280}],166:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['applicationautoscaling'] = {};
AWS.ApplicationAutoScaling = Service.defineService('applicationautoscaling', ['2016-02-06']);
Object.defineProperty(apiLoader.services['applicationautoscaling'], '2016-02-06', {
  get: function get() {
    var model = require('../apis/application-autoscaling-2016-02-06.min.json');
    model.paginators = require('../apis/application-autoscaling-2016-02-06.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.ApplicationAutoScaling;

},{"../apis/application-autoscaling-2016-02-06.min.json":5,"../apis/application-autoscaling-2016-02-06.paginators.json":6,"../lib/core":239,"../lib/node_loader":236}],167:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['autoscaling'] = {};
AWS.AutoScaling = Service.defineService('autoscaling', ['2011-01-01']);
Object.defineProperty(apiLoader.services['autoscaling'], '2011-01-01', {
  get: function get() {
    var model = require('../apis/autoscaling-2011-01-01.min.json');
    model.paginators = require('../apis/autoscaling-2011-01-01.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.AutoScaling;

},{"../apis/autoscaling-2011-01-01.min.json":7,"../apis/autoscaling-2011-01-01.paginators.json":8,"../lib/core":239,"../lib/node_loader":236}],168:[function(require,module,exports){
require('../lib/node_loader');
module.exports = {
  ACM: require('./acm'),
  APIGateway: require('./apigateway'),
  ApplicationAutoScaling: require('./applicationautoscaling'),
  AutoScaling: require('./autoscaling'),
  CloudFormation: require('./cloudformation'),
  CloudFront: require('./cloudfront'),
  CloudHSM: require('./cloudhsm'),
  CloudTrail: require('./cloudtrail'),
  CloudWatch: require('./cloudwatch'),
  CloudWatchEvents: require('./cloudwatchevents'),
  CloudWatchLogs: require('./cloudwatchlogs'),
  CodeCommit: require('./codecommit'),
  CodeDeploy: require('./codedeploy'),
  CodePipeline: require('./codepipeline'),
  CognitoIdentity: require('./cognitoidentity'),
  CognitoIdentityServiceProvider: require('./cognitoidentityserviceprovider'),
  CognitoSync: require('./cognitosync'),
  ConfigService: require('./configservice'),
  CUR: require('./cur'),
  DeviceFarm: require('./devicefarm'),
  DirectConnect: require('./directconnect'),
  DynamoDB: require('./dynamodb'),
  DynamoDBStreams: require('./dynamodbstreams'),
  EC2: require('./ec2'),
  ECR: require('./ecr'),
  ECS: require('./ecs'),
  EFS: require('./efs'),
  ElastiCache: require('./elasticache'),
  ElasticBeanstalk: require('./elasticbeanstalk'),
  ELB: require('./elb'),
  ELBv2: require('./elbv2'),
  EMR: require('./emr'),
  ElasticTranscoder: require('./elastictranscoder'),
  Firehose: require('./firehose'),
  GameLift: require('./gamelift'),
  Inspector: require('./inspector'),
  Iot: require('./iot'),
  IotData: require('./iotdata'),
  Kinesis: require('./kinesis'),
  KMS: require('./kms'),
  Lambda: require('./lambda'),
  LexRuntime: require('./lexruntime'),
  MachineLearning: require('./machinelearning'),
  MarketplaceCommerceAnalytics: require('./marketplacecommerceanalytics'),
  MTurk: require('./mturk'),
  MobileAnalytics: require('./mobileanalytics'),
  OpsWorks: require('./opsworks'),
  Polly: require('./polly'),
  RDS: require('./rds'),
  Redshift: require('./redshift'),
  Rekognition: require('./rekognition'),
  Route53: require('./route53'),
  Route53Domains: require('./route53domains'),
  S3: require('./s3'),
  ServiceCatalog: require('./servicecatalog'),
  SES: require('./ses'),
  SNS: require('./sns'),
  SQS: require('./sqs'),
  SSM: require('./ssm'),
  StorageGateway: require('./storagegateway'),
  STS: require('./sts'),
  WAF: require('./waf'),
  WorkDocs: require('./workdocs'),
  LexModelBuildingService: require('./lexmodelbuildingservice')
};
},{"../lib/node_loader":236,"./acm":164,"./apigateway":165,"./applicationautoscaling":166,"./autoscaling":167,"./cloudformation":169,"./cloudfront":170,"./cloudhsm":171,"./cloudtrail":172,"./cloudwatch":173,"./cloudwatchevents":174,"./cloudwatchlogs":175,"./codecommit":176,"./codedeploy":177,"./codepipeline":178,"./cognitoidentity":179,"./cognitoidentityserviceprovider":180,"./cognitosync":181,"./configservice":182,"./cur":183,"./devicefarm":184,"./directconnect":185,"./dynamodb":186,"./dynamodbstreams":187,"./ec2":188,"./ecr":189,"./ecs":190,"./efs":191,"./elasticache":192,"./elasticbeanstalk":193,"./elastictranscoder":194,"./elb":195,"./elbv2":196,"./emr":197,"./firehose":198,"./gamelift":199,"./inspector":200,"./iot":201,"./iotdata":202,"./kinesis":203,"./kms":204,"./lambda":205,"./lexmodelbuildingservice":206,"./lexruntime":207,"./machinelearning":208,"./marketplacecommerceanalytics":209,"./mobileanalytics":210,"./mturk":211,"./opsworks":212,"./polly":213,"./rds":214,"./redshift":215,"./rekognition":216,"./route53":217,"./route53domains":218,"./s3":219,"./servicecatalog":220,"./ses":221,"./sns":222,"./sqs":223,"./ssm":224,"./storagegateway":225,"./sts":226,"./waf":227,"./workdocs":228}],169:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['cloudformation'] = {};
AWS.CloudFormation = Service.defineService('cloudformation', ['2010-05-15']);
Object.defineProperty(apiLoader.services['cloudformation'], '2010-05-15', {
  get: function get() {
    var model = require('../apis/cloudformation-2010-05-15.min.json');
    model.paginators = require('../apis/cloudformation-2010-05-15.paginators.json').pagination;
    model.waiters = require('../apis/cloudformation-2010-05-15.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.CloudFormation;

},{"../apis/cloudformation-2010-05-15.min.json":9,"../apis/cloudformation-2010-05-15.paginators.json":10,"../apis/cloudformation-2010-05-15.waiters2.json":11,"../lib/core":239,"../lib/node_loader":236}],170:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['cloudfront'] = {};
AWS.CloudFront = Service.defineService('cloudfront', ['2013-05-12*', '2013-11-11*', '2014-05-31*', '2014-10-21*', '2014-11-06*', '2015-04-17*', '2015-07-27*', '2015-09-17*', '2016-01-13*', '2016-01-28*', '2016-08-01*', '2016-08-20*', '2016-09-07*', '2016-09-29*', '2016-11-25', '2016-11-25*', '2017-03-25']);
require('../lib/services/cloudfront');
Object.defineProperty(apiLoader.services['cloudfront'], '2016-11-25', {
  get: function get() {
    var model = require('../apis/cloudfront-2016-11-25.min.json');
    model.paginators = require('../apis/cloudfront-2016-11-25.paginators.json').pagination;
    model.waiters = require('../apis/cloudfront-2016-11-25.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});
Object.defineProperty(apiLoader.services['cloudfront'], '2017-03-25', {
  get: function get() {
    var model = require('../apis/cloudfront-2017-03-25.min.json');
    model.paginators = require('../apis/cloudfront-2017-03-25.paginators.json').pagination;
    model.waiters = require('../apis/cloudfront-2017-03-25.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.CloudFront;

},{"../apis/cloudfront-2016-11-25.min.json":12,"../apis/cloudfront-2016-11-25.paginators.json":13,"../apis/cloudfront-2016-11-25.waiters2.json":14,"../apis/cloudfront-2017-03-25.min.json":15,"../apis/cloudfront-2017-03-25.paginators.json":16,"../apis/cloudfront-2017-03-25.waiters2.json":17,"../lib/core":239,"../lib/node_loader":236,"../lib/services/cloudfront":281}],171:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['cloudhsm'] = {};
AWS.CloudHSM = Service.defineService('cloudhsm', ['2014-05-30']);
Object.defineProperty(apiLoader.services['cloudhsm'], '2014-05-30', {
  get: function get() {
    var model = require('../apis/cloudhsm-2014-05-30.min.json');
    model.paginators = require('../apis/cloudhsm-2014-05-30.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.CloudHSM;

},{"../apis/cloudhsm-2014-05-30.min.json":18,"../apis/cloudhsm-2014-05-30.paginators.json":19,"../lib/core":239,"../lib/node_loader":236}],172:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['cloudtrail'] = {};
AWS.CloudTrail = Service.defineService('cloudtrail', ['2013-11-01']);
Object.defineProperty(apiLoader.services['cloudtrail'], '2013-11-01', {
  get: function get() {
    var model = require('../apis/cloudtrail-2013-11-01.min.json');
    model.paginators = require('../apis/cloudtrail-2013-11-01.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.CloudTrail;

},{"../apis/cloudtrail-2013-11-01.min.json":20,"../apis/cloudtrail-2013-11-01.paginators.json":21,"../lib/core":239,"../lib/node_loader":236}],173:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['cloudwatch'] = {};
AWS.CloudWatch = Service.defineService('cloudwatch', ['2010-08-01']);
Object.defineProperty(apiLoader.services['cloudwatch'], '2010-08-01', {
  get: function get() {
    var model = require('../apis/monitoring-2010-08-01.min.json');
    model.paginators = require('../apis/monitoring-2010-08-01.paginators.json').pagination;
    model.waiters = require('../apis/monitoring-2010-08-01.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.CloudWatch;

},{"../apis/monitoring-2010-08-01.min.json":109,"../apis/monitoring-2010-08-01.paginators.json":110,"../apis/monitoring-2010-08-01.waiters2.json":111,"../lib/core":239,"../lib/node_loader":236}],174:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['cloudwatchevents'] = {};
AWS.CloudWatchEvents = Service.defineService('cloudwatchevents', ['2014-02-03*', '2015-10-07']);
Object.defineProperty(apiLoader.services['cloudwatchevents'], '2015-10-07', {
  get: function get() {
    var model = require('../apis/events-2015-10-07.min.json');
    model.paginators = require('../apis/events-2015-10-07.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.CloudWatchEvents;

},{"../apis/events-2015-10-07.min.json":78,"../apis/events-2015-10-07.paginators.json":79,"../lib/core":239,"../lib/node_loader":236}],175:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['cloudwatchlogs'] = {};
AWS.CloudWatchLogs = Service.defineService('cloudwatchlogs', ['2014-03-28']);
Object.defineProperty(apiLoader.services['cloudwatchlogs'], '2014-03-28', {
  get: function get() {
    var model = require('../apis/logs-2014-03-28.min.json');
    model.paginators = require('../apis/logs-2014-03-28.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.CloudWatchLogs;

},{"../apis/logs-2014-03-28.min.json":100,"../apis/logs-2014-03-28.paginators.json":101,"../lib/core":239,"../lib/node_loader":236}],176:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['codecommit'] = {};
AWS.CodeCommit = Service.defineService('codecommit', ['2015-04-13']);
Object.defineProperty(apiLoader.services['codecommit'], '2015-04-13', {
  get: function get() {
    var model = require('../apis/codecommit-2015-04-13.min.json');
    model.paginators = require('../apis/codecommit-2015-04-13.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.CodeCommit;

},{"../apis/codecommit-2015-04-13.min.json":22,"../apis/codecommit-2015-04-13.paginators.json":23,"../lib/core":239,"../lib/node_loader":236}],177:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['codedeploy'] = {};
AWS.CodeDeploy = Service.defineService('codedeploy', ['2014-10-06']);
Object.defineProperty(apiLoader.services['codedeploy'], '2014-10-06', {
  get: function get() {
    var model = require('../apis/codedeploy-2014-10-06.min.json');
    model.paginators = require('../apis/codedeploy-2014-10-06.paginators.json').pagination;
    model.waiters = require('../apis/codedeploy-2014-10-06.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.CodeDeploy;

},{"../apis/codedeploy-2014-10-06.min.json":24,"../apis/codedeploy-2014-10-06.paginators.json":25,"../apis/codedeploy-2014-10-06.waiters2.json":26,"../lib/core":239,"../lib/node_loader":236}],178:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['codepipeline'] = {};
AWS.CodePipeline = Service.defineService('codepipeline', ['2015-07-09']);
Object.defineProperty(apiLoader.services['codepipeline'], '2015-07-09', {
  get: function get() {
    var model = require('../apis/codepipeline-2015-07-09.min.json');
    model.paginators = require('../apis/codepipeline-2015-07-09.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.CodePipeline;

},{"../apis/codepipeline-2015-07-09.min.json":27,"../apis/codepipeline-2015-07-09.paginators.json":28,"../lib/core":239,"../lib/node_loader":236}],179:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['cognitoidentity'] = {};
AWS.CognitoIdentity = Service.defineService('cognitoidentity', ['2014-06-30']);
require('../lib/services/cognitoidentity');
Object.defineProperty(apiLoader.services['cognitoidentity'], '2014-06-30', {
  get: function get() {
    var model = require('../apis/cognito-identity-2014-06-30.min.json');
    model.paginators = require('../apis/cognito-identity-2014-06-30.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.CognitoIdentity;

},{"../apis/cognito-identity-2014-06-30.min.json":29,"../apis/cognito-identity-2014-06-30.paginators.json":30,"../lib/core":239,"../lib/node_loader":236,"../lib/services/cognitoidentity":282}],180:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['cognitoidentityserviceprovider'] = {};
AWS.CognitoIdentityServiceProvider = Service.defineService('cognitoidentityserviceprovider', ['2016-04-18']);
Object.defineProperty(apiLoader.services['cognitoidentityserviceprovider'], '2016-04-18', {
  get: function get() {
    var model = require('../apis/cognito-idp-2016-04-18.min.json');
    model.paginators = require('../apis/cognito-idp-2016-04-18.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.CognitoIdentityServiceProvider;

},{"../apis/cognito-idp-2016-04-18.min.json":31,"../apis/cognito-idp-2016-04-18.paginators.json":32,"../lib/core":239,"../lib/node_loader":236}],181:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['cognitosync'] = {};
AWS.CognitoSync = Service.defineService('cognitosync', ['2014-06-30']);
Object.defineProperty(apiLoader.services['cognitosync'], '2014-06-30', {
  get: function get() {
    var model = require('../apis/cognito-sync-2014-06-30.min.json');
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.CognitoSync;

},{"../apis/cognito-sync-2014-06-30.min.json":33,"../lib/core":239,"../lib/node_loader":236}],182:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['configservice'] = {};
AWS.ConfigService = Service.defineService('configservice', ['2014-11-12']);
Object.defineProperty(apiLoader.services['configservice'], '2014-11-12', {
  get: function get() {
    var model = require('../apis/config-2014-11-12.min.json');
    model.paginators = require('../apis/config-2014-11-12.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.ConfigService;

},{"../apis/config-2014-11-12.min.json":34,"../apis/config-2014-11-12.paginators.json":35,"../lib/core":239,"../lib/node_loader":236}],183:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['cur'] = {};
AWS.CUR = Service.defineService('cur', ['2017-01-06']);
Object.defineProperty(apiLoader.services['cur'], '2017-01-06', {
  get: function get() {
    var model = require('../apis/cur-2017-01-06.min.json');
    model.paginators = require('../apis/cur-2017-01-06.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.CUR;

},{"../apis/cur-2017-01-06.min.json":36,"../apis/cur-2017-01-06.paginators.json":37,"../lib/core":239,"../lib/node_loader":236}],184:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['devicefarm'] = {};
AWS.DeviceFarm = Service.defineService('devicefarm', ['2015-06-23']);
Object.defineProperty(apiLoader.services['devicefarm'], '2015-06-23', {
  get: function get() {
    var model = require('../apis/devicefarm-2015-06-23.min.json');
    model.paginators = require('../apis/devicefarm-2015-06-23.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.DeviceFarm;

},{"../apis/devicefarm-2015-06-23.min.json":38,"../apis/devicefarm-2015-06-23.paginators.json":39,"../lib/core":239,"../lib/node_loader":236}],185:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['directconnect'] = {};
AWS.DirectConnect = Service.defineService('directconnect', ['2012-10-25']);
Object.defineProperty(apiLoader.services['directconnect'], '2012-10-25', {
  get: function get() {
    var model = require('../apis/directconnect-2012-10-25.min.json');
    model.paginators = require('../apis/directconnect-2012-10-25.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.DirectConnect;

},{"../apis/directconnect-2012-10-25.min.json":40,"../apis/directconnect-2012-10-25.paginators.json":41,"../lib/core":239,"../lib/node_loader":236}],186:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['dynamodb'] = {};
AWS.DynamoDB = Service.defineService('dynamodb', ['2011-12-05', '2012-08-10']);
require('../lib/services/dynamodb');
Object.defineProperty(apiLoader.services['dynamodb'], '2011-12-05', {
  get: function get() {
    var model = require('../apis/dynamodb-2011-12-05.min.json');
    model.paginators = require('../apis/dynamodb-2011-12-05.paginators.json').pagination;
    model.waiters = require('../apis/dynamodb-2011-12-05.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});
Object.defineProperty(apiLoader.services['dynamodb'], '2012-08-10', {
  get: function get() {
    var model = require('../apis/dynamodb-2012-08-10.min.json');
    model.paginators = require('../apis/dynamodb-2012-08-10.paginators.json').pagination;
    model.waiters = require('../apis/dynamodb-2012-08-10.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.DynamoDB;

},{"../apis/dynamodb-2011-12-05.min.json":42,"../apis/dynamodb-2011-12-05.paginators.json":43,"../apis/dynamodb-2011-12-05.waiters2.json":44,"../apis/dynamodb-2012-08-10.min.json":45,"../apis/dynamodb-2012-08-10.paginators.json":46,"../apis/dynamodb-2012-08-10.waiters2.json":47,"../lib/core":239,"../lib/node_loader":236,"../lib/services/dynamodb":283}],187:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['dynamodbstreams'] = {};
AWS.DynamoDBStreams = Service.defineService('dynamodbstreams', ['2012-08-10']);
Object.defineProperty(apiLoader.services['dynamodbstreams'], '2012-08-10', {
  get: function get() {
    var model = require('../apis/streams.dynamodb-2012-08-10.min.json');
    model.paginators = require('../apis/streams.dynamodb-2012-08-10.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.DynamoDBStreams;

},{"../apis/streams.dynamodb-2012-08-10.min.json":156,"../apis/streams.dynamodb-2012-08-10.paginators.json":157,"../lib/core":239,"../lib/node_loader":236}],188:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['ec2'] = {};
AWS.EC2 = Service.defineService('ec2', ['2013-06-15*', '2013-10-15*', '2014-02-01*', '2014-05-01*', '2014-06-15*', '2014-09-01*', '2014-10-01*', '2015-03-01*', '2015-04-15*', '2015-10-01*', '2016-04-01*', '2016-09-15*', '2016-11-15']);
require('../lib/services/ec2');
Object.defineProperty(apiLoader.services['ec2'], '2016-11-15', {
  get: function get() {
    var model = require('../apis/ec2-2016-11-15.min.json');
    model.paginators = require('../apis/ec2-2016-11-15.paginators.json').pagination;
    model.waiters = require('../apis/ec2-2016-11-15.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.EC2;

},{"../apis/ec2-2016-11-15.min.json":48,"../apis/ec2-2016-11-15.paginators.json":49,"../apis/ec2-2016-11-15.waiters2.json":50,"../lib/core":239,"../lib/node_loader":236,"../lib/services/ec2":284}],189:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['ecr'] = {};
AWS.ECR = Service.defineService('ecr', ['2015-09-21']);
Object.defineProperty(apiLoader.services['ecr'], '2015-09-21', {
  get: function get() {
    var model = require('../apis/ecr-2015-09-21.min.json');
    model.paginators = require('../apis/ecr-2015-09-21.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.ECR;

},{"../apis/ecr-2015-09-21.min.json":51,"../apis/ecr-2015-09-21.paginators.json":52,"../lib/core":239,"../lib/node_loader":236}],190:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['ecs'] = {};
AWS.ECS = Service.defineService('ecs', ['2014-11-13']);
Object.defineProperty(apiLoader.services['ecs'], '2014-11-13', {
  get: function get() {
    var model = require('../apis/ecs-2014-11-13.min.json');
    model.paginators = require('../apis/ecs-2014-11-13.paginators.json').pagination;
    model.waiters = require('../apis/ecs-2014-11-13.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.ECS;

},{"../apis/ecs-2014-11-13.min.json":53,"../apis/ecs-2014-11-13.paginators.json":54,"../apis/ecs-2014-11-13.waiters2.json":55,"../lib/core":239,"../lib/node_loader":236}],191:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['efs'] = {};
AWS.EFS = Service.defineService('efs', ['2015-02-01']);
Object.defineProperty(apiLoader.services['efs'], '2015-02-01', {
  get: function get() {
    var model = require('../apis/elasticfilesystem-2015-02-01.min.json');
    model.paginators = require('../apis/elasticfilesystem-2015-02-01.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.EFS;

},{"../apis/elasticfilesystem-2015-02-01.min.json":61,"../apis/elasticfilesystem-2015-02-01.paginators.json":62,"../lib/core":239,"../lib/node_loader":236}],192:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['elasticache'] = {};
AWS.ElastiCache = Service.defineService('elasticache', ['2012-11-15*', '2014-03-24*', '2014-07-15*', '2014-09-30*', '2015-02-02']);
Object.defineProperty(apiLoader.services['elasticache'], '2015-02-02', {
  get: function get() {
    var model = require('../apis/elasticache-2015-02-02.min.json');
    model.paginators = require('../apis/elasticache-2015-02-02.paginators.json').pagination;
    model.waiters = require('../apis/elasticache-2015-02-02.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.ElastiCache;

},{"../apis/elasticache-2015-02-02.min.json":56,"../apis/elasticache-2015-02-02.paginators.json":57,"../apis/elasticache-2015-02-02.waiters2.json":58,"../lib/core":239,"../lib/node_loader":236}],193:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['elasticbeanstalk'] = {};
AWS.ElasticBeanstalk = Service.defineService('elasticbeanstalk', ['2010-12-01']);
Object.defineProperty(apiLoader.services['elasticbeanstalk'], '2010-12-01', {
  get: function get() {
    var model = require('../apis/elasticbeanstalk-2010-12-01.min.json');
    model.paginators = require('../apis/elasticbeanstalk-2010-12-01.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.ElasticBeanstalk;

},{"../apis/elasticbeanstalk-2010-12-01.min.json":59,"../apis/elasticbeanstalk-2010-12-01.paginators.json":60,"../lib/core":239,"../lib/node_loader":236}],194:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['elastictranscoder'] = {};
AWS.ElasticTranscoder = Service.defineService('elastictranscoder', ['2012-09-25']);
Object.defineProperty(apiLoader.services['elastictranscoder'], '2012-09-25', {
  get: function get() {
    var model = require('../apis/elastictranscoder-2012-09-25.min.json');
    model.paginators = require('../apis/elastictranscoder-2012-09-25.paginators.json').pagination;
    model.waiters = require('../apis/elastictranscoder-2012-09-25.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.ElasticTranscoder;

},{"../apis/elastictranscoder-2012-09-25.min.json":72,"../apis/elastictranscoder-2012-09-25.paginators.json":73,"../apis/elastictranscoder-2012-09-25.waiters2.json":74,"../lib/core":239,"../lib/node_loader":236}],195:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['elb'] = {};
AWS.ELB = Service.defineService('elb', ['2012-06-01']);
Object.defineProperty(apiLoader.services['elb'], '2012-06-01', {
  get: function get() {
    var model = require('../apis/elasticloadbalancing-2012-06-01.min.json');
    model.paginators = require('../apis/elasticloadbalancing-2012-06-01.paginators.json').pagination;
    model.waiters = require('../apis/elasticloadbalancing-2012-06-01.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.ELB;

},{"../apis/elasticloadbalancing-2012-06-01.min.json":63,"../apis/elasticloadbalancing-2012-06-01.paginators.json":64,"../apis/elasticloadbalancing-2012-06-01.waiters2.json":65,"../lib/core":239,"../lib/node_loader":236}],196:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['elbv2'] = {};
AWS.ELBv2 = Service.defineService('elbv2', ['2015-12-01']);
Object.defineProperty(apiLoader.services['elbv2'], '2015-12-01', {
  get: function get() {
    var model = require('../apis/elasticloadbalancingv2-2015-12-01.min.json');
    model.paginators = require('../apis/elasticloadbalancingv2-2015-12-01.paginators.json').pagination;
    model.waiters = require('../apis/elasticloadbalancingv2-2015-12-01.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.ELBv2;

},{"../apis/elasticloadbalancingv2-2015-12-01.min.json":66,"../apis/elasticloadbalancingv2-2015-12-01.paginators.json":67,"../apis/elasticloadbalancingv2-2015-12-01.waiters2.json":68,"../lib/core":239,"../lib/node_loader":236}],197:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['emr'] = {};
AWS.EMR = Service.defineService('emr', ['2009-03-31']);
Object.defineProperty(apiLoader.services['emr'], '2009-03-31', {
  get: function get() {
    var model = require('../apis/elasticmapreduce-2009-03-31.min.json');
    model.paginators = require('../apis/elasticmapreduce-2009-03-31.paginators.json').pagination;
    model.waiters = require('../apis/elasticmapreduce-2009-03-31.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.EMR;

},{"../apis/elasticmapreduce-2009-03-31.min.json":69,"../apis/elasticmapreduce-2009-03-31.paginators.json":70,"../apis/elasticmapreduce-2009-03-31.waiters2.json":71,"../lib/core":239,"../lib/node_loader":236}],198:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['firehose'] = {};
AWS.Firehose = Service.defineService('firehose', ['2015-08-04']);
Object.defineProperty(apiLoader.services['firehose'], '2015-08-04', {
  get: function get() {
    var model = require('../apis/firehose-2015-08-04.min.json');
    model.paginators = require('../apis/firehose-2015-08-04.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.Firehose;

},{"../apis/firehose-2015-08-04.min.json":80,"../apis/firehose-2015-08-04.paginators.json":81,"../lib/core":239,"../lib/node_loader":236}],199:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['gamelift'] = {};
AWS.GameLift = Service.defineService('gamelift', ['2015-10-01']);
Object.defineProperty(apiLoader.services['gamelift'], '2015-10-01', {
  get: function get() {
    var model = require('../apis/gamelift-2015-10-01.min.json');
    model.paginators = require('../apis/gamelift-2015-10-01.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.GameLift;

},{"../apis/gamelift-2015-10-01.min.json":82,"../apis/gamelift-2015-10-01.paginators.json":83,"../lib/core":239,"../lib/node_loader":236}],200:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['inspector'] = {};
AWS.Inspector = Service.defineService('inspector', ['2015-08-18*', '2016-02-16']);
Object.defineProperty(apiLoader.services['inspector'], '2016-02-16', {
  get: function get() {
    var model = require('../apis/inspector-2016-02-16.min.json');
    model.paginators = require('../apis/inspector-2016-02-16.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.Inspector;

},{"../apis/inspector-2016-02-16.min.json":84,"../apis/inspector-2016-02-16.paginators.json":85,"../lib/core":239,"../lib/node_loader":236}],201:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['iot'] = {};
AWS.Iot = Service.defineService('iot', ['2015-05-28']);
Object.defineProperty(apiLoader.services['iot'], '2015-05-28', {
  get: function get() {
    var model = require('../apis/iot-2015-05-28.min.json');
    model.paginators = require('../apis/iot-2015-05-28.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.Iot;

},{"../apis/iot-2015-05-28.min.json":86,"../apis/iot-2015-05-28.paginators.json":87,"../lib/core":239,"../lib/node_loader":236}],202:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['iotdata'] = {};
AWS.IotData = Service.defineService('iotdata', ['2015-05-28']);
require('../lib/services/iotdata');
Object.defineProperty(apiLoader.services['iotdata'], '2015-05-28', {
  get: function get() {
    var model = require('../apis/iot-data-2015-05-28.min.json');
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.IotData;

},{"../apis/iot-data-2015-05-28.min.json":88,"../lib/core":239,"../lib/node_loader":236,"../lib/services/iotdata":285}],203:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['kinesis'] = {};
AWS.Kinesis = Service.defineService('kinesis', ['2013-12-02']);
Object.defineProperty(apiLoader.services['kinesis'], '2013-12-02', {
  get: function get() {
    var model = require('../apis/kinesis-2013-12-02.min.json');
    model.paginators = require('../apis/kinesis-2013-12-02.paginators.json').pagination;
    model.waiters = require('../apis/kinesis-2013-12-02.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.Kinesis;

},{"../apis/kinesis-2013-12-02.min.json":89,"../apis/kinesis-2013-12-02.paginators.json":90,"../apis/kinesis-2013-12-02.waiters2.json":91,"../lib/core":239,"../lib/node_loader":236}],204:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['kms'] = {};
AWS.KMS = Service.defineService('kms', ['2014-11-01']);
Object.defineProperty(apiLoader.services['kms'], '2014-11-01', {
  get: function get() {
    var model = require('../apis/kms-2014-11-01.min.json');
    model.paginators = require('../apis/kms-2014-11-01.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.KMS;

},{"../apis/kms-2014-11-01.min.json":92,"../apis/kms-2014-11-01.paginators.json":93,"../lib/core":239,"../lib/node_loader":236}],205:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['lambda'] = {};
AWS.Lambda = Service.defineService('lambda', ['2014-11-11', '2015-03-31']);
require('../lib/services/lambda');
Object.defineProperty(apiLoader.services['lambda'], '2014-11-11', {
  get: function get() {
    var model = require('../apis/lambda-2014-11-11.min.json');
    model.paginators = require('../apis/lambda-2014-11-11.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});
Object.defineProperty(apiLoader.services['lambda'], '2015-03-31', {
  get: function get() {
    var model = require('../apis/lambda-2015-03-31.min.json');
    model.paginators = require('../apis/lambda-2015-03-31.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.Lambda;

},{"../apis/lambda-2014-11-11.min.json":94,"../apis/lambda-2014-11-11.paginators.json":95,"../apis/lambda-2015-03-31.min.json":96,"../apis/lambda-2015-03-31.paginators.json":97,"../lib/core":239,"../lib/node_loader":236,"../lib/services/lambda":286}],206:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['lexmodelbuildingservice'] = {};
AWS.LexModelBuildingService = Service.defineService('lexmodelbuildingservice', ['2017-04-19']);
Object.defineProperty(apiLoader.services['lexmodelbuildingservice'], '2017-04-19', {
  get: function get() {
    var model = require('../apis/lex-models-2017-04-19.min.json');
    model.paginators = require('../apis/lex-models-2017-04-19.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.LexModelBuildingService;

},{"../apis/lex-models-2017-04-19.min.json":98,"../apis/lex-models-2017-04-19.paginators.json":99,"../lib/core":239,"../lib/node_loader":236}],207:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['lexruntime'] = {};
AWS.LexRuntime = Service.defineService('lexruntime', ['2016-11-28']);
Object.defineProperty(apiLoader.services['lexruntime'], '2016-11-28', {
  get: function get() {
    var model = require('../apis/runtime.lex-2016-11-28.min.json');
    model.paginators = require('../apis/runtime.lex-2016-11-28.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.LexRuntime;

},{"../apis/runtime.lex-2016-11-28.min.json":141,"../apis/runtime.lex-2016-11-28.paginators.json":142,"../lib/core":239,"../lib/node_loader":236}],208:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['machinelearning'] = {};
AWS.MachineLearning = Service.defineService('machinelearning', ['2014-12-12']);
require('../lib/services/machinelearning');
Object.defineProperty(apiLoader.services['machinelearning'], '2014-12-12', {
  get: function get() {
    var model = require('../apis/machinelearning-2014-12-12.min.json');
    model.paginators = require('../apis/machinelearning-2014-12-12.paginators.json').pagination;
    model.waiters = require('../apis/machinelearning-2014-12-12.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.MachineLearning;

},{"../apis/machinelearning-2014-12-12.min.json":102,"../apis/machinelearning-2014-12-12.paginators.json":103,"../apis/machinelearning-2014-12-12.waiters2.json":104,"../lib/core":239,"../lib/node_loader":236,"../lib/services/machinelearning":287}],209:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['marketplacecommerceanalytics'] = {};
AWS.MarketplaceCommerceAnalytics = Service.defineService('marketplacecommerceanalytics', ['2015-07-01']);
Object.defineProperty(apiLoader.services['marketplacecommerceanalytics'], '2015-07-01', {
  get: function get() {
    var model = require('../apis/marketplacecommerceanalytics-2015-07-01.min.json');
    model.paginators = require('../apis/marketplacecommerceanalytics-2015-07-01.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.MarketplaceCommerceAnalytics;

},{"../apis/marketplacecommerceanalytics-2015-07-01.min.json":105,"../apis/marketplacecommerceanalytics-2015-07-01.paginators.json":106,"../lib/core":239,"../lib/node_loader":236}],210:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['mobileanalytics'] = {};
AWS.MobileAnalytics = Service.defineService('mobileanalytics', ['2014-06-05']);
Object.defineProperty(apiLoader.services['mobileanalytics'], '2014-06-05', {
  get: function get() {
    var model = require('../apis/mobileanalytics-2014-06-05.min.json');
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.MobileAnalytics;

},{"../apis/mobileanalytics-2014-06-05.min.json":108,"../lib/core":239,"../lib/node_loader":236}],211:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['mturk'] = {};
AWS.MTurk = Service.defineService('mturk', ['2017-01-17']);
Object.defineProperty(apiLoader.services['mturk'], '2017-01-17', {
  get: function get() {
    var model = require('../apis/mturk-requester-2017-01-17.min.json');
    model.paginators = require('../apis/mturk-requester-2017-01-17.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.MTurk;

},{"../apis/mturk-requester-2017-01-17.min.json":112,"../apis/mturk-requester-2017-01-17.paginators.json":113,"../lib/core":239,"../lib/node_loader":236}],212:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['opsworks'] = {};
AWS.OpsWorks = Service.defineService('opsworks', ['2013-02-18']);
Object.defineProperty(apiLoader.services['opsworks'], '2013-02-18', {
  get: function get() {
    var model = require('../apis/opsworks-2013-02-18.min.json');
    model.paginators = require('../apis/opsworks-2013-02-18.paginators.json').pagination;
    model.waiters = require('../apis/opsworks-2013-02-18.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.OpsWorks;

},{"../apis/opsworks-2013-02-18.min.json":114,"../apis/opsworks-2013-02-18.paginators.json":115,"../apis/opsworks-2013-02-18.waiters2.json":116,"../lib/core":239,"../lib/node_loader":236}],213:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['polly'] = {};
AWS.Polly = Service.defineService('polly', ['2016-06-10']);
require('../lib/services/polly');
Object.defineProperty(apiLoader.services['polly'], '2016-06-10', {
  get: function get() {
    var model = require('../apis/polly-2016-06-10.min.json');
    model.paginators = require('../apis/polly-2016-06-10.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.Polly;

},{"../apis/polly-2016-06-10.min.json":117,"../apis/polly-2016-06-10.paginators.json":118,"../lib/core":239,"../lib/node_loader":236,"../lib/services/polly":288}],214:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['rds'] = {};
AWS.RDS = Service.defineService('rds', ['2013-01-10', '2013-02-12', '2013-09-09', '2014-09-01', '2014-09-01*', '2014-10-31']);
require('../lib/services/rds');
Object.defineProperty(apiLoader.services['rds'], '2013-01-10', {
  get: function get() {
    var model = require('../apis/rds-2013-01-10.min.json');
    model.paginators = require('../apis/rds-2013-01-10.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});
Object.defineProperty(apiLoader.services['rds'], '2013-02-12', {
  get: function get() {
    var model = require('../apis/rds-2013-02-12.min.json');
    model.paginators = require('../apis/rds-2013-02-12.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});
Object.defineProperty(apiLoader.services['rds'], '2013-09-09', {
  get: function get() {
    var model = require('../apis/rds-2013-09-09.min.json');
    model.paginators = require('../apis/rds-2013-09-09.paginators.json').pagination;
    model.waiters = require('../apis/rds-2013-09-09.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});
Object.defineProperty(apiLoader.services['rds'], '2014-09-01', {
  get: function get() {
    var model = require('../apis/rds-2014-09-01.min.json');
    model.paginators = require('../apis/rds-2014-09-01.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});
Object.defineProperty(apiLoader.services['rds'], '2014-10-31', {
  get: function get() {
    var model = require('../apis/rds-2014-10-31.min.json');
    model.paginators = require('../apis/rds-2014-10-31.paginators.json').pagination;
    model.waiters = require('../apis/rds-2014-10-31.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.RDS;

},{"../apis/rds-2013-01-10.min.json":119,"../apis/rds-2013-01-10.paginators.json":120,"../apis/rds-2013-02-12.min.json":121,"../apis/rds-2013-02-12.paginators.json":122,"../apis/rds-2013-09-09.min.json":123,"../apis/rds-2013-09-09.paginators.json":124,"../apis/rds-2013-09-09.waiters2.json":125,"../apis/rds-2014-09-01.min.json":126,"../apis/rds-2014-09-01.paginators.json":127,"../apis/rds-2014-10-31.min.json":128,"../apis/rds-2014-10-31.paginators.json":129,"../apis/rds-2014-10-31.waiters2.json":130,"../lib/core":239,"../lib/node_loader":236,"../lib/services/rds":289}],215:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['redshift'] = {};
AWS.Redshift = Service.defineService('redshift', ['2012-12-01']);
Object.defineProperty(apiLoader.services['redshift'], '2012-12-01', {
  get: function get() {
    var model = require('../apis/redshift-2012-12-01.min.json');
    model.paginators = require('../apis/redshift-2012-12-01.paginators.json').pagination;
    model.waiters = require('../apis/redshift-2012-12-01.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.Redshift;

},{"../apis/redshift-2012-12-01.min.json":131,"../apis/redshift-2012-12-01.paginators.json":132,"../apis/redshift-2012-12-01.waiters2.json":133,"../lib/core":239,"../lib/node_loader":236}],216:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['rekognition'] = {};
AWS.Rekognition = Service.defineService('rekognition', ['2016-06-27']);
Object.defineProperty(apiLoader.services['rekognition'], '2016-06-27', {
  get: function get() {
    var model = require('../apis/rekognition-2016-06-27.min.json');
    model.paginators = require('../apis/rekognition-2016-06-27.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.Rekognition;

},{"../apis/rekognition-2016-06-27.min.json":134,"../apis/rekognition-2016-06-27.paginators.json":135,"../lib/core":239,"../lib/node_loader":236}],217:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['route53'] = {};
AWS.Route53 = Service.defineService('route53', ['2013-04-01']);
require('../lib/services/route53');
Object.defineProperty(apiLoader.services['route53'], '2013-04-01', {
  get: function get() {
    var model = require('../apis/route53-2013-04-01.min.json');
    model.paginators = require('../apis/route53-2013-04-01.paginators.json').pagination;
    model.waiters = require('../apis/route53-2013-04-01.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.Route53;

},{"../apis/route53-2013-04-01.min.json":136,"../apis/route53-2013-04-01.paginators.json":137,"../apis/route53-2013-04-01.waiters2.json":138,"../lib/core":239,"../lib/node_loader":236,"../lib/services/route53":290}],218:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['route53domains'] = {};
AWS.Route53Domains = Service.defineService('route53domains', ['2014-05-15']);
Object.defineProperty(apiLoader.services['route53domains'], '2014-05-15', {
  get: function get() {
    var model = require('../apis/route53domains-2014-05-15.min.json');
    model.paginators = require('../apis/route53domains-2014-05-15.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.Route53Domains;

},{"../apis/route53domains-2014-05-15.min.json":139,"../apis/route53domains-2014-05-15.paginators.json":140,"../lib/core":239,"../lib/node_loader":236}],219:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['s3'] = {};
AWS.S3 = Service.defineService('s3', ['2006-03-01']);
require('../lib/services/s3');
Object.defineProperty(apiLoader.services['s3'], '2006-03-01', {
  get: function get() {
    var model = require('../apis/s3-2006-03-01.min.json');
    model.paginators = require('../apis/s3-2006-03-01.paginators.json').pagination;
    model.waiters = require('../apis/s3-2006-03-01.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.S3;

},{"../apis/s3-2006-03-01.min.json":143,"../apis/s3-2006-03-01.paginators.json":144,"../apis/s3-2006-03-01.waiters2.json":145,"../lib/core":239,"../lib/node_loader":236,"../lib/services/s3":291}],220:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['servicecatalog'] = {};
AWS.ServiceCatalog = Service.defineService('servicecatalog', ['2015-12-10']);
Object.defineProperty(apiLoader.services['servicecatalog'], '2015-12-10', {
  get: function get() {
    var model = require('../apis/servicecatalog-2015-12-10.min.json');
    model.paginators = require('../apis/servicecatalog-2015-12-10.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.ServiceCatalog;

},{"../apis/servicecatalog-2015-12-10.min.json":146,"../apis/servicecatalog-2015-12-10.paginators.json":147,"../lib/core":239,"../lib/node_loader":236}],221:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['ses'] = {};
AWS.SES = Service.defineService('ses', ['2010-12-01']);
Object.defineProperty(apiLoader.services['ses'], '2010-12-01', {
  get: function get() {
    var model = require('../apis/email-2010-12-01.min.json');
    model.paginators = require('../apis/email-2010-12-01.paginators.json').pagination;
    model.waiters = require('../apis/email-2010-12-01.waiters2.json').waiters;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.SES;

},{"../apis/email-2010-12-01.min.json":75,"../apis/email-2010-12-01.paginators.json":76,"../apis/email-2010-12-01.waiters2.json":77,"../lib/core":239,"../lib/node_loader":236}],222:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['sns'] = {};
AWS.SNS = Service.defineService('sns', ['2010-03-31']);
Object.defineProperty(apiLoader.services['sns'], '2010-03-31', {
  get: function get() {
    var model = require('../apis/sns-2010-03-31.min.json');
    model.paginators = require('../apis/sns-2010-03-31.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.SNS;

},{"../apis/sns-2010-03-31.min.json":148,"../apis/sns-2010-03-31.paginators.json":149,"../lib/core":239,"../lib/node_loader":236}],223:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['sqs'] = {};
AWS.SQS = Service.defineService('sqs', ['2012-11-05']);
require('../lib/services/sqs');
Object.defineProperty(apiLoader.services['sqs'], '2012-11-05', {
  get: function get() {
    var model = require('../apis/sqs-2012-11-05.min.json');
    model.paginators = require('../apis/sqs-2012-11-05.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.SQS;

},{"../apis/sqs-2012-11-05.min.json":150,"../apis/sqs-2012-11-05.paginators.json":151,"../lib/core":239,"../lib/node_loader":236,"../lib/services/sqs":292}],224:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['ssm'] = {};
AWS.SSM = Service.defineService('ssm', ['2014-11-06']);
Object.defineProperty(apiLoader.services['ssm'], '2014-11-06', {
  get: function get() {
    var model = require('../apis/ssm-2014-11-06.min.json');
    model.paginators = require('../apis/ssm-2014-11-06.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.SSM;

},{"../apis/ssm-2014-11-06.min.json":152,"../apis/ssm-2014-11-06.paginators.json":153,"../lib/core":239,"../lib/node_loader":236}],225:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['storagegateway'] = {};
AWS.StorageGateway = Service.defineService('storagegateway', ['2013-06-30']);
Object.defineProperty(apiLoader.services['storagegateway'], '2013-06-30', {
  get: function get() {
    var model = require('../apis/storagegateway-2013-06-30.min.json');
    model.paginators = require('../apis/storagegateway-2013-06-30.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.StorageGateway;

},{"../apis/storagegateway-2013-06-30.min.json":154,"../apis/storagegateway-2013-06-30.paginators.json":155,"../lib/core":239,"../lib/node_loader":236}],226:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['sts'] = {};
AWS.STS = Service.defineService('sts', ['2011-06-15']);
require('../lib/services/sts');
Object.defineProperty(apiLoader.services['sts'], '2011-06-15', {
  get: function get() {
    var model = require('../apis/sts-2011-06-15.min.json');
    model.paginators = require('../apis/sts-2011-06-15.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.STS;

},{"../apis/sts-2011-06-15.min.json":158,"../apis/sts-2011-06-15.paginators.json":159,"../lib/core":239,"../lib/node_loader":236,"../lib/services/sts":293}],227:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['waf'] = {};
AWS.WAF = Service.defineService('waf', ['2015-08-24']);
Object.defineProperty(apiLoader.services['waf'], '2015-08-24', {
  get: function get() {
    var model = require('../apis/waf-2015-08-24.min.json');
    model.paginators = require('../apis/waf-2015-08-24.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.WAF;

},{"../apis/waf-2015-08-24.min.json":160,"../apis/waf-2015-08-24.paginators.json":161,"../lib/core":239,"../lib/node_loader":236}],228:[function(require,module,exports){
require('../lib/node_loader');
var AWS = require('../lib/core');
var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['workdocs'] = {};
AWS.WorkDocs = Service.defineService('workdocs', ['2016-05-01']);
Object.defineProperty(apiLoader.services['workdocs'], '2016-05-01', {
  get: function get() {
    var model = require('../apis/workdocs-2016-05-01.min.json');
    model.paginators = require('../apis/workdocs-2016-05-01.paginators.json').pagination;
    return model;
  },
  enumerable: true,
  configurable: true
});

module.exports = AWS.WorkDocs;

},{"../apis/workdocs-2016-05-01.min.json":162,"../apis/workdocs-2016-05-01.paginators.json":163,"../lib/core":239,"../lib/node_loader":236}],229:[function(require,module,exports){
function apiLoader(svc, version) {
  if (!apiLoader.services.hasOwnProperty(svc)) {
    throw new Error('InvalidService: Failed to load api for ' + svc);
  }
  return apiLoader.services[svc][version];
}

/**
 * @api private
 *
 * This member of AWS.apiLoader is private, but changing it will necessitate a
 * change to ../scripts/services-table-generator.ts
 */
apiLoader.services = {};
module.exports = apiLoader;

},{}],230:[function(require,module,exports){
var Hmac = require('./browserHmac');
var Md5 = require('./browserMd5');
var Sha1 = require('./browserSha1');
var Sha256 = require('./browserSha256');

module.exports = exports = {
    createHash: function createHash(alg) {
      alg = alg.toLowerCase();
      if (alg === 'md5') {
        return new Md5();
      } else if (alg === 'sha256') {
        return new Sha256();
      } else if (alg === 'sha1') {
        return new Sha1();
      }

      throw new Error('Hash algorithm ' + alg + ' is not supported in the browser SDK');
    },
    createHmac: function createHmac(alg, key) {
      alg = alg.toLowerCase();
      if (alg === 'md5') {
        return new Hmac(Md5, key);
      } else if (alg === 'sha256') {
        return new Hmac(Sha256, key);
      } else if (alg === 'sha1') {
        return new Hmac(Sha1, key);
      }

      throw new Error('HMAC algorithm ' + alg + ' is not supported in the browser SDK');
    },
    createSign: function() {
      throw new Error('createSign is not implemented in the browser');
    }
  }

},{"./browserHmac":232,"./browserMd5":233,"./browserSha1":234,"./browserSha256":235}],231:[function(require,module,exports){
var Buffer = require('buffer/').Buffer;

/**
 * This is a polyfill for the static method `isView` of `ArrayBuffer`, which is
 * e.g. missing in IE 10.
 *
 * @api private
 */
if (
    typeof ArrayBuffer !== 'undefined' &&
    typeof ArrayBuffer.isView === 'undefined'
) {
    ArrayBuffer.isView = function(arg) {
        return viewStrings.indexOf(Object.prototype.toString.call(arg)) > -1;
    };
}

/**
 * @api private
 */
var viewStrings = [
    '[object Int8Array]',
    '[object Uint8Array]',
    '[object Uint8ClampedArray]',
    '[object Int16Array]',
    '[object Uint16Array]',
    '[object Int32Array]',
    '[object Uint32Array]',
    '[object Float32Array]',
    '[object Float64Array]',
    '[object DataView]',
];

/**
 * @api private
 */
function isEmptyData(data) {
    if (typeof data === 'string') {
        return data.length === 0;
    }
    return data.byteLength === 0;
}

/**
 * @api private
 */
function convertToBuffer(data) {
    if (typeof data === 'string') {
        data = new Buffer(data, 'utf8');
    }

    if (ArrayBuffer.isView(data)) {
        return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);
    }

    return new Uint8Array(data);
}

module.exports = exports = {
    isEmptyData: isEmptyData,
    convertToBuffer: convertToBuffer,
}

},{"buffer/":308}],232:[function(require,module,exports){
var hashUtils = require('./browserHashUtils');

/**
 * @api private
 */
function Hmac(hashCtor, secret) {
    this.hash = new hashCtor();
    this.outer = new hashCtor();

    var inner = bufferFromSecret(hashCtor, secret);
    var outer = new Uint8Array(hashCtor.BLOCK_SIZE);
    outer.set(inner);

    for (var i = 0; i < hashCtor.BLOCK_SIZE; i++) {
        inner[i] ^= 0x36;
        outer[i] ^= 0x5c;
    }

    this.hash.update(inner);
    this.outer.update(outer);

    // Zero out the copied key buffer.
    for (var i = 0; i < inner.byteLength; i++) {
        inner[i] = 0;
    }
}

module.exports = exports = Hmac;

Hmac.prototype.update = function (toHash) {
    if (hashUtils.isEmptyData(toHash) || this.error) {
        return this;
    }

    try {
        this.hash.update(hashUtils.convertToBuffer(toHash));
    } catch (e) {
        this.error = e;
    }

    return this;
};

Hmac.prototype.digest = function (encoding) {
    if (!this.outer.finished) {
        this.outer.update(this.hash.digest());
    }

    return this.outer.digest(encoding);
}

function bufferFromSecret(hashCtor, secret) {
    var input = hashUtils.convertToBuffer(secret);
    if (input.byteLength > hashCtor.BLOCK_SIZE) {
        var bufferHash = new hashCtor;
        bufferHash.update(input);
        input = bufferHash.digest();
    }
    var buffer = new Uint8Array(hashCtor.BLOCK_SIZE);
    buffer.set(input);
    return buffer;
}

},{"./browserHashUtils":231}],233:[function(require,module,exports){
var hashUtils = require('./browserHashUtils');
var Buffer = require('buffer/').Buffer;

var BLOCK_SIZE = 64;

var DIGEST_LENGTH = 16;

var INIT = [
    0x67452301,
    0xefcdab89,
    0x98badcfe,
    0x10325476,
];

/**
 * @api private
 */
function Md5() {
    this.state = [
        0x67452301,
        0xefcdab89,
        0x98badcfe,
        0x10325476,
    ];
    this.buffer = new DataView(new ArrayBuffer(BLOCK_SIZE));
    this.bufferLength = 0;
    this.bytesHashed = 0;
    this.finished = false;
}

module.exports = exports = Md5;

Md5.BLOCK_SIZE = BLOCK_SIZE;

Md5.prototype.update = function (sourceData) {
    if (hashUtils.isEmptyData(sourceData)) {
        return this;
    } else if (this.finished) {
        throw new Error('Attempted to update an already finished hash.');
    }

    var data = hashUtils.convertToBuffer(sourceData);
    var position = 0;
    var byteLength = data.byteLength;
    this.bytesHashed += byteLength;
    while (byteLength > 0) {
        this.buffer.setUint8(this.bufferLength++, data[position++]);
        byteLength--;
        if (this.bufferLength === BLOCK_SIZE) {
            this.hashBuffer();
            this.bufferLength = 0;
        }
    }

    return this;
};

Md5.prototype.digest = function (encoding) {
    if (!this.finished) {
        var _a = this, buffer = _a.buffer, undecoratedLength = _a.bufferLength, bytesHashed = _a.bytesHashed;
        var bitsHashed = bytesHashed * 8;
        buffer.setUint8(this.bufferLength++, 128);
        // Ensure the final block has enough room for the hashed length
        if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {
            for (var i = this.bufferLength; i < BLOCK_SIZE; i++) {
                buffer.setUint8(i, 0);
            }
            this.hashBuffer();
            this.bufferLength = 0;
        }
        for (var i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {
            buffer.setUint8(i, 0);
        }
        buffer.setUint32(BLOCK_SIZE - 8, bitsHashed >>> 0, true);
        buffer.setUint32(BLOCK_SIZE - 4, Math.floor(bitsHashed / 0x100000000), true);
        this.hashBuffer();
        this.finished = true;
    }
    var out = new DataView(new ArrayBuffer(DIGEST_LENGTH));
    for (var i = 0; i < 4; i++) {
        out.setUint32(i * 4, this.state[i], true);
    }
    var buff = new Buffer(out.buffer, out.byteOffset, out.byteLength);
    return encoding ? buff.toString(encoding) : buff;
};

Md5.prototype.hashBuffer = function () {
    var _a = this, buffer = _a.buffer, state = _a.state;
    var a = state[0], b = state[1], c = state[2], d = state[3];
    a = ff(a, b, c, d, buffer.getUint32(0, true), 7, 0xd76aa478);
    d = ff(d, a, b, c, buffer.getUint32(4, true), 12, 0xe8c7b756);
    c = ff(c, d, a, b, buffer.getUint32(8, true), 17, 0x242070db);
    b = ff(b, c, d, a, buffer.getUint32(12, true), 22, 0xc1bdceee);
    a = ff(a, b, c, d, buffer.getUint32(16, true), 7, 0xf57c0faf);
    d = ff(d, a, b, c, buffer.getUint32(20, true), 12, 0x4787c62a);
    c = ff(c, d, a, b, buffer.getUint32(24, true), 17, 0xa8304613);
    b = ff(b, c, d, a, buffer.getUint32(28, true), 22, 0xfd469501);
    a = ff(a, b, c, d, buffer.getUint32(32, true), 7, 0x698098d8);
    d = ff(d, a, b, c, buffer.getUint32(36, true), 12, 0x8b44f7af);
    c = ff(c, d, a, b, buffer.getUint32(40, true), 17, 0xffff5bb1);
    b = ff(b, c, d, a, buffer.getUint32(44, true), 22, 0x895cd7be);
    a = ff(a, b, c, d, buffer.getUint32(48, true), 7, 0x6b901122);
    d = ff(d, a, b, c, buffer.getUint32(52, true), 12, 0xfd987193);
    c = ff(c, d, a, b, buffer.getUint32(56, true), 17, 0xa679438e);
    b = ff(b, c, d, a, buffer.getUint32(60, true), 22, 0x49b40821);
    a = gg(a, b, c, d, buffer.getUint32(4, true), 5, 0xf61e2562);
    d = gg(d, a, b, c, buffer.getUint32(24, true), 9, 0xc040b340);
    c = gg(c, d, a, b, buffer.getUint32(44, true), 14, 0x265e5a51);
    b = gg(b, c, d, a, buffer.getUint32(0, true), 20, 0xe9b6c7aa);
    a = gg(a, b, c, d, buffer.getUint32(20, true), 5, 0xd62f105d);
    d = gg(d, a, b, c, buffer.getUint32(40, true), 9, 0x02441453);
    c = gg(c, d, a, b, buffer.getUint32(60, true), 14, 0xd8a1e681);
    b = gg(b, c, d, a, buffer.getUint32(16, true), 20, 0xe7d3fbc8);
    a = gg(a, b, c, d, buffer.getUint32(36, true), 5, 0x21e1cde6);
    d = gg(d, a, b, c, buffer.getUint32(56, true), 9, 0xc33707d6);
    c = gg(c, d, a, b, buffer.getUint32(12, true), 14, 0xf4d50d87);
    b = gg(b, c, d, a, buffer.getUint32(32, true), 20, 0x455a14ed);
    a = gg(a, b, c, d, buffer.getUint32(52, true), 5, 0xa9e3e905);
    d = gg(d, a, b, c, buffer.getUint32(8, true), 9, 0xfcefa3f8);
    c = gg(c, d, a, b, buffer.getUint32(28, true), 14, 0x676f02d9);
    b = gg(b, c, d, a, buffer.getUint32(48, true), 20, 0x8d2a4c8a);
    a = hh(a, b, c, d, buffer.getUint32(20, true), 4, 0xfffa3942);
    d = hh(d, a, b, c, buffer.getUint32(32, true), 11, 0x8771f681);
    c = hh(c, d, a, b, buffer.getUint32(44, true), 16, 0x6d9d6122);
    b = hh(b, c, d, a, buffer.getUint32(56, true), 23, 0xfde5380c);
    a = hh(a, b, c, d, buffer.getUint32(4, true), 4, 0xa4beea44);
    d = hh(d, a, b, c, buffer.getUint32(16, true), 11, 0x4bdecfa9);
    c = hh(c, d, a, b, buffer.getUint32(28, true), 16, 0xf6bb4b60);
    b = hh(b, c, d, a, buffer.getUint32(40, true), 23, 0xbebfbc70);
    a = hh(a, b, c, d, buffer.getUint32(52, true), 4, 0x289b7ec6);
    d = hh(d, a, b, c, buffer.getUint32(0, true), 11, 0xeaa127fa);
    c = hh(c, d, a, b, buffer.getUint32(12, true), 16, 0xd4ef3085);
    b = hh(b, c, d, a, buffer.getUint32(24, true), 23, 0x04881d05);
    a = hh(a, b, c, d, buffer.getUint32(36, true), 4, 0xd9d4d039);
    d = hh(d, a, b, c, buffer.getUint32(48, true), 11, 0xe6db99e5);
    c = hh(c, d, a, b, buffer.getUint32(60, true), 16, 0x1fa27cf8);
    b = hh(b, c, d, a, buffer.getUint32(8, true), 23, 0xc4ac5665);
    a = ii(a, b, c, d, buffer.getUint32(0, true), 6, 0xf4292244);
    d = ii(d, a, b, c, buffer.getUint32(28, true), 10, 0x432aff97);
    c = ii(c, d, a, b, buffer.getUint32(56, true), 15, 0xab9423a7);
    b = ii(b, c, d, a, buffer.getUint32(20, true), 21, 0xfc93a039);
    a = ii(a, b, c, d, buffer.getUint32(48, true), 6, 0x655b59c3);
    d = ii(d, a, b, c, buffer.getUint32(12, true), 10, 0x8f0ccc92);
    c = ii(c, d, a, b, buffer.getUint32(40, true), 15, 0xffeff47d);
    b = ii(b, c, d, a, buffer.getUint32(4, true), 21, 0x85845dd1);
    a = ii(a, b, c, d, buffer.getUint32(32, true), 6, 0x6fa87e4f);
    d = ii(d, a, b, c, buffer.getUint32(60, true), 10, 0xfe2ce6e0);
    c = ii(c, d, a, b, buffer.getUint32(24, true), 15, 0xa3014314);
    b = ii(b, c, d, a, buffer.getUint32(52, true), 21, 0x4e0811a1);
    a = ii(a, b, c, d, buffer.getUint32(16, true), 6, 0xf7537e82);
    d = ii(d, a, b, c, buffer.getUint32(44, true), 10, 0xbd3af235);
    c = ii(c, d, a, b, buffer.getUint32(8, true), 15, 0x2ad7d2bb);
    b = ii(b, c, d, a, buffer.getUint32(36, true), 21, 0xeb86d391);
    state[0] = (a + state[0]) & 0xFFFFFFFF;
    state[1] = (b + state[1]) & 0xFFFFFFFF;
    state[2] = (c + state[2]) & 0xFFFFFFFF;
    state[3] = (d + state[3]) & 0xFFFFFFFF;
};

function cmn(q, a, b, x, s, t) {
    a = (((a + q) & 0xFFFFFFFF) + ((x + t) & 0xFFFFFFFF)) & 0xFFFFFFFF;
    return (((a << s) | (a >>> (32 - s))) + b) & 0xFFFFFFFF;
}

function ff(a, b, c, d, x, s, t) {
    return cmn((b & c) | ((~b) & d), a, b, x, s, t);
}

function gg(a, b, c, d, x, s, t) {
    return cmn((b & d) | (c & (~d)), a, b, x, s, t);
}

function hh(a, b, c, d, x, s, t) {
    return cmn(b ^ c ^ d, a, b, x, s, t);
}

function ii(a, b, c, d, x, s, t) {
    return cmn(c ^ (b | (~d)), a, b, x, s, t);
}

},{"./browserHashUtils":231,"buffer/":308}],234:[function(require,module,exports){
var Buffer = require('buffer/').Buffer;
var hashUtils = require('./browserHashUtils');

var BLOCK_SIZE = 64;

var DIGEST_LENGTH = 20;

var KEY = new Uint32Array([
    0x5a827999,
    0x6ed9eba1,
    0x8f1bbcdc | 0,
    0xca62c1d6 | 0
]);

var INIT = [
    0x6a09e667,
    0xbb67ae85,
    0x3c6ef372,
    0xa54ff53a,
    0x510e527f,
    0x9b05688c,
    0x1f83d9ab,
    0x5be0cd19,
];

var MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;

/**
 * @api private
 */
function Sha1() {
    this.h0 = 0x67452301;
    this.h1 = 0xEFCDAB89;
    this.h2 = 0x98BADCFE;
    this.h3 = 0x10325476;
    this.h4 = 0xC3D2E1F0;
    // The first 64 bytes (16 words) is the data chunk
    this.block = new Uint32Array(80);
    this.offset = 0;
    this.shift = 24;
    this.totalLength = 0;
}

module.exports = exports = Sha1;

Sha1.BLOCK_SIZE = BLOCK_SIZE;

Sha1.prototype.update = function (data) {
    if (this.finished) {
        throw new Error('Attempted to update an already finished hash.');
    }

    if (hashUtils.isEmptyData(data)) {
        return this;
    }

    data = hashUtils.convertToBuffer(data);

    var length = data.length;
    this.totalLength += length * 8;
    for (var i = 0; i < length; i++) {
        this.write(data[i]);
    }

    return this;
};

Sha1.prototype.write = function write(byte) {
    this.block[this.offset] |= (byte & 0xff) << this.shift;
    if (this.shift) {
        this.shift -= 8;
    } else {
        this.offset++;
        this.shift = 24;
    }

    if (this.offset === 16) this.processBlock();
};

Sha1.prototype.digest = function (encoding) {
    // Pad
    this.write(0x80);
    if (this.offset > 14 || (this.offset === 14 && this.shift < 24)) {
      this.processBlock();
    }
    this.offset = 14;
    this.shift = 24;

    // 64-bit length big-endian
    this.write(0x00); // numbers this big aren't accurate in javascript anyway
    this.write(0x00); // ..So just hard-code to zero.
    this.write(this.totalLength > 0xffffffffff ? this.totalLength / 0x10000000000 : 0x00);
    this.write(this.totalLength > 0xffffffff ? this.totalLength / 0x100000000 : 0x00);
    for (var s = 24; s >= 0; s -= 8) {
        this.write(this.totalLength >> s);
    }
    // The value in state is little-endian rather than big-endian, so flip
    // each word into a new Uint8Array
    var out = new Buffer(DIGEST_LENGTH);
    var outView = new DataView(out.buffer);
    outView.setUint32(0, this.h0, false);
    outView.setUint32(4, this.h1, false);
    outView.setUint32(8, this.h2, false);
    outView.setUint32(12, this.h3, false);
    outView.setUint32(16, this.h4, false);

    return encoding ? out.toString(encoding) : out;
};

Sha1.prototype.processBlock = function processBlock() {
    // Extend the sixteen 32-bit words into eighty 32-bit words:
    for (var i = 16; i < 80; i++) {
      var w = this.block[i - 3] ^ this.block[i - 8] ^ this.block[i - 14] ^ this.block[i - 16];
      this.block[i] = (w << 1) | (w >>> 31);
    }

    // Initialize hash value for this chunk:
    var a = this.h0;
    var b = this.h1;
    var c = this.h2;
    var d = this.h3;
    var e = this.h4;
    var f, k;

    // Main loop:
    for (i = 0; i < 80; i++) {
      if (i < 20) {
        f = d ^ (b & (c ^ d));
        k = 0x5A827999;
      }
      else if (i < 40) {
        f = b ^ c ^ d;
        k = 0x6ED9EBA1;
      }
      else if (i < 60) {
        f = (b & c) | (d & (b | c));
        k = 0x8F1BBCDC;
      }
      else {
        f = b ^ c ^ d;
        k = 0xCA62C1D6;
      }
      var temp = (a << 5 | a >>> 27) + f + e + k + (this.block[i]|0);
      e = d;
      d = c;
      c = (b << 30 | b >>> 2);
      b = a;
      a = temp;
    }

    // Add this chunk's hash to result so far:
    this.h0 = (this.h0 + a) | 0;
    this.h1 = (this.h1 + b) | 0;
    this.h2 = (this.h2 + c) | 0;
    this.h3 = (this.h3 + d) | 0;
    this.h4 = (this.h4 + e) | 0;

    // The block is now reusable.
    this.offset = 0;
    for (i = 0; i < 16; i++) {
        this.block[i] = 0;
    }
}

},{"./browserHashUtils":231,"buffer/":308}],235:[function(require,module,exports){
var Buffer = require('buffer/').Buffer;
var hashUtils = require('./browserHashUtils');

var BLOCK_SIZE = 64;

var DIGEST_LENGTH = 32;

var KEY = new Uint32Array([
    0x428a2f98,
    0x71374491,
    0xb5c0fbcf,
    0xe9b5dba5,
    0x3956c25b,
    0x59f111f1,
    0x923f82a4,
    0xab1c5ed5,
    0xd807aa98,
    0x12835b01,
    0x243185be,
    0x550c7dc3,
    0x72be5d74,
    0x80deb1fe,
    0x9bdc06a7,
    0xc19bf174,
    0xe49b69c1,
    0xefbe4786,
    0x0fc19dc6,
    0x240ca1cc,
    0x2de92c6f,
    0x4a7484aa,
    0x5cb0a9dc,
    0x76f988da,
    0x983e5152,
    0xa831c66d,
    0xb00327c8,
    0xbf597fc7,
    0xc6e00bf3,
    0xd5a79147,
    0x06ca6351,
    0x14292967,
    0x27b70a85,
    0x2e1b2138,
    0x4d2c6dfc,
    0x53380d13,
    0x650a7354,
    0x766a0abb,
    0x81c2c92e,
    0x92722c85,
    0xa2bfe8a1,
    0xa81a664b,
    0xc24b8b70,
    0xc76c51a3,
    0xd192e819,
    0xd6990624,
    0xf40e3585,
    0x106aa070,
    0x19a4c116,
    0x1e376c08,
    0x2748774c,
    0x34b0bcb5,
    0x391c0cb3,
    0x4ed8aa4a,
    0x5b9cca4f,
    0x682e6ff3,
    0x748f82ee,
    0x78a5636f,
    0x84c87814,
    0x8cc70208,
    0x90befffa,
    0xa4506ceb,
    0xbef9a3f7,
    0xc67178f2
]);

var INIT = [
    0x6a09e667,
    0xbb67ae85,
    0x3c6ef372,
    0xa54ff53a,
    0x510e527f,
    0x9b05688c,
    0x1f83d9ab,
    0x5be0cd19,
];

var MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;

/**
 * @private
 */
function Sha256() {
    this.state = [
        0x6a09e667,
        0xbb67ae85,
        0x3c6ef372,
        0xa54ff53a,
        0x510e527f,
        0x9b05688c,
        0x1f83d9ab,
        0x5be0cd19,
    ];
    this.temp = new Int32Array(64);
    this.buffer = new Uint8Array(64);
    this.bufferLength = 0;
    this.bytesHashed = 0;
    /**
     * @private
     */
    this.finished = false;
}

module.exports = exports = Sha256;

Sha256.BLOCK_SIZE = BLOCK_SIZE;

Sha256.prototype.update = function (data) {
    if (this.finished) {
        throw new Error('Attempted to update an already finished hash.');
    }

    if (hashUtils.isEmptyData(data)) {
        return this;
    }

    data = hashUtils.convertToBuffer(data);

    var position = 0;
    var byteLength = data.byteLength;
    this.bytesHashed += byteLength;
    if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {
        throw new Error('Cannot hash more than 2^53 - 1 bits');
    }

    while (byteLength > 0) {
        this.buffer[this.bufferLength++] = data[position++];
        byteLength--;
        if (this.bufferLength === BLOCK_SIZE) {
            this.hashBuffer();
            this.bufferLength = 0;
        }
    }

    return this;
};

Sha256.prototype.digest = function (encoding) {
    if (!this.finished) {
        var bitsHashed = this.bytesHashed * 8;
        var bufferView = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);
        var undecoratedLength = this.bufferLength;
        bufferView.setUint8(this.bufferLength++, 0x80);
        // Ensure the final block has enough room for the hashed length
        if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {
            for (var i = this.bufferLength; i < BLOCK_SIZE; i++) {
                bufferView.setUint8(i, 0);
            }
            this.hashBuffer();
            this.bufferLength = 0;
        }
        for (var i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {
            bufferView.setUint8(i, 0);
        }
        bufferView.setUint32(BLOCK_SIZE - 8, Math.floor(bitsHashed / 0x100000000), true);
        bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);
        this.hashBuffer();
        this.finished = true;
    }
    // The value in state is little-endian rather than big-endian, so flip
    // each word into a new Uint8Array
    var out = new Buffer(DIGEST_LENGTH);
    for (var i = 0; i < 8; i++) {
        out[i * 4] = (this.state[i] >>> 24) & 0xff;
        out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;
        out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;
        out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;
    }
    return encoding ? out.toString(encoding) : out;
};

Sha256.prototype.hashBuffer = function () {
    var _a = this,
        buffer = _a.buffer,
        state = _a.state;
    var state0 = state[0],
        state1 = state[1],
        state2 = state[2],
        state3 = state[3],
        state4 = state[4],
        state5 = state[5],
        state6 = state[6],
        state7 = state[7];
    for (var i = 0; i < BLOCK_SIZE; i++) {
        if (i < 16) {
            this.temp[i] = (((buffer[i * 4] & 0xff) << 24) |
                ((buffer[(i * 4) + 1] & 0xff) << 16) |
                ((buffer[(i * 4) + 2] & 0xff) << 8) |
                (buffer[(i * 4) + 3] & 0xff));
        }
        else {
            var u = this.temp[i - 2];
            var t1_1 = (u >>> 17 | u << 15) ^
                (u >>> 19 | u << 13) ^
                (u >>> 10);
            u = this.temp[i - 15];
            var t2_1 = (u >>> 7 | u << 25) ^
                (u >>> 18 | u << 14) ^
                (u >>> 3);
            this.temp[i] = (t1_1 + this.temp[i - 7] | 0) +
                (t2_1 + this.temp[i - 16] | 0);
        }
        var t1 = (((((state4 >>> 6 | state4 << 26) ^
            (state4 >>> 11 | state4 << 21) ^
            (state4 >>> 25 | state4 << 7))
            + ((state4 & state5) ^ (~state4 & state6))) | 0)
            + ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) | 0;
        var t2 = (((state0 >>> 2 | state0 << 30) ^
            (state0 >>> 13 | state0 << 19) ^
            (state0 >>> 22 | state0 << 10)) + ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) | 0;
        state7 = state6;
        state6 = state5;
        state5 = state4;
        state4 = (state3 + t1) | 0;
        state3 = state2;
        state2 = state1;
        state1 = state0;
        state0 = (t1 + t2) | 0;
    }
    state[0] += state0;
    state[1] += state1;
    state[2] += state2;
    state[3] += state3;
    state[4] += state4;
    state[5] += state5;
    state[6] += state6;
    state[7] += state7;
};

},{"./browserHashUtils":231,"buffer/":308}],236:[function(require,module,exports){
(function (process){
var util = require('./util');

// browser specific modules
util.crypto.lib = require('./browserCryptoLib');
util.Buffer = require('buffer/').Buffer;
util.url = require('url/');
util.querystring = require('querystring/');
util.environment = 'js';

var AWS = require('./core');
module.exports = AWS;

require('./credentials');
require('./credentials/credential_provider_chain');
require('./credentials/temporary_credentials');
require('./credentials/web_identity_credentials');
require('./credentials/cognito_identity_credentials');
require('./credentials/saml_credentials');

// Load the DOMParser XML parser
AWS.XML.Parser = require('./xml/browser_parser');

// Load the XHR HttpClient
require('./http/xhr');

if (typeof process === 'undefined') {
  process = {
    browser: true
  };
}

}).call(this,require('_process'))
},{"./browserCryptoLib":230,"./core":239,"./credentials":240,"./credentials/cognito_identity_credentials":241,"./credentials/credential_provider_chain":242,"./credentials/saml_credentials":243,"./credentials/temporary_credentials":244,"./credentials/web_identity_credentials":245,"./http/xhr":254,"./util":303,"./xml/browser_parser":304,"_process":453,"buffer/":308,"querystring/":460,"url/":461}],237:[function(require,module,exports){
var AWS = require('../core'),
    url = AWS.util.url,
    crypto = AWS.util.crypto.lib,
    base64Encode = AWS.util.base64.encode,
    inherit = AWS.util.inherit;

var queryEncode = function (string) {
    var replacements = {
        '+': '-',
        '=': '_',
        '/': '~'
    };
    return string.replace(/[\+=\/]/g, function (match) {
        return replacements[match];
    });
};

var signPolicy = function (policy, privateKey) {
    var sign = crypto.createSign('RSA-SHA1');
    sign.write(policy);
    return queryEncode(sign.sign(privateKey, 'base64'))
};

var signWithCannedPolicy = function (url, expires, keyPairId, privateKey) {
    var policy = JSON.stringify({
        Statement: [
            {
                Resource: url,
                Condition: { DateLessThan: { 'AWS:EpochTime': expires } }
            }
        ]
    });

    return {
        Expires: expires,
        'Key-Pair-Id': keyPairId,
        Signature: signPolicy(policy.toString(), privateKey)
    };
};

var signWithCustomPolicy = function (policy, keyPairId, privateKey) {
    policy = policy.replace(/\s/mg, policy);

    return {
        Policy: queryEncode(base64Encode(policy)),
        'Key-Pair-Id': keyPairId,
        Signature: signPolicy(policy, privateKey)
    }
};

var determineScheme = function (url) {
    var parts = url.split('://');
    if (parts.length < 2) {
        throw new Error('Invalid URL.');
    }

    return parts[0].replace('*', '');
};

var getRtmpUrl = function (rtmpUrl) {
    var parsed = url.parse(rtmpUrl);
    return parsed.path.replace(/^\//, '') + (parsed.hash || '');
};

var getResource = function (url) {
    switch (determineScheme(url)) {
        case 'http':
        case 'https':
            return url;
        case 'rtmp':
            return getRtmpUrl(url);
        default:
            throw new Error('Invalid URI scheme. Scheme must be one of'
                + ' http, https, or rtmp');
    }
};

var handleError = function (err, callback) {
    if (!callback || typeof callback !== 'function') {
        throw err;
    }

    callback(err);
};

var handleSuccess = function (result, callback) {
    if (!callback || typeof callback !== 'function') {
        return result;
    }

    callback(null, result);
};

AWS.CloudFront.Signer = inherit({
    /**
     * A signer object can be used to generate signed URLs and cookies for granting
     * access to content on restricted CloudFront distributions.
     *
     * @see http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html
     *
     * @param keyPairId [String]    (Required) The ID of the CloudFront key pair
     *                              being used.
     * @param privateKey [String]   (Required) A private key in RSA format.
     */
    constructor: function Signer(keyPairId, privateKey) {
        if (keyPairId === void 0 || privateKey === void 0) {
            throw new Error('A key pair ID and private key are required');
        }

        this.keyPairId = keyPairId;
        this.privateKey = privateKey;
    },

    /**
     * Create a signed Amazon CloudFront Cookie.
     *
     * @param options [Object]            The options to create a signed cookie.
     * @option options url [String]     The URL to which the signature will grant
     *                                  access. Required unless you pass in a full
     *                                  policy.
     * @option options expires [Number] A Unix UTC timestamp indicating when the
     *                                  signature should expire. Required unless you
     *                                  pass in a full policy.
     * @option options policy [String]  A CloudFront JSON policy. Required unless
     *                                  you pass in a url and an expiry time.
     *
     * @param cb [Function] if a callback is provided, this function will
     *   pass the hash as the second parameter (after the error parameter) to
     *   the callback function.
     *
     * @return [Object] if called synchronously (with no callback), returns the
     *   signed cookie parameters.
     * @return [null] nothing is returned if a callback is provided.
     */
    getSignedCookie: function (options, cb) {
        var signatureHash = 'policy' in options
            ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey)
            : signWithCannedPolicy(options.url, options.expires, this.keyPairId, this.privateKey);

        var cookieHash = {};
        for (var key in signatureHash) {
            if (Object.prototype.hasOwnProperty.call(signatureHash, key)) {
                cookieHash['CloudFront-' + key] = signatureHash[key];
            }
        }

        return handleSuccess(cookieHash, cb);
    },

    /**
     * Create a signed Amazon CloudFront URL.
     *
     * Keep in mind that URLs meant for use in media/flash players may have
     * different requirements for URL formats (e.g. some require that the
     * extension be removed, some require the file name to be prefixed
     * - mp4:<path>, some require you to add "/cfx/st" into your URL).
     *
     * @param options [Object]          The options to create a signed URL.
     * @option options url [String]     The URL to which the signature will grant
     *                                  access. Required.
     * @option options expires [Number] A Unix UTC timestamp indicating when the
     *                                  signature should expire. Required unless you
     *                                  pass in a full policy.
     * @option options policy [String]  A CloudFront JSON policy. Required unless
     *                                  you pass in a url and an expiry time.
     *
     * @param cb [Function] if a callback is provided, this function will
     *   pass the URL as the second parameter (after the error parameter) to
     *   the callback function.
     *
     * @return [String] if called synchronously (with no callback), returns the
     *   signed URL.
     * @return [null] nothing is returned if a callback is provided.
     */
    getSignedUrl: function (options, cb) {
        try {
            var resource = getResource(options.url);
        } catch (err) {
            return handleError(err, cb);
        }

        var parsedUrl = url.parse(options.url, true),
            signatureHash = Object.prototype.hasOwnProperty.call(options, 'policy')
                ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey)
                : signWithCannedPolicy(resource, options.expires, this.keyPairId, this.privateKey);

        parsedUrl.search = null;
        for (var key in signatureHash) {
            if (Object.prototype.hasOwnProperty.call(signatureHash, key)) {
                parsedUrl.query[key] = signatureHash[key];
            }
        }

        try {
            var signedUrl = determineScheme(options.url) === 'rtmp'
                    ? getRtmpUrl(url.format(parsedUrl))
                    : url.format(parsedUrl);
        } catch (err) {
            return handleError(err, cb);
        }

        return handleSuccess(signedUrl, cb);
    }
});

module.exports = AWS.CloudFront.Signer;

},{"../core":239}],238:[function(require,module,exports){
var AWS = require('./core');
require('./credentials');
require('./credentials/credential_provider_chain');
var PromisesDependency;

/**
 * The main configuration class used by all service objects to set
 * the region, credentials, and other options for requests.
 *
 * By default, credentials and region settings are left unconfigured.
 * This should be configured by the application before using any
 * AWS service APIs.
 *
 * In order to set global configuration options, properties should
 * be assigned to the global {AWS.config} object.
 *
 * @see AWS.config
 *
 * @!group General Configuration Options
 *
 * @!attribute credentials
 *   @return [AWS.Credentials] the AWS credentials to sign requests with.
 *
 * @!attribute region
 *   @example Set the global region setting to us-west-2
 *     AWS.config.update({region: 'us-west-2'});
 *   @return [AWS.Credentials] The region to send service requests to.
 *   @see http://docs.amazonwebservices.com/general/latest/gr/rande.html
 *     A list of available endpoints for each AWS service
 *
 * @!attribute maxRetries
 *   @return [Integer] the maximum amount of retries to perform for a
 *     service request. By default this value is calculated by the specific
 *     service object that the request is being made to.
 *
 * @!attribute maxRedirects
 *   @return [Integer] the maximum amount of redirects to follow for a
 *     service request. Defaults to 10.
 *
 * @!attribute paramValidation
 *   @return [Boolean|map] whether input parameters should be validated against
 *     the operation description before sending the request. Defaults to true.
 *     Pass a map to enable any of the following specific validation features:
 *
 *     * **min** [Boolean] &mdash; Validates that a value meets the min
 *       constraint. This is enabled by default when paramValidation is set
 *       to `true`.
 *     * **max** [Boolean] &mdash; Validates that a value meets the max
 *       constraint.
 *     * **pattern** [Boolean] &mdash; Validates that a string value matches a
 *       regular expression.
 *     * **enum** [Boolean] &mdash; Validates that a string value matches one
 *       of the allowable enum values.
 *
 * @!attribute computeChecksums
 *   @return [Boolean] whether to compute checksums for payload bodies when
 *     the service accepts it (currently supported in S3 only).
 *
 * @!attribute convertResponseTypes
 *   @return [Boolean] whether types are converted when parsing response data.
 *     Currently only supported for JSON based services. Turning this off may
 *     improve performance on large response payloads. Defaults to `true`.
 *
 * @!attribute correctClockSkew
 *   @return [Boolean] whether to apply a clock skew correction and retry
 *     requests that fail because of an skewed client clock. Defaults to
 *     `false`.
 *
 * @!attribute sslEnabled
 *   @return [Boolean] whether SSL is enabled for requests
 *
 * @!attribute s3ForcePathStyle
 *   @return [Boolean] whether to force path style URLs for S3 objects
 *
 * @!attribute s3BucketEndpoint
 *   @note Setting this configuration option requires an `endpoint` to be
 *     provided explicitly to the service constructor.
 *   @return [Boolean] whether the provided endpoint addresses an individual
 *     bucket (false if it addresses the root API endpoint).
 *
 * @!attribute s3DisableBodySigning
 *   @return [Boolean] whether to disable S3 body signing when using signature version `v4`.
 *     Body signing can only be disabled when using https. Defaults to `true`.
 *
 * @!attribute useAccelerateEndpoint
 *   @note This configuration option is only compatible with S3 while accessing
 *     dns-compatible buckets.
 *   @return [Boolean] Whether to use the Accelerate endpoint with the S3 service.
 *     Defaults to `false`.
 *
 * @!attribute retryDelayOptions
 *   @example Set the base retry delay for all services to 300 ms
 *     AWS.config.update({retryDelayOptions: {base: 300}});
 *     // Delays with maxRetries = 3: 300, 600, 1200
 *   @example Set a custom backoff function to provide delay values on retries
 *     AWS.config.update({retryDelayOptions: {customBackoff: function(retryCount) {
 *       // returns delay in ms
 *     }}});
 *   @return [map] A set of options to configure the retry delay on retryable errors.
 *     Currently supported options are:
 *
 *     * **base** [Integer] &mdash; The base number of milliseconds to use in the
 *       exponential backoff for operation retries. Defaults to 100 ms for all services except
 *       DynamoDB, where it defaults to 50ms.
 *     * **customBackoff ** [function] &mdash; A custom function that accepts a retry count
 *       and returns the amount of time to delay in milliseconds. The `base` option will be
 *       ignored if this option is supplied.
 *
 * @!attribute httpOptions
 *   @return [map] A set of options to pass to the low-level HTTP request.
 *     Currently supported options are:
 *
 *     * **proxy** [String] &mdash; the URL to proxy requests through
 *     * **agent** [http.Agent, https.Agent] &mdash; the Agent object to perform
 *       HTTP requests with. Used for connection pooling. Defaults to the global
 *       agent (`http.globalAgent`) for non-SSL connections. Note that for
 *       SSL connections, a special Agent object is used in order to enable
 *       peer certificate verification. This feature is only supported in the
 *       Node.js environment.
 *     * **connectTimeout** [Integer] &mdash; Sets the socket to timeout after
 *       failing to establish a connection with the server after
 *       `connectTimeout` milliseconds. This timeout has no effect once a socket
 *       connection has been established.
 *     * **timeout** [Integer] &mdash; Sets the socket to timeout after timeout
 *       milliseconds of inactivity on the socket. Defaults to two minutes
 *       (120000)
 *     * **xhrAsync** [Boolean] &mdash; Whether the SDK will send asynchronous
 *       HTTP requests. Used in the browser environment only. Set to false to
 *       send requests synchronously. Defaults to true (async on).
 *     * **xhrWithCredentials** [Boolean] &mdash; Sets the "withCredentials"
 *       property of an XMLHttpRequest object. Used in the browser environment
 *       only. Defaults to false.
 * @!attribute logger
 *   @return [#write,#log] an object that responds to .write() (like a stream)
 *     or .log() (like the console object) in order to log information about
 *     requests
 *
 * @!attribute systemClockOffset
 *   @return [Number] an offset value in milliseconds to apply to all signing
 *     times. Use this to compensate for clock skew when your system may be
 *     out of sync with the service time. Note that this configuration option
 *     can only be applied to the global `AWS.config` object and cannot be
 *     overridden in service-specific configuration. Defaults to 0 milliseconds.
 *
 * @!attribute signatureVersion
 *   @return [String] the signature version to sign requests with (overriding
 *     the API configuration). Possible values are: 'v2', 'v3', 'v4'.
 *
 * @!attribute signatureCache
 *   @return [Boolean] whether the signature to sign requests with (overriding
 *     the API configuration) is cached. Only applies to the signature version 'v4'.
 *     Defaults to `true`.
 */
AWS.Config = AWS.util.inherit({
  /**
   * @!endgroup
   */

  /**
   * Creates a new configuration object. This is the object that passes
   * option data along to service requests, including credentials, security,
   * region information, and some service specific settings.
   *
   * @example Creating a new configuration object with credentials and region
   *   var config = new AWS.Config({
   *     accessKeyId: 'AKID', secretAccessKey: 'SECRET', region: 'us-west-2'
   *   });
   * @option options accessKeyId [String] your AWS access key ID.
   * @option options secretAccessKey [String] your AWS secret access key.
   * @option options sessionToken [AWS.Credentials] the optional AWS
   *   session token to sign requests with.
   * @option options credentials [AWS.Credentials] the AWS credentials
   *   to sign requests with. You can either specify this object, or
   *   specify the accessKeyId and secretAccessKey options directly.
   * @option options credentialProvider [AWS.CredentialProviderChain] the
   *   provider chain used to resolve credentials if no static `credentials`
   *   property is set.
   * @option options region [String] the region to send service requests to.
   *   See {region} for more information.
   * @option options maxRetries [Integer] the maximum amount of retries to
   *   attempt with a request. See {maxRetries} for more information.
   * @option options maxRedirects [Integer] the maximum amount of redirects to
   *   follow with a request. See {maxRedirects} for more information.
   * @option options sslEnabled [Boolean] whether to enable SSL for
   *   requests.
   * @option options paramValidation [Boolean|map] whether input parameters
   *   should be validated against the operation description before sending
   *   the request. Defaults to true. Pass a map to enable any of the
   *   following specific validation features:
   *
   *   * **min** [Boolean] &mdash; Validates that a value meets the min
   *     constraint. This is enabled by default when paramValidation is set
   *     to `true`.
   *   * **max** [Boolean] &mdash; Validates that a value meets the max
   *     constraint.
   *   * **pattern** [Boolean] &mdash; Validates that a string value matches a
   *     regular expression.
   *   * **enum** [Boolean] &mdash; Validates that a string value matches one
   *     of the allowable enum values.
   * @option options computeChecksums [Boolean] whether to compute checksums
   *   for payload bodies when the service accepts it (currently supported
   *   in S3 only)
   * @option options convertResponseTypes [Boolean] whether types are converted
   *     when parsing response data. Currently only supported for JSON based
   *     services. Turning this off may improve performance on large response
   *     payloads. Defaults to `true`.
   * @option options correctClockSkew [Boolean] whether to apply a clock skew
   *     correction and retry requests that fail because of an skewed client
   *     clock. Defaults to `false`.
   * @option options s3ForcePathStyle [Boolean] whether to force path
   *   style URLs for S3 objects.
   * @option options s3BucketEndpoint [Boolean] whether the provided endpoint
   *   addresses an individual bucket (false if it addresses the root API
   *   endpoint). Note that setting this configuration option requires an
   *   `endpoint` to be provided explicitly to the service constructor.
   * @option options s3DisableBodySigning [Boolean] whether S3 body signing
   *   should be disabled when using signature version `v4`. Body signing
   *   can only be disabled when using https. Defaults to `true`.
   *
   * @option options retryDelayOptions [map] A set of options to configure
   *   the retry delay on retryable errors. Currently supported options are:
   *
   *   * **base** [Integer] &mdash; The base number of milliseconds to use in the
   *     exponential backoff for operation retries. Defaults to 100 ms for all
   *     services except DynamoDB, where it defaults to 50ms.
   *   * **customBackoff ** [function] &mdash; A custom function that accepts a retry count
   *     and returns the amount of time to delay in milliseconds. The `base` option will be
   *     ignored if this option is supplied.
   * @option options httpOptions [map] A set of options to pass to the low-level
   *   HTTP request. Currently supported options are:
   *
   *   * **proxy** [String] &mdash; the URL to proxy requests through
   *   * **agent** [http.Agent, https.Agent] &mdash; the Agent object to perform
   *     HTTP requests with. Used for connection pooling. Defaults to the global
   *     agent (`http.globalAgent`) for non-SSL connections. Note that for
   *     SSL connections, a special Agent object is used in order to enable
   *     peer certificate verification. This feature is only available in the
   *     Node.js environment.
   *   * **connectTimeout** [Integer] &mdash; Sets the socket to timeout after
   *     failing to establish a connection with the server after
   *     `connectTimeout` milliseconds. This timeout has no effect once a socket
   *     connection has been established.
   *   * **timeout** [Integer] &mdash; Sets the socket to timeout after timeout
   *     milliseconds of inactivity on the socket. Defaults to two minutes
   *     (120000).
   *   * **xhrAsync** [Boolean] &mdash; Whether the SDK will send asynchronous
   *     HTTP requests. Used in the browser environment only. Set to false to
   *     send requests synchronously. Defaults to true (async on).
   *   * **xhrWithCredentials** [Boolean] &mdash; Sets the "withCredentials"
   *     property of an XMLHttpRequest object. Used in the browser environment
   *     only. Defaults to false.
   * @option options apiVersion [String, Date] a String in YYYY-MM-DD format
   *   (or a date) that represents the latest possible API version that can be
   *   used in all services (unless overridden by `apiVersions`). Specify
   *   'latest' to use the latest possible version.
   * @option options apiVersions [map<String, String|Date>] a map of service
   *   identifiers (the lowercase service class name) with the API version to
   *   use when instantiating a service. Specify 'latest' for each individual
   *   that can use the latest available version.
   * @option options logger [#write,#log] an object that responds to .write()
   *   (like a stream) or .log() (like the console object) in order to log
   *   information about requests
   * @option options systemClockOffset [Number] an offset value in milliseconds
   *   to apply to all signing times. Use this to compensate for clock skew
   *   when your system may be out of sync with the service time. Note that
   *   this configuration option can only be applied to the global `AWS.config`
   *   object and cannot be overridden in service-specific configuration.
   *   Defaults to 0 milliseconds.
   * @option options signatureVersion [String] the signature version to sign
   *   requests with (overriding the API configuration). Possible values are:
   *   'v2', 'v3', 'v4'.
   * @option options signatureCache [Boolean] whether the signature to sign
   *   requests with (overriding the API configuration) is cached. Only applies
   *   to the signature version 'v4'. Defaults to `true`.
   * @option options dynamoDbCrc32 [Boolean] whether to validate the CRC32
   *   checksum of HTTP response bodies returned by DynamoDB. Default: `true`.
   */
  constructor: function Config(options) {
    if (options === undefined) options = {};
    options = this.extractCredentials(options);

    AWS.util.each.call(this, this.keys, function (key, value) {
      this.set(key, options[key], value);
    });
  },

  /**
   * @!group Managing Credentials
   */

  /**
   * Loads credentials from the configuration object. This is used internally
   * by the SDK to ensure that refreshable {Credentials} objects are properly
   * refreshed and loaded when sending a request. If you want to ensure that
   * your credentials are loaded prior to a request, you can use this method
   * directly to provide accurate credential data stored in the object.
   *
   * @note If you configure the SDK with static or environment credentials,
   *   the credential data should already be present in {credentials} attribute.
   *   This method is primarily necessary to load credentials from asynchronous
   *   sources, or sources that can refresh credentials periodically.
   * @example Getting your access key
   *   AWS.config.getCredentials(function(err) {
   *     if (err) console.log(err.stack); // credentials not loaded
   *     else console.log("Access Key:", AWS.config.credentials.accessKeyId);
   *   })
   * @callback callback function(err)
   *   Called when the {credentials} have been properly set on the configuration
   *   object.
   *
   *   @param err [Error] if this is set, credentials were not successfully
   *     loaded and this error provides information why.
   * @see credentials
   * @see Credentials
   */
  getCredentials: function getCredentials(callback) {
    var self = this;

    function finish(err) {
      callback(err, err ? null : self.credentials);
    }

    function credError(msg, err) {
      return new AWS.util.error(err || new Error(), {
        code: 'CredentialsError',
        message: msg,
        name: 'CredentialsError'
      });
    }

    function getAsyncCredentials() {
      self.credentials.get(function(err) {
        if (err) {
          var msg = 'Could not load credentials from ' +
            self.credentials.constructor.name;
          err = credError(msg, err);
        }
        finish(err);
      });
    }

    function getStaticCredentials() {
      var err = null;
      if (!self.credentials.accessKeyId || !self.credentials.secretAccessKey) {
        err = credError('Missing credentials');
      }
      finish(err);
    }

    if (self.credentials) {
      if (typeof self.credentials.get === 'function') {
        getAsyncCredentials();
      } else { // static credentials
        getStaticCredentials();
      }
    } else if (self.credentialProvider) {
      self.credentialProvider.resolve(function(err, creds) {
        if (err) {
          err = credError('Could not load credentials from any providers', err);
        }
        self.credentials = creds;
        finish(err);
      });
    } else {
      finish(credError('No credentials to load'));
    }
  },

  /**
   * @!group Loading and Setting Configuration Options
   */

  /**
   * @overload update(options, allowUnknownKeys = false)
   *   Updates the current configuration object with new options.
   *
   *   @example Update maxRetries property of a configuration object
   *     config.update({maxRetries: 10});
   *   @param [Object] options a map of option keys and values.
   *   @param [Boolean] allowUnknownKeys whether unknown keys can be set on
   *     the configuration object. Defaults to `false`.
   *   @see constructor
   */
  update: function update(options, allowUnknownKeys) {
    allowUnknownKeys = allowUnknownKeys || false;
    options = this.extractCredentials(options);
    AWS.util.each.call(this, options, function (key, value) {
      if (allowUnknownKeys || Object.prototype.hasOwnProperty.call(this.keys, key) ||
          AWS.Service.hasService(key)) {
        this.set(key, value);
      }
    });
  },

  /**
   * Loads configuration data from a JSON file into this config object.
   * @note Loading configuration will reset all existing configuration
   *   on the object.
   * @!macro nobrowser
   * @param path [String] the path relative to your process's current
   *    working directory to load configuration from.
   * @return [AWS.Config] the same configuration object
   */
  loadFromPath: function loadFromPath(path) {
    this.clear();

    var options = JSON.parse(AWS.util.readFileSync(path));
    var fileSystemCreds = new AWS.FileSystemCredentials(path);
    var chain = new AWS.CredentialProviderChain();
    chain.providers.unshift(fileSystemCreds);
    chain.resolve(function (err, creds) {
      if (err) throw err;
      else options.credentials = creds;
    });

    this.constructor(options);

    return this;
  },

  /**
   * Clears configuration data on this object
   *
   * @api private
   */
  clear: function clear() {
    /*jshint forin:false */
    AWS.util.each.call(this, this.keys, function (key) {
      delete this[key];
    });

    // reset credential provider
    this.set('credentials', undefined);
    this.set('credentialProvider', undefined);
  },

  /**
   * Sets a property on the configuration object, allowing for a
   * default value
   * @api private
   */
  set: function set(property, value, defaultValue) {
    if (value === undefined) {
      if (defaultValue === undefined) {
        defaultValue = this.keys[property];
      }
      if (typeof defaultValue === 'function') {
        this[property] = defaultValue.call(this);
      } else {
        this[property] = defaultValue;
      }
    } else if (property === 'httpOptions' && this[property]) {
      // deep merge httpOptions
      this[property] = AWS.util.merge(this[property], value);
    } else {
      this[property] = value;
    }
  },

  /**
   * All of the keys with their default values.
   *
   * @constant
   * @api private
   */
  keys: {
    credentials: null,
    credentialProvider: null,
    region: null,
    logger: null,
    apiVersions: {},
    apiVersion: null,
    endpoint: undefined,
    httpOptions: {
      timeout: 120000
    },
    maxRetries: undefined,
    maxRedirects: 10,
    paramValidation: true,
    sslEnabled: true,
    s3ForcePathStyle: false,
    s3BucketEndpoint: false,
    s3DisableBodySigning: true,
    computeChecksums: true,
    convertResponseTypes: true,
    correctClockSkew: false,
    customUserAgent: null,
    dynamoDbCrc32: true,
    systemClockOffset: 0,
    signatureVersion: null,
    signatureCache: true,
    retryDelayOptions: {},
    useAccelerateEndpoint: false
  },

  /**
   * Extracts accessKeyId, secretAccessKey and sessionToken
   * from a configuration hash.
   *
   * @api private
   */
  extractCredentials: function extractCredentials(options) {
    if (options.accessKeyId && options.secretAccessKey) {
      options = AWS.util.copy(options);
      options.credentials = new AWS.Credentials(options);
    }
    return options;
  },

  /**
   * Sets the promise dependency the SDK will use wherever Promises are returned.
   * Passing `null` will force the SDK to use native Promises if they are available.
   * If native Promises are not available, passing `null` will have no effect.
   * @param [Constructor] dep A reference to a Promise constructor
   */
  setPromisesDependency: function setPromisesDependency(dep) {
    PromisesDependency = dep;
    // if null was passed in, we should try to use native promises
    if (dep === null && typeof Promise === 'function') {
      PromisesDependency = Promise;
    }
    var constructors = [AWS.Request, AWS.Credentials, AWS.CredentialProviderChain];
    if (AWS.S3 && AWS.S3.ManagedUpload) constructors.push(AWS.S3.ManagedUpload);
    AWS.util.addPromises(constructors, PromisesDependency);
  },

  /**
   * Gets the promise dependency set by `AWS.config.setPromisesDependency`.
   */
  getPromisesDependency: function getPromisesDependency() {
    return PromisesDependency;
  }
});

/**
 * @return [AWS.Config] The global configuration object singleton instance
 * @readonly
 * @see AWS.Config
 */
AWS.config = new AWS.Config();

},{"./core":239,"./credentials":240,"./credentials/credential_provider_chain":242}],239:[function(require,module,exports){
/**
 * The main AWS namespace
 */
var AWS = { util: require('./util') };

/**
 * @api private
 * @!macro [new] nobrowser
 *   @note This feature is not supported in the browser environment of the SDK.
 */
var _hidden = {}; _hidden.toString(); // hack to parse macro

module.exports = AWS;

AWS.util.update(AWS, {

  /**
   * @constant
   */
  VERSION: '2.183.0',

  /**
   * @api private
   */
  Signers: {},

  /**
   * @api private
   */
  Protocol: {
    Json: require('./protocol/json'),
    Query: require('./protocol/query'),
    Rest: require('./protocol/rest'),
    RestJson: require('./protocol/rest_json'),
    RestXml: require('./protocol/rest_xml')
  },

  /**
   * @api private
   */
  XML: {
    Builder: require('./xml/builder'),
    Parser: null // conditionally set based on environment
  },

  /**
   * @api private
   */
  JSON: {
    Builder: require('./json/builder'),
    Parser: require('./json/parser')
  },

  /**
   * @api private
   */
  Model: {
    Api: require('./model/api'),
    Operation: require('./model/operation'),
    Shape: require('./model/shape'),
    Paginator: require('./model/paginator'),
    ResourceWaiter: require('./model/resource_waiter')
  },

  /**
   * @api private
   */
  apiLoader: require('./api_loader')
});

require('./service');
require('./config');

require('./http');
require('./sequential_executor');
require('./event_listeners');
require('./request');
require('./response');
require('./resource_waiter');
require('./signers/request_signer');
require('./param_validator');

/**
 * @readonly
 * @return [AWS.SequentialExecutor] a collection of global event listeners that
 *   are attached to every sent request.
 * @see AWS.Request AWS.Request for a list of events to listen for
 * @example Logging the time taken to send a request
 *   AWS.events.on('send', function startSend(resp) {
 *     resp.startTime = new Date().getTime();
 *   }).on('complete', function calculateTime(resp) {
 *     var time = (new Date().getTime() - resp.startTime) / 1000;
 *     console.log('Request took ' + time + ' seconds');
 *   });
 *
 *   new AWS.S3().listBuckets(); // prints 'Request took 0.285 seconds'
 */
AWS.events = new AWS.SequentialExecutor();

},{"./api_loader":229,"./config":238,"./event_listeners":252,"./http":253,"./json/builder":255,"./json/parser":256,"./model/api":257,"./model/operation":259,"./model/paginator":260,"./model/resource_waiter":261,"./model/shape":262,"./param_validator":263,"./protocol/json":265,"./protocol/query":266,"./protocol/rest":267,"./protocol/rest_json":268,"./protocol/rest_xml":269,"./request":274,"./resource_waiter":275,"./response":276,"./sequential_executor":278,"./service":279,"./signers/request_signer":295,"./util":303,"./xml/builder":305}],240:[function(require,module,exports){
var AWS = require('./core');

/**
 * Represents your AWS security credentials, specifically the
 * {accessKeyId}, {secretAccessKey}, and optional {sessionToken}.
 * Creating a `Credentials` object allows you to pass around your
 * security information to configuration and service objects.
 *
 * Note that this class typically does not need to be constructed manually,
 * as the {AWS.Config} and {AWS.Service} classes both accept simple
 * options hashes with the three keys. These structures will be converted
 * into Credentials objects automatically.
 *
 * ## Expiring and Refreshing Credentials
 *
 * Occasionally credentials can expire in the middle of a long-running
 * application. In this case, the SDK will automatically attempt to
 * refresh the credentials from the storage location if the Credentials
 * class implements the {refresh} method.
 *
 * If you are implementing a credential storage location, you
 * will want to create a subclass of the `Credentials` class and
 * override the {refresh} method. This method allows credentials to be
 * retrieved from the backing store, be it a file system, database, or
 * some network storage. The method should reset the credential attributes
 * on the object.
 *
 * @!attribute expired
 *   @return [Boolean] whether the credentials have been expired and
 *     require a refresh. Used in conjunction with {expireTime}.
 * @!attribute expireTime
 *   @return [Date] a time when credentials should be considered expired. Used
 *     in conjunction with {expired}.
 * @!attribute accessKeyId
 *   @return [String] the AWS access key ID
 * @!attribute secretAccessKey
 *   @return [String] the AWS secret access key
 * @!attribute sessionToken
 *   @return [String] an optional AWS session token
 */
AWS.Credentials = AWS.util.inherit({
  /**
   * A credentials object can be created using positional arguments or an options
   * hash.
   *
   * @overload AWS.Credentials(accessKeyId, secretAccessKey, sessionToken=null)
   *   Creates a Credentials object with a given set of credential information
   *   as positional arguments.
   *   @param accessKeyId [String] the AWS access key ID
   *   @param secretAccessKey [String] the AWS secret access key
   *   @param sessionToken [String] the optional AWS session token
   *   @example Create a credentials object with AWS credentials
   *     var creds = new AWS.Credentials('akid', 'secret', 'session');
   * @overload AWS.Credentials(options)
   *   Creates a Credentials object with a given set of credential information
   *   as an options hash.
   *   @option options accessKeyId [String] the AWS access key ID
   *   @option options secretAccessKey [String] the AWS secret access key
   *   @option options sessionToken [String] the optional AWS session token
   *   @example Create a credentials object with AWS credentials
   *     var creds = new AWS.Credentials({
   *       accessKeyId: 'akid', secretAccessKey: 'secret', sessionToken: 'session'
   *     });
   */
  constructor: function Credentials() {
    // hide secretAccessKey from being displayed with util.inspect
    AWS.util.hideProperties(this, ['secretAccessKey']);

    this.expired = false;
    this.expireTime = null;
    if (arguments.length === 1 && typeof arguments[0] === 'object') {
      var creds = arguments[0].credentials || arguments[0];
      this.accessKeyId = creds.accessKeyId;
      this.secretAccessKey = creds.secretAccessKey;
      this.sessionToken = creds.sessionToken;
    } else {
      this.accessKeyId = arguments[0];
      this.secretAccessKey = arguments[1];
      this.sessionToken = arguments[2];
    }
  },

  /**
   * @return [Integer] the number of seconds before {expireTime} during which
   *   the credentials will be considered expired.
   */
  expiryWindow: 15,

  /**
   * @return [Boolean] whether the credentials object should call {refresh}
   * @note Subclasses should override this method to provide custom refresh
   *   logic.
   */
  needsRefresh: function needsRefresh() {
    var currentTime = AWS.util.date.getDate().getTime();
    var adjustedTime = new Date(currentTime + this.expiryWindow * 1000);

    if (this.expireTime && adjustedTime > this.expireTime) {
      return true;
    } else {
      return this.expired || !this.accessKeyId || !this.secretAccessKey;
    }
  },

  /**
   * Gets the existing credentials, refreshing them if they are not yet loaded
   * or have expired. Users should call this method before using {refresh},
   * as this will not attempt to reload credentials when they are already
   * loaded into the object.
   *
   * @callback callback function(err)
   *   When this callback is called with no error, it means either credentials
   *   do not need to be refreshed or refreshed credentials information has
   *   been loaded into the object (as the `accessKeyId`, `secretAccessKey`,
   *   and `sessionToken` properties).
   *   @param err [Error] if an error occurred, this value will be filled
   */
  get: function get(callback) {
    var self = this;
    if (this.needsRefresh()) {
      this.refresh(function(err) {
        if (!err) self.expired = false; // reset expired flag
        if (callback) callback(err);
      });
    } else if (callback) {
      callback();
    }
  },

  /**
   * @!method  getPromise()
   *   Returns a 'thenable' promise.
   *   Gets the existing credentials, refreshing them if they are not yet loaded
   *   or have expired. Users should call this method before using {refresh},
   *   as this will not attempt to reload credentials when they are already
   *   loaded into the object.
   *
   *   Two callbacks can be provided to the `then` method on the returned promise.
   *   The first callback will be called if the promise is fulfilled, and the second
   *   callback will be called if the promise is rejected.
   *   @callback fulfilledCallback function()
   *     Called if the promise is fulfilled. When this callback is called, it
   *     means either credentials do not need to be refreshed or refreshed
   *     credentials information has been loaded into the object (as the
   *     `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).
   *   @callback rejectedCallback function(err)
   *     Called if the promise is rejected.
   *     @param err [Error] if an error occurred, this value will be filled
   *   @return [Promise] A promise that represents the state of the `get` call.
   *   @example Calling the `getPromise` method.
   *     var promise = credProvider.getPromise();
   *     promise.then(function() { ... }, function(err) { ... });
   */

  /**
   * @!method  refreshPromise()
   *   Returns a 'thenable' promise.
   *   Refreshes the credentials. Users should call {get} before attempting
   *   to forcibly refresh credentials.
   *
   *   Two callbacks can be provided to the `then` method on the returned promise.
   *   The first callback will be called if the promise is fulfilled, and the second
   *   callback will be called if the promise is rejected.
   *   @callback fulfilledCallback function()
   *     Called if the promise is fulfilled. When this callback is called, it
   *     means refreshed credentials information has been loaded into the object
   *     (as the `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).
   *   @callback rejectedCallback function(err)
   *     Called if the promise is rejected.
   *     @param err [Error] if an error occurred, this value will be filled
   *   @return [Promise] A promise that represents the state of the `refresh` call.
   *   @example Calling the `refreshPromise` method.
   *     var promise = credProvider.refreshPromise();
   *     promise.then(function() { ... }, function(err) { ... });
   */

  /**
   * Refreshes the credentials. Users should call {get} before attempting
   * to forcibly refresh credentials.
   *
   * @callback callback function(err)
   *   When this callback is called with no error, it means refreshed
   *   credentials information has been loaded into the object (as the
   *   `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).
   *   @param err [Error] if an error occurred, this value will be filled
   * @note Subclasses should override this class to reset the
   *   {accessKeyId}, {secretAccessKey} and optional {sessionToken}
   *   on the credentials object and then call the callback with
   *   any error information.
   * @see get
   */
  refresh: function refresh(callback) {
    this.expired = false;
    callback();
  }
});

/**
 * @api private
 */
AWS.Credentials.addPromisesToClass = function addPromisesToClass(PromiseDependency) {
  this.prototype.getPromise = AWS.util.promisifyMethod('get', PromiseDependency);
  this.prototype.refreshPromise = AWS.util.promisifyMethod('refresh', PromiseDependency);
};

/**
 * @api private
 */
AWS.Credentials.deletePromisesFromClass = function deletePromisesFromClass() {
  delete this.prototype.getPromise;
  delete this.prototype.refreshPromise;
};

AWS.util.addPromises(AWS.Credentials);

},{"./core":239}],241:[function(require,module,exports){
var AWS = require('../core');
var CognitoIdentity = require('../../clients/cognitoidentity');
var STS = require('../../clients/sts');

/**
 * Represents credentials retrieved from STS Web Identity Federation using
 * the Amazon Cognito Identity service.
 *
 * By default this provider gets credentials using the
 * {AWS.CognitoIdentity.getCredentialsForIdentity} service operation, which
 * requires either an `IdentityId` or an `IdentityPoolId` (Amazon Cognito
 * Identity Pool ID), which is used to call {AWS.CognitoIdentity.getId} to
 * obtain an `IdentityId`. If the identity or identity pool is not configured in
 * the Amazon Cognito Console to use IAM roles with the appropriate permissions,
 * then additionally a `RoleArn` is required containing the ARN of the IAM trust
 * policy for the Amazon Cognito role that the user will log into. If a `RoleArn`
 * is provided, then this provider gets credentials using the
 * {AWS.STS.assumeRoleWithWebIdentity} service operation, after first getting an
 * Open ID token from {AWS.CognitoIdentity.getOpenIdToken}.
 *
 * In addition, if this credential provider is used to provide authenticated
 * login, the `Logins` map may be set to the tokens provided by the respective
 * identity providers. See {constructor} for an example on creating a credentials
 * object with proper property values.
 *
 * ## Refreshing Credentials from Identity Service
 *
 * In addition to AWS credentials expiring after a given amount of time, the
 * login token from the identity provider will also expire. Once this token
 * expires, it will not be usable to refresh AWS credentials, and another
 * token will be needed. The SDK does not manage refreshing of the token value,
 * but this can be done through a "refresh token" supported by most identity
 * providers. Consult the documentation for the identity provider for refreshing
 * tokens. Once the refreshed token is acquired, you should make sure to update
 * this new token in the credentials object's {params} property. The following
 * code will update the WebIdentityToken, assuming you have retrieved an updated
 * token from the identity provider:
 *
 * ```javascript
 * AWS.config.credentials.params.Logins['graph.facebook.com'] = updatedToken;
 * ```
 *
 * Future calls to `credentials.refresh()` will now use the new token.
 *
 * @!attribute params
 *   @return [map] the map of params passed to
 *     {AWS.CognitoIdentity.getId},
 *     {AWS.CognitoIdentity.getOpenIdToken}, and
 *     {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the
 *     `params.WebIdentityToken` property.
 * @!attribute data
 *   @return [map] the raw data response from the call to
 *     {AWS.CognitoIdentity.getCredentialsForIdentity}, or
 *     {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get
 *     access to other properties from the response.
 * @!attribute identityId
 *   @return [String] the Cognito ID returned by the last call to
 *     {AWS.CognitoIdentity.getOpenIdToken}. This ID represents the actual
 *     final resolved identity ID from Amazon Cognito.
 */
AWS.CognitoIdentityCredentials = AWS.util.inherit(AWS.Credentials, {
  /**
   * @api private
   */
  localStorageKey: {
    id: 'aws.cognito.identity-id.',
    providers: 'aws.cognito.identity-providers.'
  },

  /**
   * Creates a new credentials object.
   * @example Creating a new credentials object
   *   AWS.config.credentials = new AWS.CognitoIdentityCredentials({
   *
   *     // either IdentityPoolId or IdentityId is required
   *     // See the IdentityPoolId param for AWS.CognitoIdentity.getID (linked below)
   *     // See the IdentityId param for AWS.CognitoIdentity.getCredentialsForIdentity
   *     // or AWS.CognitoIdentity.getOpenIdToken (linked below)
   *     IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030',
   *     IdentityId: 'us-east-1:128d0a74-c82f-4553-916d-90053e4a8b0f'
   *
   *     // optional, only necessary when the identity pool is not configured
   *     // to use IAM roles in the Amazon Cognito Console
   *     // See the RoleArn param for AWS.STS.assumeRoleWithWebIdentity (linked below)
   *     RoleArn: 'arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity',
   *
   *     // optional tokens, used for authenticated login
   *     // See the Logins param for AWS.CognitoIdentity.getID (linked below)
   *     Logins: {
   *       'graph.facebook.com': 'FBTOKEN',
   *       'www.amazon.com': 'AMAZONTOKEN',
   *       'accounts.google.com': 'GOOGLETOKEN',
   *       'api.twitter.com': 'TWITTERTOKEN',
   *       'www.digits.com': 'DIGITSTOKEN'
   *     },
   *
   *     // optional name, defaults to web-identity
   *     // See the RoleSessionName param for AWS.STS.assumeRoleWithWebIdentity (linked below)
   *     RoleSessionName: 'web',
   *
   *     // optional, only necessary when application runs in a browser
   *     // and multiple users are signed in at once, used for caching
   *     LoginId: 'example@gmail.com'
   *
   *   }, {
   *      // optionally provide configuration to apply to the underlying service clients
   *      // if configuration is not provided, then configuration will be pulled from AWS.config
   *
   *      // region should match the region your identity pool is located in
   *      region: 'us-east-1',
   *
   *      // specify timeout options
   *      httpOptions: {
   *        timeout: 100
   *      }
   *   });
   * @see AWS.CognitoIdentity.getId
   * @see AWS.CognitoIdentity.getCredentialsForIdentity
   * @see AWS.STS.assumeRoleWithWebIdentity
   * @see AWS.CognitoIdentity.getOpenIdToken
   * @see AWS.Config
   * @note If a region is not provided in the global AWS.config, or
   *   specified in the `clientConfig` to the CognitoIdentityCredentials
   *   constructor, you may encounter a 'Missing credentials in config' error
   *   when calling making a service call.
   */
  constructor: function CognitoIdentityCredentials(params, clientConfig) {
    AWS.Credentials.call(this);
    this.expired = true;
    this.params = params;
    this.data = null;
    this._identityId = null;
    this._clientConfig = AWS.util.copy(clientConfig || {});
    this.loadCachedId();
    var self = this;
    Object.defineProperty(this, 'identityId', {
      get: function() {
        self.loadCachedId();
        return self._identityId || self.params.IdentityId;
      },
      set: function(identityId) {
        self._identityId = identityId;
      }
    });
  },

  /**
   * Refreshes credentials using {AWS.CognitoIdentity.getCredentialsForIdentity},
   * or {AWS.STS.assumeRoleWithWebIdentity}.
   *
   * @callback callback function(err)
   *   Called when the STS service responds (or fails). When
   *   this callback is called with no error, it means that the credentials
   *   information has been loaded into the object (as the `accessKeyId`,
   *   `secretAccessKey`, and `sessionToken` properties).
   *   @param err [Error] if an error occurred, this value will be filled
   * @see AWS.Credentials.get
   */
  refresh: function refresh(callback) {
    var self = this;
    self.createClients();
    self.data = null;
    self._identityId = null;
    self.getId(function(err) {
      if (!err) {
        if (!self.params.RoleArn) {
          self.getCredentialsForIdentity(callback);
        } else {
          self.getCredentialsFromSTS(callback);
        }
      } else {
        self.clearIdOnNotAuthorized(err);
        callback(err);
      }
    });
  },

  /**
   * Clears the cached Cognito ID associated with the currently configured
   * identity pool ID. Use this to manually invalidate your cache if
   * the identity pool ID was deleted.
   */
  clearCachedId: function clearCache() {
    this._identityId = null;
    delete this.params.IdentityId;

    var poolId = this.params.IdentityPoolId;
    var loginId = this.params.LoginId || '';
    delete this.storage[this.localStorageKey.id + poolId + loginId];
    delete this.storage[this.localStorageKey.providers + poolId + loginId];
  },

  /**
   * @api private
   */
  clearIdOnNotAuthorized: function clearIdOnNotAuthorized(err) {
    var self = this;
    if (err.code == 'NotAuthorizedException') {
      self.clearCachedId();
    }
  },

  /**
   * Retrieves a Cognito ID, loading from cache if it was already retrieved
   * on this device.
   *
   * @callback callback function(err, identityId)
   *   @param err [Error, null] an error object if the call failed or null if
   *     it succeeded.
   *   @param identityId [String, null] if successful, the callback will return
   *     the Cognito ID.
   * @note If not loaded explicitly, the Cognito ID is loaded and stored in
   *   localStorage in the browser environment of a device.
   * @api private
   */
  getId: function getId(callback) {
    var self = this;
    if (typeof self.params.IdentityId === 'string') {
      return callback(null, self.params.IdentityId);
    }

    self.cognito.getId(function(err, data) {
      if (!err && data.IdentityId) {
        self.params.IdentityId = data.IdentityId;
        callback(null, data.IdentityId);
      } else {
        callback(err);
      }
    });
  },


  /**
   * @api private
   */
  loadCredentials: function loadCredentials(data, credentials) {
    if (!data || !credentials) return;
    credentials.expired = false;
    credentials.accessKeyId = data.Credentials.AccessKeyId;
    credentials.secretAccessKey = data.Credentials.SecretKey;
    credentials.sessionToken = data.Credentials.SessionToken;
    credentials.expireTime = data.Credentials.Expiration;
  },

  /**
   * @api private
   */
  getCredentialsForIdentity: function getCredentialsForIdentity(callback) {
    var self = this;
    self.cognito.getCredentialsForIdentity(function(err, data) {
      if (!err) {
        self.cacheId(data);
        self.data = data;
        self.loadCredentials(self.data, self);
      } else {
        self.clearIdOnNotAuthorized(err);
      }
      callback(err);
    });
  },

  /**
   * @api private
   */
  getCredentialsFromSTS: function getCredentialsFromSTS(callback) {
    var self = this;
    self.cognito.getOpenIdToken(function(err, data) {
      if (!err) {
        self.cacheId(data);
        self.params.WebIdentityToken = data.Token;
        self.webIdentityCredentials.refresh(function(webErr) {
          if (!webErr) {
            self.data = self.webIdentityCredentials.data;
            self.sts.credentialsFrom(self.data, self);
          }
          callback(webErr);
        });
      } else {
        self.clearIdOnNotAuthorized(err);
        callback(err);
      }
    });
  },

  /**
   * @api private
   */
  loadCachedId: function loadCachedId() {
    var self = this;

    // in the browser we source default IdentityId from localStorage
    if (AWS.util.isBrowser() && !self.params.IdentityId) {
      var id = self.getStorage('id');
      if (id && self.params.Logins) {
        var actualProviders = Object.keys(self.params.Logins);
        var cachedProviders =
          (self.getStorage('providers') || '').split(',');

        // only load ID if at least one provider used this ID before
        var intersect = cachedProviders.filter(function(n) {
          return actualProviders.indexOf(n) !== -1;
        });
        if (intersect.length !== 0) {
          self.params.IdentityId = id;
        }
      } else if (id) {
        self.params.IdentityId = id;
      }
    }
  },

  /**
   * @api private
   */
  createClients: function() {
    var clientConfig = this._clientConfig;
    this.webIdentityCredentials = this.webIdentityCredentials ||
      new AWS.WebIdentityCredentials(this.params, clientConfig);
    if (!this.cognito) {
      var cognitoConfig = AWS.util.merge({}, clientConfig);
      cognitoConfig.params = this.params;
      this.cognito = new CognitoIdentity(cognitoConfig);
    }
    this.sts = this.sts || new STS(clientConfig);
  },

  /**
   * @api private
   */
  cacheId: function cacheId(data) {
    this._identityId = data.IdentityId;
    this.params.IdentityId = this._identityId;

    // cache this IdentityId in browser localStorage if possible
    if (AWS.util.isBrowser()) {
      this.setStorage('id', data.IdentityId);

      if (this.params.Logins) {
        this.setStorage('providers', Object.keys(this.params.Logins).join(','));
      }
    }
  },

  /**
   * @api private
   */
  getStorage: function getStorage(key) {
    return this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')];
  },

  /**
   * @api private
   */
  setStorage: function setStorage(key, val) {
    try {
      this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')] = val;
    } catch (_) {}
  },

  /**
   * @api private
   */
  storage: (function() {
    try {
      var storage = AWS.util.isBrowser() && window.localStorage !== null && typeof window.localStorage === 'object' ?
          window.localStorage : {};

      // Test set/remove which would throw an error in Safari's private browsing
      storage['aws.test-storage'] = 'foobar';
      delete storage['aws.test-storage'];

      return storage;
    } catch (_) {
      return {};
    }
  })()
});

},{"../../clients/cognitoidentity":179,"../../clients/sts":226,"../core":239}],242:[function(require,module,exports){
var AWS = require('../core');

/**
 * Creates a credential provider chain that searches for AWS credentials
 * in a list of credential providers specified by the {providers} property.
 *
 * By default, the chain will use the {defaultProviders} to resolve credentials.
 * These providers will look in the environment using the
 * {AWS.EnvironmentCredentials} class with the 'AWS' and 'AMAZON' prefixes.
 *
 * ## Setting Providers
 *
 * Each provider in the {providers} list should be a function that returns
 * a {AWS.Credentials} object, or a hardcoded credentials object. The function
 * form allows for delayed execution of the credential construction.
 *
 * ## Resolving Credentials from a Chain
 *
 * Call {resolve} to return the first valid credential object that can be
 * loaded by the provider chain.
 *
 * For example, to resolve a chain with a custom provider that checks a file
 * on disk after the set of {defaultProviders}:
 *
 * ```javascript
 * var diskProvider = new AWS.FileSystemCredentials('./creds.json');
 * var chain = new AWS.CredentialProviderChain();
 * chain.providers.push(diskProvider);
 * chain.resolve();
 * ```
 *
 * The above code will return the `diskProvider` object if the
 * file contains credentials and the `defaultProviders` do not contain
 * any credential settings.
 *
 * @!attribute providers
 *   @return [Array<AWS.Credentials, Function>]
 *     a list of credentials objects or functions that return credentials
 *     objects. If the provider is a function, the function will be
 *     executed lazily when the provider needs to be checked for valid
 *     credentials. By default, this object will be set to the
 *     {defaultProviders}.
 *   @see defaultProviders
 */
AWS.CredentialProviderChain = AWS.util.inherit(AWS.Credentials, {

  /**
   * Creates a new CredentialProviderChain with a default set of providers
   * specified by {defaultProviders}.
   */
  constructor: function CredentialProviderChain(providers) {
    if (providers) {
      this.providers = providers;
    } else {
      this.providers = AWS.CredentialProviderChain.defaultProviders.slice(0);
    }
  },

  /**
   * @!method  resolvePromise()
   *   Returns a 'thenable' promise.
   *   Resolves the provider chain by searching for the first set of
   *   credentials in {providers}.
   *
   *   Two callbacks can be provided to the `then` method on the returned promise.
   *   The first callback will be called if the promise is fulfilled, and the second
   *   callback will be called if the promise is rejected.
   *   @callback fulfilledCallback function(credentials)
   *     Called if the promise is fulfilled and the provider resolves the chain
   *     to a credentials object
   *     @param credentials [AWS.Credentials] the credentials object resolved
   *       by the provider chain.
   *   @callback rejectedCallback function(error)
   *     Called if the promise is rejected.
   *     @param err [Error] the error object returned if no credentials are found.
   *   @return [Promise] A promise that represents the state of the `resolve` method call.
   *   @example Calling the `resolvePromise` method.
   *     var promise = chain.resolvePromise();
   *     promise.then(function(credentials) { ... }, function(err) { ... });
   */

  /**
   * Resolves the provider chain by searching for the first set of
   * credentials in {providers}.
   *
   * @callback callback function(err, credentials)
   *   Called when the provider resolves the chain to a credentials object
   *   or null if no credentials can be found.
   *
   *   @param err [Error] the error object returned if no credentials are
   *     found.
   *   @param credentials [AWS.Credentials] the credentials object resolved
   *     by the provider chain.
   * @return [AWS.CredentialProviderChain] the provider, for chaining.
   */
  resolve: function resolve(callback) {
    if (this.providers.length === 0) {
      callback(new Error('No providers'));
      return this;
    }

    var index = 0;
    var providers = this.providers.slice(0);

    function resolveNext(err, creds) {
      if ((!err && creds) || index === providers.length) {
        callback(err, creds);
        return;
      }

      var provider = providers[index++];
      if (typeof provider === 'function') {
        creds = provider.call();
      } else {
        creds = provider;
      }

      if (creds.get) {
        creds.get(function(getErr) {
          resolveNext(getErr, getErr ? null : creds);
        });
      } else {
        resolveNext(null, creds);
      }
    }

    resolveNext();
    return this;
  }
});

/**
 * The default set of providers used by a vanilla CredentialProviderChain.
 *
 * In the browser:
 *
 * ```javascript
 * AWS.CredentialProviderChain.defaultProviders = []
 * ```
 *
 * In Node.js:
 *
 * ```javascript
 * AWS.CredentialProviderChain.defaultProviders = [
 *   function () { return new AWS.EnvironmentCredentials('AWS'); },
 *   function () { return new AWS.EnvironmentCredentials('AMAZON'); },
 *   function () { return new AWS.SharedIniFileCredentials(); },
 *   function () {
 *     // if AWS_CONTAINER_CREDENTIALS_RELATIVE_URI is set
 *       return new AWS.ECSCredentials();
 *     // else
 *       return new AWS.EC2MetadataCredentials();
 *   }
 * ]
 * ```
 */
AWS.CredentialProviderChain.defaultProviders = [];

/**
 * @api private
 */
AWS.CredentialProviderChain.addPromisesToClass = function addPromisesToClass(PromiseDependency) {
  this.prototype.resolvePromise = AWS.util.promisifyMethod('resolve', PromiseDependency);
};

/**
 * @api private
 */
AWS.CredentialProviderChain.deletePromisesFromClass = function deletePromisesFromClass() {
  delete this.prototype.resolvePromise;
};

AWS.util.addPromises(AWS.CredentialProviderChain);

},{"../core":239}],243:[function(require,module,exports){
var AWS = require('../core');
var STS = require('../../clients/sts');

/**
 * Represents credentials retrieved from STS SAML support.
 *
 * By default this provider gets credentials using the
 * {AWS.STS.assumeRoleWithSAML} service operation. This operation
 * requires a `RoleArn` containing the ARN of the IAM trust policy for the
 * application for which credentials will be given, as well as a `PrincipalArn`
 * representing the ARN for the SAML identity provider. In addition, the
 * `SAMLAssertion` must be set to the token provided by the identity
 * provider. See {constructor} for an example on creating a credentials
 * object with proper `RoleArn`, `PrincipalArn`, and `SAMLAssertion` values.
 *
 * ## Refreshing Credentials from Identity Service
 *
 * In addition to AWS credentials expiring after a given amount of time, the
 * login token from the identity provider will also expire. Once this token
 * expires, it will not be usable to refresh AWS credentials, and another
 * token will be needed. The SDK does not manage refreshing of the token value,
 * but this can be done through a "refresh token" supported by most identity
 * providers. Consult the documentation for the identity provider for refreshing
 * tokens. Once the refreshed token is acquired, you should make sure to update
 * this new token in the credentials object's {params} property. The following
 * code will update the SAMLAssertion, assuming you have retrieved an updated
 * token from the identity provider:
 *
 * ```javascript
 * AWS.config.credentials.params.SAMLAssertion = updatedToken;
 * ```
 *
 * Future calls to `credentials.refresh()` will now use the new token.
 *
 * @!attribute params
 *   @return [map] the map of params passed to
 *     {AWS.STS.assumeRoleWithSAML}. To update the token, set the
 *     `params.SAMLAssertion` property.
 */
AWS.SAMLCredentials = AWS.util.inherit(AWS.Credentials, {
  /**
   * Creates a new credentials object.
   * @param (see AWS.STS.assumeRoleWithSAML)
   * @example Creating a new credentials object
   *   AWS.config.credentials = new AWS.SAMLCredentials({
   *     RoleArn: 'arn:aws:iam::1234567890:role/SAMLRole',
   *     PrincipalArn: 'arn:aws:iam::1234567890:role/SAMLPrincipal',
   *     SAMLAssertion: 'base64-token', // base64-encoded token from IdP
   *   });
   * @see AWS.STS.assumeRoleWithSAML
   */
  constructor: function SAMLCredentials(params) {
    AWS.Credentials.call(this);
    this.expired = true;
    this.params = params;
  },

  /**
   * Refreshes credentials using {AWS.STS.assumeRoleWithSAML}
   *
   * @callback callback function(err)
   *   Called when the STS service responds (or fails). When
   *   this callback is called with no error, it means that the credentials
   *   information has been loaded into the object (as the `accessKeyId`,
   *   `secretAccessKey`, and `sessionToken` properties).
   *   @param err [Error] if an error occurred, this value will be filled
   * @see get
   */
  refresh: function refresh(callback) {
    var self = this;
    self.createClients();
    if (!callback) callback = function(err) { if (err) throw err; };

    self.service.assumeRoleWithSAML(function (err, data) {
      if (!err) {
        self.service.credentialsFrom(data, self);
      }
      callback(err);
    });
  },

  /**
   * @api private
   */
  createClients: function() {
    this.service = this.service || new STS({params: this.params});
  }

});

},{"../../clients/sts":226,"../core":239}],244:[function(require,module,exports){
var AWS = require('../core');
var STS = require('../../clients/sts');

/**
 * Represents temporary credentials retrieved from {AWS.STS}. Without any
 * extra parameters, credentials will be fetched from the
 * {AWS.STS.getSessionToken} operation. If an IAM role is provided, the
 * {AWS.STS.assumeRole} operation will be used to fetch credentials for the
 * role instead.
 *
 * To setup temporary credentials, configure a set of master credentials
 * using the standard credentials providers (environment, EC2 instance metadata,
 * or from the filesystem), then set the global credentials to a new
 * temporary credentials object:
 *
 * ```javascript
 * // Note that environment credentials are loaded by default,
 * // the following line is shown for clarity:
 * AWS.config.credentials = new AWS.EnvironmentCredentials('AWS');
 *
 * // Now set temporary credentials seeded from the master credentials
 * AWS.config.credentials = new AWS.TemporaryCredentials();
 *
 * // subsequent requests will now use temporary credentials from AWS STS.
 * new AWS.S3().listBucket(function(err, data) { ... });
 * ```
 *
 * @!attribute masterCredentials
 *   @return [AWS.Credentials] the master (non-temporary) credentials used to
 *     get and refresh temporary credentials from AWS STS.
 * @note (see constructor)
 */
AWS.TemporaryCredentials = AWS.util.inherit(AWS.Credentials, {
  /**
   * Creates a new temporary credentials object.
   *
   * @note In order to create temporary credentials, you first need to have
   *   "master" credentials configured in {AWS.Config.credentials}. These
   *   master credentials are necessary to retrieve the temporary credentials,
   *   as well as refresh the credentials when they expire.
   * @param params [map] a map of options that are passed to the
   *   {AWS.STS.assumeRole} or {AWS.STS.getSessionToken} operations.
   *   If a `RoleArn` parameter is passed in, credentials will be based on the
   *   IAM role.
   * @param masterCredentials [AWS.Credentials] the master (non-temporary) credentials
   *  used to get and refresh temporary credentials from AWS STS.
   * @example Creating a new credentials object for generic temporary credentials
   *   AWS.config.credentials = new AWS.TemporaryCredentials();
   * @example Creating a new credentials object for an IAM role
   *   AWS.config.credentials = new AWS.TemporaryCredentials({
   *     RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials',
   *   });
   * @see AWS.STS.assumeRole
   * @see AWS.STS.getSessionToken
   */
  constructor: function TemporaryCredentials(params, masterCredentials) {
    AWS.Credentials.call(this);
    this.loadMasterCredentials(masterCredentials);
    this.expired = true;

    this.params = params || {};
    if (this.params.RoleArn) {
      this.params.RoleSessionName =
        this.params.RoleSessionName || 'temporary-credentials';
    }
  },

  /**
   * Refreshes credentials using {AWS.STS.assumeRole} or
   * {AWS.STS.getSessionToken}, depending on whether an IAM role ARN was passed
   * to the credentials {constructor}.
   *
   * @callback callback function(err)
   *   Called when the STS service responds (or fails). When
   *   this callback is called with no error, it means that the credentials
   *   information has been loaded into the object (as the `accessKeyId`,
   *   `secretAccessKey`, and `sessionToken` properties).
   *   @param err [Error] if an error occurred, this value will be filled
   * @see get
   */
  refresh: function refresh(callback) {
    var self = this;
    self.createClients();
    if (!callback) callback = function(err) { if (err) throw err; };

    self.masterCredentials.get(function() {
      self.service.config.credentials = self.masterCredentials;
      var operation = self.params.RoleArn ?
        self.service.assumeRole : self.service.getSessionToken;
      operation.call(self.service, function (err, data) {
        if (!err) {
          self.service.credentialsFrom(data, self);
        }
        callback(err);
      });
    });
  },

  /**
   * @api private
   */
  loadMasterCredentials: function loadMasterCredentials(masterCredentials) {
    this.masterCredentials = masterCredentials || AWS.config.credentials;
    while (this.masterCredentials.masterCredentials) {
      this.masterCredentials = this.masterCredentials.masterCredentials;
    }

    if (typeof this.masterCredentials.get !== 'function') {
      this.masterCredentials = new AWS.Credentials(this.masterCredentials);
    }
  },

  /**
   * @api private
   */
  createClients: function() {
    this.service = this.service || new STS({params: this.params});
  }

});

},{"../../clients/sts":226,"../core":239}],245:[function(require,module,exports){
var AWS = require('../core');
var STS = require('../../clients/sts');

/**
 * Represents credentials retrieved from STS Web Identity Federation support.
 *
 * By default this provider gets credentials using the
 * {AWS.STS.assumeRoleWithWebIdentity} service operation. This operation
 * requires a `RoleArn` containing the ARN of the IAM trust policy for the
 * application for which credentials will be given. In addition, the
 * `WebIdentityToken` must be set to the token provided by the identity
 * provider. See {constructor} for an example on creating a credentials
 * object with proper `RoleArn` and `WebIdentityToken` values.
 *
 * ## Refreshing Credentials from Identity Service
 *
 * In addition to AWS credentials expiring after a given amount of time, the
 * login token from the identity provider will also expire. Once this token
 * expires, it will not be usable to refresh AWS credentials, and another
 * token will be needed. The SDK does not manage refreshing of the token value,
 * but this can be done through a "refresh token" supported by most identity
 * providers. Consult the documentation for the identity provider for refreshing
 * tokens. Once the refreshed token is acquired, you should make sure to update
 * this new token in the credentials object's {params} property. The following
 * code will update the WebIdentityToken, assuming you have retrieved an updated
 * token from the identity provider:
 *
 * ```javascript
 * AWS.config.credentials.params.WebIdentityToken = updatedToken;
 * ```
 *
 * Future calls to `credentials.refresh()` will now use the new token.
 *
 * @!attribute params
 *   @return [map] the map of params passed to
 *     {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the
 *     `params.WebIdentityToken` property.
 * @!attribute data
 *   @return [map] the raw data response from the call to
 *     {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get
 *     access to other properties from the response.
 */
AWS.WebIdentityCredentials = AWS.util.inherit(AWS.Credentials, {
  /**
   * Creates a new credentials object.
   * @param (see AWS.STS.assumeRoleWithWebIdentity)
   * @example Creating a new credentials object
   *   AWS.config.credentials = new AWS.WebIdentityCredentials({
   *     RoleArn: 'arn:aws:iam::1234567890:role/WebIdentity',
   *     WebIdentityToken: 'ABCDEFGHIJKLMNOP', // token from identity service
   *     RoleSessionName: 'web' // optional name, defaults to web-identity
   *   }, {
   *     // optionally provide configuration to apply to the underlying AWS.STS service client
   *     // if configuration is not provided, then configuration will be pulled from AWS.config
   *
   *     // specify timeout options
   *     httpOptions: {
   *       timeout: 100
   *     }
   *   });
   * @see AWS.STS.assumeRoleWithWebIdentity
   * @see AWS.Config
   */
  constructor: function WebIdentityCredentials(params, clientConfig) {
    AWS.Credentials.call(this);
    this.expired = true;
    this.params = params;
    this.params.RoleSessionName = this.params.RoleSessionName || 'web-identity';
    this.data = null;
    this._clientConfig = AWS.util.copy(clientConfig || {});
  },

  /**
   * Refreshes credentials using {AWS.STS.assumeRoleWithWebIdentity}
   *
   * @callback callback function(err)
   *   Called when the STS service responds (or fails). When
   *   this callback is called with no error, it means that the credentials
   *   information has been loaded into the object (as the `accessKeyId`,
   *   `secretAccessKey`, and `sessionToken` properties).
   *   @param err [Error] if an error occurred, this value will be filled
   * @see get
   */
  refresh: function refresh(callback) {
    var self = this;
    self.createClients();
    if (!callback) callback = function(err) { if (err) throw err; };

    self.service.assumeRoleWithWebIdentity(function (err, data) {
      self.data = null;
      if (!err) {
        self.data = data;
        self.service.credentialsFrom(data, self);
      }
      callback(err);
    });
  },

  /**
   * @api private
   */
  createClients: function() {
    if (!this.service) {
      var stsConfig = AWS.util.merge({}, this._clientConfig);
      stsConfig.params = this.params;
      this.service = new STS(stsConfig);
    }
  }

});

},{"../../clients/sts":226,"../core":239}],246:[function(require,module,exports){
var AWS = require('../core');
var util = AWS.util;
var typeOf = require('./types').typeOf;
var DynamoDBSet = require('./set');
var NumberValue = require('./numberValue');

AWS.DynamoDB.Converter = {
  /**
   * Convert a JavaScript value to its equivalent DynamoDB AttributeValue type
   *
   * @param data [any] The data to convert to a DynamoDB AttributeValue
   * @param options [map]
   * @option options convertEmptyValues [Boolean] Whether to automatically
   *                                              convert empty strings, blobs,
   *                                              and sets to `null`
   * @option options wrapNumbers [Boolean]  Whether to return numbers as a
   *                                        NumberValue object instead of
   *                                        converting them to native JavaScript
   *                                        numbers. This allows for the safe
   *                                        round-trip transport of numbers of
   *                                        arbitrary size.
   * @return [map] An object in the Amazon DynamoDB AttributeValue format
   *
   * @see AWS.DynamoDB.Converter.marshall AWS.DynamoDB.Converter.marshall to
   *    convert entire records (rather than individual attributes)
   */
  input: function convertInput(data, options) {
    options = options || {};
    var type = typeOf(data);
    if (type === 'Object') {
      return formatMap(data, options);
    } else if (type === 'Array') {
      return formatList(data, options);
    } else if (type === 'Set') {
      return formatSet(data, options);
    } else if (type === 'String') {
      if (data.length === 0 && options.convertEmptyValues) {
        return convertInput(null);
      }
      return { S: data };
    } else if (type === 'Number' || type === 'NumberValue') {
      return { N: data.toString() };
    } else if (type === 'Binary') {
      if (data.length === 0 && options.convertEmptyValues) {
        return convertInput(null);
      }
      return { B: data };
    } else if (type === 'Boolean') {
      return { BOOL: data };
    } else if (type === 'null') {
      return { NULL: true };
    } else if (type !== 'undefined' && type !== 'Function') {
      // this value has a custom constructor
      return formatMap(data, options);
    }
  },

  /**
   * Convert a JavaScript object into a DynamoDB record.
   *
   * @param data [any] The data to convert to a DynamoDB record
   * @param options [map]
   * @option options convertEmptyValues [Boolean] Whether to automatically
   *                                              convert empty strings, blobs,
   *                                              and sets to `null`
   * @option options wrapNumbers [Boolean]  Whether to return numbers as a
   *                                        NumberValue object instead of
   *                                        converting them to native JavaScript
   *                                        numbers. This allows for the safe
   *                                        round-trip transport of numbers of
   *                                        arbitrary size.
   *
   * @return [map] An object in the DynamoDB record format.
   *
   * @example Convert a JavaScript object into a DynamoDB record
   *  var marshalled = AWS.DynamoDB.Converter.marshall({
   *    string: 'foo',
   *    list: ['fizz', 'buzz', 'pop'],
   *    map: {
   *      nestedMap: {
   *        key: 'value',
   *      }
   *    },
   *    number: 123,
   *    nullValue: null,
   *    boolValue: true,
   *    stringSet: new DynamoDBSet(['foo', 'bar', 'baz'])
   *  });
   */
  marshall: function marshallItem(data, options) {
    return AWS.DynamoDB.Converter.input(data, options).M;
  },

  /**
   * Convert a DynamoDB AttributeValue object to its equivalent JavaScript type.
   *
   * @param data [map] An object in the Amazon DynamoDB AttributeValue format
   * @param options [map]
   * @option options convertEmptyValues [Boolean] Whether to automatically
   *                                              convert empty strings, blobs,
   *                                              and sets to `null`
   * @option options wrapNumbers [Boolean]  Whether to return numbers as a
   *                                        NumberValue object instead of
   *                                        converting them to native JavaScript
   *                                        numbers. This allows for the safe
   *                                        round-trip transport of numbers of
   *                                        arbitrary size.
   *
   * @return [Object|Array|String|Number|Boolean|null]
   *
   * @see AWS.DynamoDB.Converter.unmarshall AWS.DynamoDB.Converter.unmarshall to
   *    convert entire records (rather than individual attributes)
   */
  output: function convertOutput(data, options) {
    options = options || {};
    var list, map, i;
    for (var type in data) {
      var values = data[type];
      if (type === 'M') {
        map = {};
        for (var key in values) {
          map[key] = convertOutput(values[key], options);
        }
        return map;
      } else if (type === 'L') {
        list = [];
        for (i = 0; i < values.length; i++) {
          list.push(convertOutput(values[i], options));
        }
        return list;
      } else if (type === 'SS') {
        list = [];
        for (i = 0; i < values.length; i++) {
          list.push(values[i] + '');
        }
        return new DynamoDBSet(list);
      } else if (type === 'NS') {
        list = [];
        for (i = 0; i < values.length; i++) {
          list.push(convertNumber(values[i], options.wrapNumbers));
        }
        return new DynamoDBSet(list);
      } else if (type === 'BS') {
        list = [];
        for (i = 0; i < values.length; i++) {
          list.push(new util.Buffer(values[i]));
        }
        return new DynamoDBSet(list);
      } else if (type === 'S') {
        return values + '';
      } else if (type === 'N') {
        return convertNumber(values, options.wrapNumbers);
      } else if (type === 'B') {
        return new util.Buffer(values);
      } else if (type === 'BOOL') {
        return (values === 'true' || values === 'TRUE' || values === true);
      } else if (type === 'NULL') {
        return null;
      }
    }
  },

  /**
   * Convert a DynamoDB record into a JavaScript object.
   *
   * @param data [any] The DynamoDB record
   * @param options [map]
   * @option options convertEmptyValues [Boolean] Whether to automatically
   *                                              convert empty strings, blobs,
   *                                              and sets to `null`
   * @option options wrapNumbers [Boolean]  Whether to return numbers as a
   *                                        NumberValue object instead of
   *                                        converting them to native JavaScript
   *                                        numbers. This allows for the safe
   *                                        round-trip transport of numbers of
   *                                        arbitrary size.
   *
   * @return [map] An object whose properties have been converted from
   *    DynamoDB's AttributeValue format into their corresponding native
   *    JavaScript types.
   *
   * @example Convert a record received from a DynamoDB stream
   *  var unmarshalled = AWS.DynamoDB.Converter.unmarshall({
   *    string: {S: 'foo'},
   *    list: {L: [{S: 'fizz'}, {S: 'buzz'}, {S: 'pop'}]},
   *    map: {
   *      M: {
   *        nestedMap: {
   *          M: {
   *            key: {S: 'value'}
   *          }
   *        }
   *      }
   *    },
   *    number: {N: '123'},
   *    nullValue: {NULL: true},
   *    boolValue: {BOOL: true}
   *  });
   */
  unmarshall: function unmarshall(data, options) {
    return AWS.DynamoDB.Converter.output({M: data}, options);
  }
};

/**
 * @api private
 * @param data [Array]
 * @param options [map]
 */
function formatList(data, options) {
  var list = {L: []};
  for (var i = 0; i < data.length; i++) {
    list['L'].push(AWS.DynamoDB.Converter.input(data[i], options));
  }
  return list;
}

/**
 * @api private
 * @param value [String]
 * @param wrapNumbers [Boolean]
 */
function convertNumber(value, wrapNumbers) {
  return wrapNumbers ? new NumberValue(value) : Number(value);
}

/**
 * @api private
 * @param data [map]
 * @param options [map]
 */
function formatMap(data, options) {
  var map = {M: {}};
  for (var key in data) {
    var formatted = AWS.DynamoDB.Converter.input(data[key], options);
    if (formatted !== void 0) {
      map['M'][key] = formatted;
    }
  }
  return map;
}

/**
 * @api private
 */
function formatSet(data, options) {
  options = options || {};
  var values = data.values;
  if (options.convertEmptyValues) {
    values = filterEmptySetValues(data);
    if (values.length === 0) {
      return AWS.DynamoDB.Converter.input(null);
    }
  }

  var map = {};
  switch (data.type) {
    case 'String': map['SS'] = values; break;
    case 'Binary': map['BS'] = values; break;
    case 'Number': map['NS'] = values.map(function (value) {
      return value.toString();
    });
  }
  return map;
}

/**
 * @api private
 */
function filterEmptySetValues(set) {
    var nonEmptyValues = [];
    var potentiallyEmptyTypes = {
        String: true,
        Binary: true,
        Number: false
    };
    if (potentiallyEmptyTypes[set.type]) {
        for (var i = 0; i < set.values.length; i++) {
            if (set.values[i].length === 0) {
                continue;
            }
            nonEmptyValues.push(set.values[i]);
        }

        return nonEmptyValues;
    }

    return set.values;
}

module.exports = AWS.DynamoDB.Converter;

},{"../core":239,"./numberValue":248,"./set":249,"./types":251}],247:[function(require,module,exports){
var AWS = require('../core');
var Translator = require('./translator');
var DynamoDBSet = require('./set');

/**
 * The document client simplifies working with items in Amazon DynamoDB
 * by abstracting away the notion of attribute values. This abstraction
 * annotates native JavaScript types supplied as input parameters, as well
 * as converts annotated response data to native JavaScript types.
 *
 * ## Marshalling Input and Unmarshalling Response Data
 *
 * The document client affords developers the use of native JavaScript types
 * instead of `AttributeValue`s to simplify the JavaScript development
 * experience with Amazon DynamoDB. JavaScript objects passed in as parameters
 * are marshalled into `AttributeValue` shapes required by Amazon DynamoDB.
 * Responses from DynamoDB are unmarshalled into plain JavaScript objects
 * by the `DocumentClient`. The `DocumentClient`, does not accept
 * `AttributeValue`s in favor of native JavaScript types.
 *
 * |                             JavaScript Type                            | DynamoDB AttributeValue |
 * |:----------------------------------------------------------------------:|-------------------------|
 * | String                                                                 | S                       |
 * | Number                                                                 | N                       |
 * | Boolean                                                                | BOOL                    |
 * | null                                                                   | NULL                    |
 * | Array                                                                  | L                       |
 * | Object                                                                 | M                       |
 * | Buffer, File, Blob, ArrayBuffer, DataView, and JavaScript typed arrays | B                       |
 *
 * ## Support for Sets
 *
 * The `DocumentClient` offers a convenient way to create sets from
 * JavaScript Arrays. The type of set is inferred from the first element
 * in the array. DynamoDB supports string, number, and binary sets. To
 * learn more about supported types see the
 * [Amazon DynamoDB Data Model Documentation](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html)
 * For more information see {AWS.DynamoDB.DocumentClient.createSet}
 *
 */
AWS.DynamoDB.DocumentClient = AWS.util.inherit({

  /**
   * @api private
   */
  operations: {
    batchGetItem: 'batchGet',
    batchWriteItem: 'batchWrite',
    putItem: 'put',
    getItem: 'get',
    deleteItem: 'delete',
    updateItem: 'update',
    scan: 'scan',
    query: 'query'
  },

  /**
   * Creates a DynamoDB document client with a set of configuration options.
   *
   * @option options params [map] An optional map of parameters to bind to every
   *   request sent by this service object.
   * @option options service [AWS.DynamoDB] An optional pre-configured instance
   *  of the AWS.DynamoDB service object to use for requests. The object may
   *  bound parameters used by the document client.
   * @option options convertEmptyValues [Boolean] set to true if you would like
   *  the document client to convert empty values (0-length strings, binary
   *  buffers, and sets) to be converted to NULL types when persisting to
   *  DynamoDB.
   * @see AWS.DynamoDB.constructor
   *
   */
  constructor: function DocumentClient(options) {
    var self = this;
    self.options = options || {};
    self.configure(self.options);
  },

  /**
   * @api private
   */
  configure: function configure(options) {
    var self = this;
    self.service = options.service;
    self.bindServiceObject(options);
    self.attrValue = options.attrValue =
      self.service.api.operations.putItem.input.members.Item.value.shape;
  },

  /**
   * @api private
   */
  bindServiceObject: function bindServiceObject(options) {
    var self = this;
    options = options || {};

    if (!self.service) {
      self.service = new AWS.DynamoDB(options);
    } else {
      var config = AWS.util.copy(self.service.config);
      self.service = new self.service.constructor.__super__(config);
      self.service.config.params =
        AWS.util.merge(self.service.config.params || {}, options.params);
    }
  },

  /**
   * Returns the attributes of one or more items from one or more tables
   * by delegating to `AWS.DynamoDB.batchGetItem()`.
   *
   * Supply the same parameters as {AWS.DynamoDB.batchGetItem} with
   * `AttributeValue`s substituted by native JavaScript types.
   *
   * @see AWS.DynamoDB.batchGetItem
   * @example Get items from multiple tables
   *  var params = {
   *    RequestItems: {
   *      'Table-1': {
   *        Keys: [
   *          {
   *             HashKey: 'haskey',
   *             NumberRangeKey: 1
   *          }
   *        ]
   *      },
   *      'Table-2': {
   *        Keys: [
   *          { foo: 'bar' },
   *        ]
   *      }
   *    }
   *  };
   *
   *  var documentClient = new AWS.DynamoDB.DocumentClient();
   *
   *  documentClient.batchGet(params, function(err, data) {
   *    if (err) console.log(err);
   *    else console.log(data);
   *  });
   *
   */
  batchGet: function(params, callback) {
    var self = this;
    var request = self.service.batchGetItem(params);
    self.setupRequest(request);
    self.setupResponse(request);
    if (typeof callback === 'function') {
      request.send(callback);
    }
    return request;
  },

  /**
   * Puts or deletes multiple items in one or more tables by delegating
   * to `AWS.DynamoDB.batchWriteItem()`.
   *
   * Supply the same parameters as {AWS.DynamoDB.batchWriteItem} with
   * `AttributeValue`s substituted by native JavaScript types.
   *
   * @see AWS.DynamoDB.batchWriteItem
   * @example Write to and delete from a table
   *  var params = {
   *    RequestItems: {
   *      'Table-1': [
   *        {
   *          DeleteRequest: {
   *            Key: { HashKey: 'someKey' }
   *          }
   *        },
   *        {
   *          PutRequest: {
   *            Item: {
   *              HashKey: 'anotherKey',
   *              NumAttribute: 1,
   *              BoolAttribute: true,
   *              ListAttribute: [1, 'two', false],
   *              MapAttribute: { foo: 'bar' }
   *            }
   *          }
   *        }
   *      ]
   *    }
   *  };
   *
   *  var documentClient = new AWS.DynamoDB.DocumentClient();
   *
   *  documentClient.batchWrite(params, function(err, data) {
   *    if (err) console.log(err);
   *    else console.log(data);
   *  });
   *
   */
  batchWrite: function(params, callback) {
    var self = this;
    var request = self.service.batchWriteItem(params);
    self.setupRequest(request);
    self.setupResponse(request);
    if (typeof callback === 'function') {
      request.send(callback);
    }
    return request;
  },

  /**
   * Deletes a single item in a table by primary key by delegating to
   * `AWS.DynamoDB.deleteItem()`
   *
   * Supply the same parameters as {AWS.DynamoDB.deleteItem} with
   * `AttributeValue`s substituted by native JavaScript types.
   *
   * @see AWS.DynamoDB.deleteItem
   * @example Delete an item from a table
   *  var params = {
   *    TableName : 'Table',
   *    Key: {
   *      HashKey: 'hashkey',
   *      NumberRangeKey: 1
   *    }
   *  };
   *
   *  var documentClient = new AWS.DynamoDB.DocumentClient();
   *
   *  documentClient.delete(params, function(err, data) {
   *    if (err) console.log(err);
   *    else console.log(data);
   *  });
   *
   */
  delete: function(params, callback) {
    var self = this;
    var request = self.service.deleteItem(params);
    self.setupRequest(request);
    self.setupResponse(request);
    if (typeof callback === 'function') {
      request.send(callback);
    }
    return request;
  },

  /**
   * Returns a set of attributes for the item with the given primary key
   * by delegating to `AWS.DynamoDB.getItem()`.
   *
   * Supply the same parameters as {AWS.DynamoDB.getItem} with
   * `AttributeValue`s substituted by native JavaScript types.
   *
   * @see AWS.DynamoDB.getItem
   * @example Get an item from a table
   *  var params = {
   *    TableName : 'Table',
   *    Key: {
   *      HashKey: 'hashkey'
   *    }
   *  };
   *
   *  var documentClient = new AWS.DynamoDB.DocumentClient();
   *
   *  documentClient.get(params, function(err, data) {
   *    if (err) console.log(err);
   *    else console.log(data);
   *  });
   *
   */
  get: function(params, callback) {
    var self = this;
    var request = self.service.getItem(params);
    self.setupRequest(request);
    self.setupResponse(request);
    if (typeof callback === 'function') {
      request.send(callback);
    }
    return request;
  },

  /**
   * Creates a new item, or replaces an old item with a new item by
   * delegating to `AWS.DynamoDB.putItem()`.
   *
   * Supply the same parameters as {AWS.DynamoDB.putItem} with
   * `AttributeValue`s substituted by native JavaScript types.
   *
   * @see AWS.DynamoDB.putItem
   * @example Create a new item in a table
   *  var params = {
   *    TableName : 'Table',
   *    Item: {
   *       HashKey: 'haskey',
   *       NumAttribute: 1,
   *       BoolAttribute: true,
   *       ListAttribute: [1, 'two', false],
   *       MapAttribute: { foo: 'bar'},
   *       NullAttribute: null
   *    }
   *  };
   *
   *  var documentClient = new AWS.DynamoDB.DocumentClient();
   *
   *  documentClient.put(params, function(err, data) {
   *    if (err) console.log(err);
   *    else console.log(data);
   *  });
   *
   */
  put: function put(params, callback) {
    var self = this;
    var request = self.service.putItem(params);
    self.setupRequest(request);
    self.setupResponse(request);
    if (typeof callback === 'function') {
      request.send(callback);
    }
    return request;
  },

  /**
   * Edits an existing item's attributes, or adds a new item to the table if
   * it does not already exist by delegating to `AWS.DynamoDB.updateItem()`.
   *
   * Supply the same parameters as {AWS.DynamoDB.updateItem} with
   * `AttributeValue`s substituted by native JavaScript types.
   *
   * @see AWS.DynamoDB.updateItem
   * @example Update an item with expressions
   *  var params = {
   *    TableName: 'Table',
   *    Key: { HashKey : 'hashkey' },
   *    UpdateExpression: 'set #a = :x + :y',
   *    ConditionExpression: '#a < :MAX',
   *    ExpressionAttributeNames: {'#a' : 'Sum'},
   *    ExpressionAttributeValues: {
   *      ':x' : 20,
   *      ':y' : 45,
   *      ':MAX' : 100,
   *    }
   *  };
   *
   *  var documentClient = new AWS.DynamoDB.DocumentClient();
   *
   *  documentClient.update(params, function(err, data) {
   *     if (err) console.log(err);
   *     else console.log(data);
   *  });
   *
   */
  update: function(params, callback) {
    var self = this;
    var request = self.service.updateItem(params);
    self.setupRequest(request);
    self.setupResponse(request);
    if (typeof callback === 'function') {
      request.send(callback);
    }
    return request;
  },

  /**
   * Returns one or more items and item attributes by accessing every item
   * in a table or a secondary index.
   *
   * Supply the same parameters as {AWS.DynamoDB.scan} with
   * `AttributeValue`s substituted by native JavaScript types.
   *
   * @see AWS.DynamoDB.scan
   * @example Scan the table with a filter expression
   *  var params = {
   *    TableName : 'Table',
   *    FilterExpression : 'Year = :this_year',
   *    ExpressionAttributeValues : {':this_year' : 2015}
   *  };
   *
   *  var documentClient = new AWS.DynamoDB.DocumentClient();
   *
   *  documentClient.scan(params, function(err, data) {
   *     if (err) console.log(err);
   *     else console.log(data);
   *  });
   *
   */
  scan: function(params, callback) {
    var self = this;
    var request = self.service.scan(params);
    self.setupRequest(request);
    self.setupResponse(request);
    if (typeof callback === 'function') {
      request.send(callback);
    }
    return request;
  },

   /**
    * Directly access items from a table by primary key or a secondary index.
    *
    * Supply the same parameters as {AWS.DynamoDB.query} with
    * `AttributeValue`s substituted by native JavaScript types.
    *
    * @see AWS.DynamoDB.query
    * @example Query an index
    *  var params = {
    *    TableName: 'Table',
    *    IndexName: 'Index',
    *    KeyConditionExpression: 'HashKey = :hkey and RangeKey > :rkey',
    *    ExpressionAttributeValues: {
    *      ':hkey': 'key',
    *      ':rkey': 2015
    *    }
    *  };
    *
    *  var documentClient = new AWS.DynamoDB.DocumentClient();
    *
    *  documentClient.query(params, function(err, data) {
    *     if (err) console.log(err);
    *     else console.log(data);
    *  });
    *
    */
  query: function(params, callback) {
    var self = this;
    var request = self.service.query(params);
    self.setupRequest(request);
    self.setupResponse(request);
    if (typeof callback === 'function') {
      request.send(callback);
    }
    return request;
  },

  /**
   * Creates a set of elements inferring the type of set from
   * the type of the first element. Amazon DynamoDB currently supports
   * the number sets, string sets, and binary sets. For more information
   * about DynamoDB data types see the documentation on the
   * [Amazon DynamoDB Data Model](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModel.DataTypes).
   *
   * @param list [Array] Collection to represent your DynamoDB Set
   * @param options [map]
   *  * **validate** [Boolean] set to true if you want to validate the type
   *    of each element in the set. Defaults to `false`.
   * @example Creating a number set
   *  var documentClient = new AWS.DynamoDB.DocumentClient();
   *
   *  var params = {
   *    Item: {
   *      hashkey: 'hashkey'
   *      numbers: documentClient.createSet([1, 2, 3]);
   *    }
   *  };
   *
   *  documentClient.put(params, function(err, data) {
   *    if (err) console.log(err);
   *    else console.log(data);
   *  });
   *
   */
  createSet: function(list, options) {
    options = options || {};
    return new DynamoDBSet(list, options);
  },

  /**
   * @api private
   */
  getTranslator: function() {
    return new Translator(this.options);
  },

  /**
   * @api private
   */
  setupRequest: function setupRequest(request) {
    var self = this;
    var translator = self.getTranslator();
    var operation = request.operation;
    var inputShape = request.service.api.operations[operation].input;
    request._events.validate.unshift(function(req) {
      req.rawParams = AWS.util.copy(req.params);
      req.params = translator.translateInput(req.rawParams, inputShape);
    });
  },

  /**
   * @api private
   */
  setupResponse: function setupResponse(request) {
    var self = this;
    var translator = self.getTranslator();
    var outputShape = self.service.api.operations[request.operation].output;
    request.on('extractData', function(response) {
      response.data = translator.translateOutput(response.data, outputShape);
    });

    var response = request.response;
    response.nextPage = function(cb) {
      var resp = this;
      var req = resp.request;
      var config;
      var service = req.service;
      var operation = req.operation;
      try {
        config = service.paginationConfig(operation, true);
      } catch (e) { resp.error = e; }

      if (!resp.hasNextPage()) {
        if (cb) cb(resp.error, null);
        else if (resp.error) throw resp.error;
        return null;
      }

      var params = AWS.util.copy(req.rawParams);
      if (!resp.nextPageTokens) {
        return cb ? cb(null, null) : null;
      } else {
        var inputTokens = config.inputToken;
        if (typeof inputTokens === 'string') inputTokens = [inputTokens];
        for (var i = 0; i < inputTokens.length; i++) {
          params[inputTokens[i]] = resp.nextPageTokens[i];
        }
        return self[operation](params, cb);
      }
    };
  }

});

module.exports = AWS.DynamoDB.DocumentClient;

},{"../core":239,"./set":249,"./translator":250}],248:[function(require,module,exports){
var util = require('../core').util;

/**
 * An object recognizable as a numeric value that stores the underlying number
 * as a string.
 *
 * Intended to be a deserialization target for the DynamoDB Document Client when
 * the `wrapNumbers` flag is set. This allows for numeric values that lose
 * precision when converted to JavaScript's `number` type.
 */
var DynamoDBNumberValue = util.inherit({
  constructor: function NumberValue(value) {
    this.value = value.toString();
  },

  /**
   * Render the underlying value as a number when converting to JSON.
   */
  toJSON: function () {
    return this.toNumber();
  },

  /**
   * Convert the underlying value to a JavaScript number.
   */
  toNumber: function () {
    return Number(this.value);
  },

  /**
   * Return a string representing the unaltered value provided to the
   * constructor.
   */
  toString: function () {
    return this.value;
  }
});

module.exports = DynamoDBNumberValue;
},{"../core":239}],249:[function(require,module,exports){
var util = require('../core').util;
var typeOf = require('./types').typeOf;

/**
 * @api private
 */
var memberTypeToSetType = {
  'String': 'String',
  'Number': 'Number',
  'NumberValue': 'Number',
  'Binary': 'Binary'
};

/**
 * @api private
 */
var DynamoDBSet = util.inherit({

  constructor: function Set(list, options) {
    options = options || {};
    this.initialize(list, options.validate);
  },

  initialize: function(list, validate) {
    var self = this;
    self.values = [].concat(list);
    self.detectType();
    if (validate) {
      self.validate();
    }
  },

  detectType: function() {
    this.type = memberTypeToSetType[typeOf(this.values[0])];
    if (!this.type) {
      throw util.error(new Error(), {
        code: 'InvalidSetType',
        message: 'Sets can contain string, number, or binary values'
      });
    }
  },

  validate: function() {
    var self = this;
    var length = self.values.length;
    var values = self.values;
    for (var i = 0; i < length; i++) {
      if (memberTypeToSetType[typeOf(values[i])] !== self.type) {
        throw util.error(new Error(), {
          code: 'InvalidType',
          message: self.type + ' Set contains ' + typeOf(values[i]) + ' value'
        });
      }
    }
  }

});

module.exports = DynamoDBSet;

},{"../core":239,"./types":251}],250:[function(require,module,exports){
var util = require('../core').util;
var convert = require('./converter');

var Translator = function(options) {
  options = options || {};
  this.attrValue = options.attrValue;
  this.convertEmptyValues = Boolean(options.convertEmptyValues);
  this.wrapNumbers = Boolean(options.wrapNumbers);
};

Translator.prototype.translateInput = function(value, shape) {
  this.mode = 'input';
  return this.translate(value, shape);
};

Translator.prototype.translateOutput = function(value, shape) {
  this.mode = 'output';
  return this.translate(value, shape);
};

Translator.prototype.translate = function(value, shape) {
  var self = this;
  if (!shape || value === undefined) return undefined;

  if (shape.shape === self.attrValue) {
    return convert[self.mode](value, {
      convertEmptyValues: self.convertEmptyValues,
      wrapNumbers: self.wrapNumbers,
    });
  }
  switch (shape.type) {
    case 'structure': return self.translateStructure(value, shape);
    case 'map': return self.translateMap(value, shape);
    case 'list': return self.translateList(value, shape);
    default: return self.translateScalar(value, shape);
  }
};

Translator.prototype.translateStructure = function(structure, shape) {
  var self = this;
  if (structure == null) return undefined;

  var struct = {};
  util.each(structure, function(name, value) {
    var memberShape = shape.members[name];
    if (memberShape) {
      var result = self.translate(value, memberShape);
      if (result !== undefined) struct[name] = result;
    }
  });
  return struct;
};

Translator.prototype.translateList = function(list, shape) {
  var self = this;
  if (list == null) return undefined;

  var out = [];
  util.arrayEach(list, function(value) {
    var result = self.translate(value, shape.member);
    if (result === undefined) out.push(null);
    else out.push(result);
  });
  return out;
};

Translator.prototype.translateMap = function(map, shape) {
  var self = this;
  if (map == null) return undefined;

  var out = {};
  util.each(map, function(key, value) {
    var result = self.translate(value, shape.value);
    if (result === undefined) out[key] = null;
    else out[key] = result;
  });
  return out;
};

Translator.prototype.translateScalar = function(value, shape) {
  return shape.toType(value);
};

module.exports = Translator;

},{"../core":239,"./converter":246}],251:[function(require,module,exports){
var util = require('../core').util;

function typeOf(data) {
  if (data === null && typeof data === 'object') {
    return 'null';
  } else if (data !== undefined && isBinary(data)) {
    return 'Binary';
  } else if (data !== undefined && data.constructor) {
    return util.typeName(data.constructor);
  } else if (data !== undefined && typeof data === 'object') {
    // this object is the result of Object.create(null), hence the absence of a
    // defined constructor
    return 'Object';
  } else {
    return 'undefined';
  }
}

function isBinary(data) {
  var types = [
    'Buffer', 'File', 'Blob', 'ArrayBuffer', 'DataView',
    'Int8Array', 'Uint8Array', 'Uint8ClampedArray',
    'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array',
    'Float32Array', 'Float64Array'
  ];
  if (util.isNode()) {
    var Stream = util.stream.Stream;
    if (util.Buffer.isBuffer(data) || data instanceof Stream) {
      return true;
    }
  }

  for (var i = 0; i < types.length; i++) {
    if (data !== undefined && data.constructor) {
      if (util.isType(data, types[i])) return true;
      if (util.typeName(data.constructor) === types[i]) return true;
    }
  }

  return false;
}

module.exports = {
  typeOf: typeOf,
  isBinary: isBinary
};

},{"../core":239}],252:[function(require,module,exports){
var AWS = require('./core');
var SequentialExecutor = require('./sequential_executor');
/**
 * The namespace used to register global event listeners for request building
 * and sending.
 */
AWS.EventListeners = {
  /**
   * @!attribute VALIDATE_CREDENTIALS
   *   A request listener that validates whether the request is being
   *   sent with credentials.
   *   Handles the {AWS.Request~validate 'validate' Request event}
   *   @example Sending a request without validating credentials
   *     var listener = AWS.EventListeners.Core.VALIDATE_CREDENTIALS;
   *     request.removeListener('validate', listener);
   *   @readonly
   *   @return [Function]
   * @!attribute VALIDATE_REGION
   *   A request listener that validates whether the region is set
   *   for a request.
   *   Handles the {AWS.Request~validate 'validate' Request event}
   *   @example Sending a request without validating region configuration
   *     var listener = AWS.EventListeners.Core.VALIDATE_REGION;
   *     request.removeListener('validate', listener);
   *   @readonly
   *   @return [Function]
   * @!attribute VALIDATE_PARAMETERS
   *   A request listener that validates input parameters in a request.
   *   Handles the {AWS.Request~validate 'validate' Request event}
   *   @example Sending a request without validating parameters
   *     var listener = AWS.EventListeners.Core.VALIDATE_PARAMETERS;
   *     request.removeListener('validate', listener);
   *   @example Disable parameter validation globally
   *     AWS.EventListeners.Core.removeListener('validate',
   *       AWS.EventListeners.Core.VALIDATE_REGION);
   *   @readonly
   *   @return [Function]
   * @!attribute SEND
   *   A request listener that initiates the HTTP connection for a
   *   request being sent. Handles the {AWS.Request~send 'send' Request event}
   *   @example Replacing the HTTP handler
   *     var listener = AWS.EventListeners.Core.SEND;
   *     request.removeListener('send', listener);
   *     request.on('send', function(response) {
   *       customHandler.send(response);
   *     });
   *   @return [Function]
   *   @readonly
   * @!attribute HTTP_DATA
   *   A request listener that reads data from the HTTP connection in order
   *   to build the response data.
   *   Handles the {AWS.Request~httpData 'httpData' Request event}.
   *   Remove this handler if you are overriding the 'httpData' event and
   *   do not want extra data processing and buffering overhead.
   *   @example Disabling default data processing
   *     var listener = AWS.EventListeners.Core.HTTP_DATA;
   *     request.removeListener('httpData', listener);
   *   @return [Function]
   *   @readonly
   */
  Core: {} /* doc hack */
};

/**
 * @api private
 */
function getOperationAuthtype(req) {
  if (!req.service.api.operations) {
    return '';
  }
  var operation = req.service.api.operations[req.operation];
  return operation ? operation.authtype : '';
}

AWS.EventListeners = {
  Core: new SequentialExecutor().addNamedListeners(function(add, addAsync) {
    addAsync('VALIDATE_CREDENTIALS', 'validate',
        function VALIDATE_CREDENTIALS(req, done) {
      if (!req.service.api.signatureVersion) return done(); // none
      req.service.config.getCredentials(function(err) {
        if (err) {
          req.response.error = AWS.util.error(err,
            {code: 'CredentialsError', message: 'Missing credentials in config'});
        }
        done();
      });
    });

    add('VALIDATE_REGION', 'validate', function VALIDATE_REGION(req) {
      if (!req.service.config.region && !req.service.isGlobalEndpoint) {
        req.response.error = AWS.util.error(new Error(),
          {code: 'ConfigError', message: 'Missing region in config'});
      }
    });

    add('BUILD_IDEMPOTENCY_TOKENS', 'validate', function BUILD_IDEMPOTENCY_TOKENS(req) {
      if (!req.service.api.operations) {
        return;
      }
      var operation = req.service.api.operations[req.operation];
      if (!operation) {
        return;
      }
      var idempotentMembers = operation.idempotentMembers;
      if (!idempotentMembers.length) {
        return;
      }
      // creates a copy of params so user's param object isn't mutated
      var params = AWS.util.copy(req.params);
      for (var i = 0, iLen = idempotentMembers.length; i < iLen; i++) {
        if (!params[idempotentMembers[i]]) {
          // add the member
          params[idempotentMembers[i]] = AWS.util.uuid.v4();
        }
      }
      req.params = params;
    });

    add('VALIDATE_PARAMETERS', 'validate', function VALIDATE_PARAMETERS(req) {
      if (!req.service.api.operations) {
        return;
      }
      var rules = req.service.api.operations[req.operation].input;
      var validation = req.service.config.paramValidation;
      new AWS.ParamValidator(validation).validate(rules, req.params);
    });

    addAsync('COMPUTE_SHA256', 'afterBuild', function COMPUTE_SHA256(req, done) {
      req.haltHandlersOnError();
      if (!req.service.api.operations) {
        return;
      }
      var operation = req.service.api.operations[req.operation];
      var authtype = operation ? operation.authtype : '';
      if (!req.service.api.signatureVersion && !authtype) return done(); // none
      if (req.service.getSignerClass(req) === AWS.Signers.V4) {
        var body = req.httpRequest.body || '';
        if (authtype.indexOf('unsigned-body') >= 0) {
          req.httpRequest.headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD';
          return done();
        }
        AWS.util.computeSha256(body, function(err, sha) {
          if (err) {
            done(err);
          }
          else {
            req.httpRequest.headers['X-Amz-Content-Sha256'] = sha;
            done();
          }
        });
      } else {
        done();
      }
    });

    add('SET_CONTENT_LENGTH', 'afterBuild', function SET_CONTENT_LENGTH(req) {
      var authtype = getOperationAuthtype(req);
      if (req.httpRequest.headers['Content-Length'] === undefined
          && authtype.indexOf('unsigned-body') === -1) {
        var length = AWS.util.string.byteLength(req.httpRequest.body);
        req.httpRequest.headers['Content-Length'] = length;
      }
    });

    add('SET_HTTP_HOST', 'afterBuild', function SET_HTTP_HOST(req) {
      req.httpRequest.headers['Host'] = req.httpRequest.endpoint.host;
    });

    add('RESTART', 'restart', function RESTART() {
      var err = this.response.error;
      if (!err || !err.retryable) return;

      this.httpRequest = new AWS.HttpRequest(
        this.service.endpoint,
        this.service.region
      );

      if (this.response.retryCount < this.service.config.maxRetries) {
        this.response.retryCount++;
      } else {
        this.response.error = null;
      }
    });

    addAsync('SIGN', 'sign', function SIGN(req, done) {
      var service = req.service;
      var operations = req.service.api.operations || {};
      var operation = operations[req.operation];
      var authtype = operation ? operation.authtype : '';
      if (!service.api.signatureVersion && !authtype) return done(); // none

      service.config.getCredentials(function (err, credentials) {
        if (err) {
          req.response.error = err;
          return done();
        }

        try {
          var date = service.getSkewCorrectedDate();
          var SignerClass = service.getSignerClass(req);
          var signer = new SignerClass(req.httpRequest,
            service.api.signingName || service.api.endpointPrefix,
            {
              signatureCache: service.config.signatureCache,
              operation: operation
            });
          signer.setServiceClientId(service._clientId);

          // clear old authorization headers
          delete req.httpRequest.headers['Authorization'];
          delete req.httpRequest.headers['Date'];
          delete req.httpRequest.headers['X-Amz-Date'];

          // add new authorization
          signer.addAuthorization(credentials, date);
          req.signedAt = date;
        } catch (e) {
          req.response.error = e;
        }
        done();
      });
    });

    add('VALIDATE_RESPONSE', 'validateResponse', function VALIDATE_RESPONSE(resp) {
      if (this.service.successfulResponse(resp, this)) {
        resp.data = {};
        resp.error = null;
      } else {
        resp.data = null;
        resp.error = AWS.util.error(new Error(),
          {code: 'UnknownError', message: 'An unknown error occurred.'});
      }
    });

    addAsync('SEND', 'send', function SEND(resp, done) {
      resp.httpResponse._abortCallback = done;
      resp.error = null;
      resp.data = null;

      function callback(httpResp) {
        resp.httpResponse.stream = httpResp;
        var stream = resp.request.httpRequest.stream;

        httpResp.on('headers', function onHeaders(statusCode, headers, statusMessage) {
          resp.request.emit(
            'httpHeaders',
            [statusCode, headers, resp, statusMessage]
          );

          if (!resp.httpResponse.streaming) {
            if (AWS.HttpClient.streamsApiVersion === 2) { // streams2 API check
              httpResp.on('readable', function onReadable() {
                var data = httpResp.read();
                if (data !== null) {
                  resp.request.emit('httpData', [data, resp]);
                }
              });
            } else { // legacy streams API
              httpResp.on('data', function onData(data) {
                resp.request.emit('httpData', [data, resp]);
              });
            }
          }
        });

        httpResp.on('end', function onEnd() {
          if (!stream || !stream.didCallback) {
            resp.request.emit('httpDone');
            done();
          }
        });
      }

      function progress(httpResp) {
        httpResp.on('sendProgress', function onSendProgress(value) {
          resp.request.emit('httpUploadProgress', [value, resp]);
        });

        httpResp.on('receiveProgress', function onReceiveProgress(value) {
          resp.request.emit('httpDownloadProgress', [value, resp]);
        });
      }

      function error(err) {
        if (err.code !== 'RequestAbortedError') {
          var errCode = err.code === 'TimeoutError' ? err.code : 'NetworkingError';
          err = AWS.util.error(err, {
            code: errCode,
            region: resp.request.httpRequest.region,
            hostname: resp.request.httpRequest.endpoint.hostname,
            retryable: true
          });
        }
        resp.error = err;
        resp.request.emit('httpError', [resp.error, resp], function() {
          done();
        });
      }

      function executeSend() {
        var http = AWS.HttpClient.getInstance();
        var httpOptions = resp.request.service.config.httpOptions || {};
        try {
          var stream = http.handleRequest(resp.request.httpRequest, httpOptions,
                                          callback, error);
          progress(stream);
        } catch (err) {
          error(err);
        }
      }
      var timeDiff = (resp.request.service.getSkewCorrectedDate() - this.signedAt) / 1000;
      if (timeDiff >= 60 * 10) { // if we signed 10min ago, re-sign
        this.emit('sign', [this], function(err) {
          if (err) done(err);
          else executeSend();
        });
      } else {
        executeSend();
      }
    });

    add('HTTP_HEADERS', 'httpHeaders',
        function HTTP_HEADERS(statusCode, headers, resp, statusMessage) {
      resp.httpResponse.statusCode = statusCode;
      resp.httpResponse.statusMessage = statusMessage;
      resp.httpResponse.headers = headers;
      resp.httpResponse.body = new AWS.util.Buffer('');
      resp.httpResponse.buffers = [];
      resp.httpResponse.numBytes = 0;
      var dateHeader = headers.date || headers.Date;
      var service = resp.request.service;
      if (dateHeader) {
        var serverTime = Date.parse(dateHeader);
        if (service.config.correctClockSkew
            && service.isClockSkewed(serverTime)) {
          service.applyClockOffset(serverTime);
        }
      }
    });

    add('HTTP_DATA', 'httpData', function HTTP_DATA(chunk, resp) {
      if (chunk) {
        if (AWS.util.isNode()) {
          resp.httpResponse.numBytes += chunk.length;

          var total = resp.httpResponse.headers['content-length'];
          var progress = { loaded: resp.httpResponse.numBytes, total: total };
          resp.request.emit('httpDownloadProgress', [progress, resp]);
        }

        resp.httpResponse.buffers.push(new AWS.util.Buffer(chunk));
      }
    });

    add('HTTP_DONE', 'httpDone', function HTTP_DONE(resp) {
      // convert buffers array into single buffer
      if (resp.httpResponse.buffers && resp.httpResponse.buffers.length > 0) {
        var body = AWS.util.buffer.concat(resp.httpResponse.buffers);
        resp.httpResponse.body = body;
      }
      delete resp.httpResponse.numBytes;
      delete resp.httpResponse.buffers;
    });

    add('FINALIZE_ERROR', 'retry', function FINALIZE_ERROR(resp) {
      if (resp.httpResponse.statusCode) {
        resp.error.statusCode = resp.httpResponse.statusCode;
        if (resp.error.retryable === undefined) {
          resp.error.retryable = this.service.retryableError(resp.error, this);
        }
      }
    });

    add('INVALIDATE_CREDENTIALS', 'retry', function INVALIDATE_CREDENTIALS(resp) {
      if (!resp.error) return;
      switch (resp.error.code) {
        case 'RequestExpired': // EC2 only
        case 'ExpiredTokenException':
        case 'ExpiredToken':
          resp.error.retryable = true;
          resp.request.service.config.credentials.expired = true;
      }
    });

    add('EXPIRED_SIGNATURE', 'retry', function EXPIRED_SIGNATURE(resp) {
      var err = resp.error;
      if (!err) return;
      if (typeof err.code === 'string' && typeof err.message === 'string') {
        if (err.code.match(/Signature/) && err.message.match(/expired/)) {
          resp.error.retryable = true;
        }
      }
    });

    add('CLOCK_SKEWED', 'retry', function CLOCK_SKEWED(resp) {
      if (!resp.error) return;
      if (this.service.clockSkewError(resp.error)
          && this.service.config.correctClockSkew) {
        resp.error.retryable = true;
      }
    });

    add('REDIRECT', 'retry', function REDIRECT(resp) {
      if (resp.error && resp.error.statusCode >= 300 &&
          resp.error.statusCode < 400 && resp.httpResponse.headers['location']) {
        this.httpRequest.endpoint =
          new AWS.Endpoint(resp.httpResponse.headers['location']);
        this.httpRequest.headers['Host'] = this.httpRequest.endpoint.host;
        resp.error.redirect = true;
        resp.error.retryable = true;
      }
    });

    add('RETRY_CHECK', 'retry', function RETRY_CHECK(resp) {
      if (resp.error) {
        if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) {
          resp.error.retryDelay = 0;
        } else if (resp.retryCount < resp.maxRetries) {
          resp.error.retryDelay = this.service.retryDelays(resp.retryCount) || 0;
        }
      }
    });

    addAsync('RESET_RETRY_STATE', 'afterRetry', function RESET_RETRY_STATE(resp, done) {
      var delay, willRetry = false;

      if (resp.error) {
        delay = resp.error.retryDelay || 0;
        if (resp.error.retryable && resp.retryCount < resp.maxRetries) {
          resp.retryCount++;
          willRetry = true;
        } else if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) {
          resp.redirectCount++;
          willRetry = true;
        }
      }

      if (willRetry) {
        resp.error = null;
        setTimeout(done, delay);
      } else {
        done();
      }
    });
  }),

  CorePost: new SequentialExecutor().addNamedListeners(function(add) {
    add('EXTRACT_REQUEST_ID', 'extractData', AWS.util.extractRequestId);
    add('EXTRACT_REQUEST_ID', 'extractError', AWS.util.extractRequestId);

    add('ENOTFOUND_ERROR', 'httpError', function ENOTFOUND_ERROR(err) {
      if (err.code === 'NetworkingError' && err.errno === 'ENOTFOUND') {
        var message = 'Inaccessible host: `' + err.hostname +
          '\'. This service may not be available in the `' + err.region +
          '\' region.';
        this.response.error = AWS.util.error(new Error(message), {
          code: 'UnknownEndpoint',
          region: err.region,
          hostname: err.hostname,
          retryable: true,
          originalError: err
        });
      }
    });
  }),

  Logger: new SequentialExecutor().addNamedListeners(function(add) {
    add('LOG_REQUEST', 'complete', function LOG_REQUEST(resp) {
      var req = resp.request;
      var logger = req.service.config.logger;
      if (!logger) return;
      function filterSensitiveLog(inputShape, shape) {
        if (!shape) {
          return shape;
        }
        switch (inputShape.type) {
          case 'structure':
            var struct = {};
            AWS.util.each(shape, function(subShapeName, subShape) {
              if (Object.prototype.hasOwnProperty.call(inputShape.members, subShapeName)) {
                struct[subShapeName] = filterSensitiveLog(inputShape.members[subShapeName], subShape);
              } else {
                struct[subShapeName] = subShape;
              }
            })
            return struct
          case 'list':
            var list = [];
            AWS.util.arrayEach(shape, function(subShape, index) {
              list.push(filterSensitiveLog(inputShape.member, subShape));
            })
            return list;
          case 'map':
            var map = {};
            AWS.util.each(shape, function(key, value) {
              map[key] = filterSensitiveLog(inputShape.value, value);
            })
            return map;
          default:
            if (inputShape.isSensitive) {
              return '***SensitiveInformation***'
            } else {
              return shape;
            }
        }
      }

      function buildMessage() {
        var time = resp.request.service.getSkewCorrectedDate().getTime();
        var delta = (time - req.startTime.getTime()) / 1000;
        var ansi = logger.isTTY ? true : false;
        var status = resp.httpResponse.statusCode;
        var censoredParams = req.params;
        if (
          req.service.api.operations &&
              req.service.api.operations[req.operation] &&
              req.service.api.operations[req.operation].input
        ) {
          var inputShape = req.service.api.operations[req.operation].input;
          censoredParams = filterSensitiveLog(inputShape, req.params);
        }
        var params = require('util').inspect(censoredParams, true, null);
        var message = '';
        if (ansi) message += '\x1B[33m';
        message += '[AWS ' + req.service.serviceIdentifier + ' ' + status;
        message += ' ' + delta.toString() + 's ' + resp.retryCount + ' retries]';
        if (ansi) message += '\x1B[0;1m';
        message += ' ' + AWS.util.string.lowerFirst(req.operation);
        message += '(' + params + ')';
        if (ansi) message += '\x1B[0m';
        return message;
      }

      var line = buildMessage();
      if (typeof logger.log === 'function') {
        logger.log(line);
      } else if (typeof logger.write === 'function') {
        logger.write(line + '\n');
      }
    });
  }),

  Json: new SequentialExecutor().addNamedListeners(function(add) {
    var svc = require('./protocol/json');
    add('BUILD', 'build', svc.buildRequest);
    add('EXTRACT_DATA', 'extractData', svc.extractData);
    add('EXTRACT_ERROR', 'extractError', svc.extractError);
  }),

  Rest: new SequentialExecutor().addNamedListeners(function(add) {
    var svc = require('./protocol/rest');
    add('BUILD', 'build', svc.buildRequest);
    add('EXTRACT_DATA', 'extractData', svc.extractData);
    add('EXTRACT_ERROR', 'extractError', svc.extractError);
  }),

  RestJson: new SequentialExecutor().addNamedListeners(function(add) {
    var svc = require('./protocol/rest_json');
    add('BUILD', 'build', svc.buildRequest);
    add('EXTRACT_DATA', 'extractData', svc.extractData);
    add('EXTRACT_ERROR', 'extractError', svc.extractError);
  }),

  RestXml: new SequentialExecutor().addNamedListeners(function(add) {
    var svc = require('./protocol/rest_xml');
    add('BUILD', 'build', svc.buildRequest);
    add('EXTRACT_DATA', 'extractData', svc.extractData);
    add('EXTRACT_ERROR', 'extractError', svc.extractError);
  }),

  Query: new SequentialExecutor().addNamedListeners(function(add) {
    var svc = require('./protocol/query');
    add('BUILD', 'build', svc.buildRequest);
    add('EXTRACT_DATA', 'extractData', svc.extractData);
    add('EXTRACT_ERROR', 'extractError', svc.extractError);
  })
};

},{"./core":239,"./protocol/json":265,"./protocol/query":266,"./protocol/rest":267,"./protocol/rest_json":268,"./protocol/rest_xml":269,"./sequential_executor":278,"util":464}],253:[function(require,module,exports){
var AWS = require('./core');
var inherit = AWS.util.inherit;

/**
 * The endpoint that a service will talk to, for example,
 * `'https://ec2.ap-southeast-1.amazonaws.com'`. If
 * you need to override an endpoint for a service, you can
 * set the endpoint on a service by passing the endpoint
 * object with the `endpoint` option key:
 *
 * ```javascript
 * var ep = new AWS.Endpoint('awsproxy.example.com');
 * var s3 = new AWS.S3({endpoint: ep});
 * s3.service.endpoint.hostname == 'awsproxy.example.com'
 * ```
 *
 * Note that if you do not specify a protocol, the protocol will
 * be selected based on your current {AWS.config} configuration.
 *
 * @!attribute protocol
 *   @return [String] the protocol (http or https) of the endpoint
 *     URL
 * @!attribute hostname
 *   @return [String] the host portion of the endpoint, e.g.,
 *     example.com
 * @!attribute host
 *   @return [String] the host portion of the endpoint including
 *     the port, e.g., example.com:80
 * @!attribute port
 *   @return [Integer] the port of the endpoint
 * @!attribute href
 *   @return [String] the full URL of the endpoint
 */
AWS.Endpoint = inherit({

  /**
   * @overload Endpoint(endpoint)
   *   Constructs a new endpoint given an endpoint URL. If the
   *   URL omits a protocol (http or https), the default protocol
   *   set in the global {AWS.config} will be used.
   *   @param endpoint [String] the URL to construct an endpoint from
   */
  constructor: function Endpoint(endpoint, config) {
    AWS.util.hideProperties(this, ['slashes', 'auth', 'hash', 'search', 'query']);

    if (typeof endpoint === 'undefined' || endpoint === null) {
      throw new Error('Invalid endpoint: ' + endpoint);
    } else if (typeof endpoint !== 'string') {
      return AWS.util.copy(endpoint);
    }

    if (!endpoint.match(/^http/)) {
      var useSSL = config && config.sslEnabled !== undefined ?
        config.sslEnabled : AWS.config.sslEnabled;
      endpoint = (useSSL ? 'https' : 'http') + '://' + endpoint;
    }

    AWS.util.update(this, AWS.util.urlParse(endpoint));

    // Ensure the port property is set as an integer
    if (this.port) {
      this.port = parseInt(this.port, 10);
    } else {
      this.port = this.protocol === 'https:' ? 443 : 80;
    }
  }

});

/**
 * The low level HTTP request object, encapsulating all HTTP header
 * and body data sent by a service request.
 *
 * @!attribute method
 *   @return [String] the HTTP method of the request
 * @!attribute path
 *   @return [String] the path portion of the URI, e.g.,
 *     "/list/?start=5&num=10"
 * @!attribute headers
 *   @return [map<String,String>]
 *     a map of header keys and their respective values
 * @!attribute body
 *   @return [String] the request body payload
 * @!attribute endpoint
 *   @return [AWS.Endpoint] the endpoint for the request
 * @!attribute region
 *   @api private
 *   @return [String] the region, for signing purposes only.
 */
AWS.HttpRequest = inherit({

  /**
   * @api private
   */
  constructor: function HttpRequest(endpoint, region) {
    endpoint = new AWS.Endpoint(endpoint);
    this.method = 'POST';
    this.path = endpoint.path || '/';
    this.headers = {};
    this.body = '';
    this.endpoint = endpoint;
    this.region = region;
    this._userAgent = '';
    this.setUserAgent();
  },

  /**
   * @api private
   */
  setUserAgent: function setUserAgent() {
    this._userAgent = this.headers[this.getUserAgentHeaderName()] = AWS.util.userAgent();
  },

  getUserAgentHeaderName: function getUserAgentHeaderName() {
    var prefix = AWS.util.isBrowser() ? 'X-Amz-' : '';
    return prefix + 'User-Agent';
  },

  /**
   * @api private
   */
  appendToUserAgent: function appendToUserAgent(agentPartial) {
    if (typeof agentPartial === 'string' && agentPartial) {
      this._userAgent += ' ' + agentPartial;
    }
    this.headers[this.getUserAgentHeaderName()] = this._userAgent;
  },

  /**
   * @api private
   */
  getUserAgent: function getUserAgent() {
    return this._userAgent;
  },

  /**
   * @return [String] the part of the {path} excluding the
   *   query string
   */
  pathname: function pathname() {
    return this.path.split('?', 1)[0];
  },

  /**
   * @return [String] the query string portion of the {path}
   */
  search: function search() {
    var query = this.path.split('?', 2)[1];
    if (query) {
      query = AWS.util.queryStringParse(query);
      return AWS.util.queryParamsToString(query);
    }
    return '';
  }

});

/**
 * The low level HTTP response object, encapsulating all HTTP header
 * and body data returned from the request.
 *
 * @!attribute statusCode
 *   @return [Integer] the HTTP status code of the response (e.g., 200, 404)
 * @!attribute headers
 *   @return [map<String,String>]
 *      a map of response header keys and their respective values
 * @!attribute body
 *   @return [String] the response body payload
 * @!attribute [r] streaming
 *   @return [Boolean] whether this response is being streamed at a low-level.
 *     Defaults to `false` (buffered reads). Do not modify this manually, use
 *     {createUnbufferedStream} to convert the stream to unbuffered mode
 *     instead.
 */
AWS.HttpResponse = inherit({

  /**
   * @api private
   */
  constructor: function HttpResponse() {
    this.statusCode = undefined;
    this.headers = {};
    this.body = undefined;
    this.streaming = false;
    this.stream = null;
  },

  /**
   * Disables buffering on the HTTP response and returns the stream for reading.
   * @return [Stream, XMLHttpRequest, null] the underlying stream object.
   *   Use this object to directly read data off of the stream.
   * @note This object is only available after the {AWS.Request~httpHeaders}
   *   event has fired. This method must be called prior to
   *   {AWS.Request~httpData}.
   * @example Taking control of a stream
   *   request.on('httpHeaders', function(statusCode, headers) {
   *     if (statusCode < 300) {
   *       if (headers.etag === 'xyz') {
   *         // pipe the stream, disabling buffering
   *         var stream = this.response.httpResponse.createUnbufferedStream();
   *         stream.pipe(process.stdout);
   *       } else { // abort this request and set a better error message
   *         this.abort();
   *         this.response.error = new Error('Invalid ETag');
   *       }
   *     }
   *   }).send(console.log);
   */
  createUnbufferedStream: function createUnbufferedStream() {
    this.streaming = true;
    return this.stream;
  }
});


AWS.HttpClient = inherit({});

/**
 * @api private
 */
AWS.HttpClient.getInstance = function getInstance() {
  if (this.singleton === undefined) {
    this.singleton = new this();
  }
  return this.singleton;
};

},{"./core":239}],254:[function(require,module,exports){
var AWS = require('../core');
var EventEmitter = require('events').EventEmitter;
require('../http');

/**
 * @api private
 */
AWS.XHRClient = AWS.util.inherit({
  handleRequest: function handleRequest(httpRequest, httpOptions, callback, errCallback) {
    var self = this;
    var endpoint = httpRequest.endpoint;
    var emitter = new EventEmitter();
    var href = endpoint.protocol + '//' + endpoint.hostname;
    if (endpoint.port !== 80 && endpoint.port !== 443) {
      href += ':' + endpoint.port;
    }
    href += httpRequest.path;

    var xhr = new XMLHttpRequest(), headersEmitted = false;
    httpRequest.stream = xhr;

    xhr.addEventListener('readystatechange', function() {
      try {
        if (xhr.status === 0) return; // 0 code is invalid
      } catch (e) { return; }

      if (this.readyState >= this.HEADERS_RECEIVED && !headersEmitted) {
        emitter.statusCode = xhr.status;
        emitter.headers = self.parseHeaders(xhr.getAllResponseHeaders());
        emitter.emit(
          'headers',
          emitter.statusCode,
          emitter.headers,
          xhr.statusText
        );
        headersEmitted = true;
      }
      if (this.readyState === this.DONE) {
        self.finishRequest(xhr, emitter);
      }
    }, false);
    xhr.upload.addEventListener('progress', function (evt) {
      emitter.emit('sendProgress', evt);
    });
    xhr.addEventListener('progress', function (evt) {
      emitter.emit('receiveProgress', evt);
    }, false);
    xhr.addEventListener('timeout', function () {
      errCallback(AWS.util.error(new Error('Timeout'), {code: 'TimeoutError'}));
    }, false);
    xhr.addEventListener('error', function () {
      errCallback(AWS.util.error(new Error('Network Failure'), {
        code: 'NetworkingError'
      }));
    }, false);
    xhr.addEventListener('abort', function () {
      errCallback(AWS.util.error(new Error('Request aborted'), {
        code: 'RequestAbortedError'
      }));
    }, false);

    callback(emitter);
    xhr.open(httpRequest.method, href, httpOptions.xhrAsync !== false);
    AWS.util.each(httpRequest.headers, function (key, value) {
      if (key !== 'Content-Length' && key !== 'User-Agent' && key !== 'Host') {
        xhr.setRequestHeader(key, value);
      }
    });

    if (httpOptions.timeout && httpOptions.xhrAsync !== false) {
      xhr.timeout = httpOptions.timeout;
    }

    if (httpOptions.xhrWithCredentials) {
      xhr.withCredentials = true;
    }
    try { xhr.responseType = 'arraybuffer'; } catch (e) {}

    try {
      if (httpRequest.body) {
        xhr.send(httpRequest.body);
      } else {
        xhr.send();
      }
    } catch (err) {
      if (httpRequest.body && typeof httpRequest.body.buffer === 'object') {
        xhr.send(httpRequest.body.buffer); // send ArrayBuffer directly
      } else {
        throw err;
      }
    }

    return emitter;
  },

  parseHeaders: function parseHeaders(rawHeaders) {
    var headers = {};
    AWS.util.arrayEach(rawHeaders.split(/\r?\n/), function (line) {
      var key = line.split(':', 1)[0];
      var value = line.substring(key.length + 2);
      if (key.length > 0) headers[key.toLowerCase()] = value;
    });
    return headers;
  },

  finishRequest: function finishRequest(xhr, emitter) {
    var buffer;
    if (xhr.responseType === 'arraybuffer' && xhr.response) {
      var ab = xhr.response;
      buffer = new AWS.util.Buffer(ab.byteLength);
      var view = new Uint8Array(ab);
      for (var i = 0; i < buffer.length; ++i) {
        buffer[i] = view[i];
      }
    }

    try {
      if (!buffer && typeof xhr.responseText === 'string') {
        buffer = new AWS.util.Buffer(xhr.responseText);
      }
    } catch (e) {}

    if (buffer) emitter.emit('data', buffer);
    emitter.emit('end');
  }
});

/**
 * @api private
 */
AWS.HttpClient.prototype = AWS.XHRClient.prototype;

/**
 * @api private
 */
AWS.HttpClient.streamsApiVersion = 1;

},{"../core":239,"../http":253,"events":309}],255:[function(require,module,exports){
var util = require('../util');

function JsonBuilder() { }

JsonBuilder.prototype.build = function(value, shape) {
  return JSON.stringify(translate(value, shape));
};

function translate(value, shape) {
  if (!shape || value === undefined || value === null) return undefined;

  switch (shape.type) {
    case 'structure': return translateStructure(value, shape);
    case 'map': return translateMap(value, shape);
    case 'list': return translateList(value, shape);
    default: return translateScalar(value, shape);
  }
}

function translateStructure(structure, shape) {
  var struct = {};
  util.each(structure, function(name, value) {
    var memberShape = shape.members[name];
    if (memberShape) {
      if (memberShape.location !== 'body') return;
      var locationName = memberShape.isLocationName ? memberShape.name : name;
      var result = translate(value, memberShape);
      if (result !== undefined) struct[locationName] = result;
    }
  });
  return struct;
}

function translateList(list, shape) {
  var out = [];
  util.arrayEach(list, function(value) {
    var result = translate(value, shape.member);
    if (result !== undefined) out.push(result);
  });
  return out;
}

function translateMap(map, shape) {
  var out = {};
  util.each(map, function(key, value) {
    var result = translate(value, shape.value);
    if (result !== undefined) out[key] = result;
  });
  return out;
}

function translateScalar(value, shape) {
  return shape.toWireFormat(value);
}

module.exports = JsonBuilder;

},{"../util":303}],256:[function(require,module,exports){
var util = require('../util');

function JsonParser() { }

JsonParser.prototype.parse = function(value, shape) {
  return translate(JSON.parse(value), shape);
};

function translate(value, shape) {
  if (!shape || value === undefined) return undefined;

  switch (shape.type) {
    case 'structure': return translateStructure(value, shape);
    case 'map': return translateMap(value, shape);
    case 'list': return translateList(value, shape);
    default: return translateScalar(value, shape);
  }
}

function translateStructure(structure, shape) {
  if (structure == null) return undefined;

  var struct = {};
  var shapeMembers = shape.members;
  util.each(shapeMembers, function(name, memberShape) {
    var locationName = memberShape.isLocationName ? memberShape.name : name;
    if (Object.prototype.hasOwnProperty.call(structure, locationName)) {
      var value = structure[locationName];
      var result = translate(value, memberShape);
      if (result !== undefined) struct[name] = result;
    }
  });
  return struct;
}

function translateList(list, shape) {
  if (list == null) return undefined;

  var out = [];
  util.arrayEach(list, function(value) {
    var result = translate(value, shape.member);
    if (result === undefined) out.push(null);
    else out.push(result);
  });
  return out;
}

function translateMap(map, shape) {
  if (map == null) return undefined;

  var out = {};
  util.each(map, function(key, value) {
    var result = translate(value, shape.value);
    if (result === undefined) out[key] = null;
    else out[key] = result;
  });
  return out;
}

function translateScalar(value, shape) {
  return shape.toType(value);
}

module.exports = JsonParser;

},{"../util":303}],257:[function(require,module,exports){
var Collection = require('./collection');
var Operation = require('./operation');
var Shape = require('./shape');
var Paginator = require('./paginator');
var ResourceWaiter = require('./resource_waiter');

var util = require('../util');
var property = util.property;
var memoizedProperty = util.memoizedProperty;

function Api(api, options) {
  api = api || {};
  options = options || {};
  options.api = this;

  api.metadata = api.metadata || {};

  property(this, 'isApi', true, false);
  property(this, 'apiVersion', api.metadata.apiVersion);
  property(this, 'endpointPrefix', api.metadata.endpointPrefix);
  property(this, 'signingName', api.metadata.signingName);
  property(this, 'globalEndpoint', api.metadata.globalEndpoint);
  property(this, 'signatureVersion', api.metadata.signatureVersion);
  property(this, 'jsonVersion', api.metadata.jsonVersion);
  property(this, 'targetPrefix', api.metadata.targetPrefix);
  property(this, 'protocol', api.metadata.protocol);
  property(this, 'timestampFormat', api.metadata.timestampFormat);
  property(this, 'xmlNamespaceUri', api.metadata.xmlNamespace);
  property(this, 'abbreviation', api.metadata.serviceAbbreviation);
  property(this, 'fullName', api.metadata.serviceFullName);

  memoizedProperty(this, 'className', function() {
    var name = api.metadata.serviceAbbreviation || api.metadata.serviceFullName;
    if (!name) return null;

    name = name.replace(/^Amazon|AWS\s*|\(.*|\s+|\W+/g, '');
    if (name === 'ElasticLoadBalancing') name = 'ELB';
    return name;
  });

  property(this, 'operations', new Collection(api.operations, options, function(name, operation) {
    return new Operation(name, operation, options);
  }, util.string.lowerFirst));

  property(this, 'shapes', new Collection(api.shapes, options, function(name, shape) {
    return Shape.create(shape, options);
  }));

  property(this, 'paginators', new Collection(api.paginators, options, function(name, paginator) {
    return new Paginator(name, paginator, options);
  }));

  property(this, 'waiters', new Collection(api.waiters, options, function(name, waiter) {
    return new ResourceWaiter(name, waiter, options);
  }, util.string.lowerFirst));

  if (options.documentation) {
    property(this, 'documentation', api.documentation);
    property(this, 'documentationUrl', api.documentationUrl);
  }
}

module.exports = Api;

},{"../util":303,"./collection":258,"./operation":259,"./paginator":260,"./resource_waiter":261,"./shape":262}],258:[function(require,module,exports){
var memoizedProperty = require('../util').memoizedProperty;

function memoize(name, value, fn, nameTr) {
  memoizedProperty(this, nameTr(name), function() {
    return fn(name, value);
  });
}

function Collection(iterable, options, fn, nameTr) {
  nameTr = nameTr || String;
  var self = this;

  for (var id in iterable) {
    if (Object.prototype.hasOwnProperty.call(iterable, id)) {
      memoize.call(self, id, iterable[id], fn, nameTr);
    }
  }
}

module.exports = Collection;

},{"../util":303}],259:[function(require,module,exports){
var Shape = require('./shape');

var util = require('../util');
var property = util.property;
var memoizedProperty = util.memoizedProperty;

function Operation(name, operation, options) {
  var self = this;
  options = options || {};

  property(this, 'name', operation.name || name);
  property(this, 'api', options.api, false);

  operation.http = operation.http || {};
  property(this, 'httpMethod', operation.http.method || 'POST');
  property(this, 'httpPath', operation.http.requestUri || '/');
  property(this, 'authtype', operation.authtype || '');

  memoizedProperty(this, 'input', function() {
    if (!operation.input) {
      return new Shape.create({type: 'structure'}, options);
    }
    return Shape.create(operation.input, options);
  });

  memoizedProperty(this, 'output', function() {
    if (!operation.output) {
      return new Shape.create({type: 'structure'}, options);
    }
    return Shape.create(operation.output, options);
  });

  memoizedProperty(this, 'errors', function() {
    var list = [];
    if (!operation.errors) return null;

    for (var i = 0; i < operation.errors.length; i++) {
      list.push(Shape.create(operation.errors[i], options));
    }

    return list;
  });

  memoizedProperty(this, 'paginator', function() {
    return options.api.paginators[name];
  });

  if (options.documentation) {
    property(this, 'documentation', operation.documentation);
    property(this, 'documentationUrl', operation.documentationUrl);
  }

  // idempotentMembers only tracks top-level input shapes
  memoizedProperty(this, 'idempotentMembers', function() {
    var idempotentMembers = [];
    var input = self.input;
    var members = input.members;
    if (!input.members) {
      return idempotentMembers;
    }
    for (var name in members) {
      if (!members.hasOwnProperty(name)) {
        continue;
      }
      if (members[name].isIdempotent === true) {
        idempotentMembers.push(name);
      }
    }
    return idempotentMembers;
  });

}

module.exports = Operation;

},{"../util":303,"./shape":262}],260:[function(require,module,exports){
var property = require('../util').property;

function Paginator(name, paginator) {
  property(this, 'inputToken', paginator.input_token);
  property(this, 'limitKey', paginator.limit_key);
  property(this, 'moreResults', paginator.more_results);
  property(this, 'outputToken', paginator.output_token);
  property(this, 'resultKey', paginator.result_key);
}

module.exports = Paginator;

},{"../util":303}],261:[function(require,module,exports){
var util = require('../util');
var property = util.property;

function ResourceWaiter(name, waiter, options) {
  options = options || {};
  property(this, 'name', name);
  property(this, 'api', options.api, false);

  if (waiter.operation) {
    property(this, 'operation', util.string.lowerFirst(waiter.operation));
  }

  var self = this;
  var keys = [
    'type',
    'description',
    'delay',
    'maxAttempts',
    'acceptors'
  ];

  keys.forEach(function(key) {
    var value = waiter[key];
    if (value) {
      property(self, key, value);
    }
  });
}

module.exports = ResourceWaiter;

},{"../util":303}],262:[function(require,module,exports){
var Collection = require('./collection');

var util = require('../util');

function property(obj, name, value) {
  if (value !== null && value !== undefined) {
    util.property.apply(this, arguments);
  }
}

function memoizedProperty(obj, name) {
  if (!obj.constructor.prototype[name]) {
    util.memoizedProperty.apply(this, arguments);
  }
}

function Shape(shape, options, memberName) {
  options = options || {};

  property(this, 'shape', shape.shape);
  property(this, 'api', options.api, false);
  property(this, 'type', shape.type);
  property(this, 'enum', shape.enum);
  property(this, 'min', shape.min);
  property(this, 'max', shape.max);
  property(this, 'pattern', shape.pattern);
  property(this, 'location', shape.location || this.location || 'body');
  property(this, 'name', this.name || shape.xmlName || shape.queryName ||
    shape.locationName || memberName);
  property(this, 'isStreaming', shape.streaming || this.isStreaming || false);
  property(this, 'isComposite', shape.isComposite || false);
  property(this, 'isShape', true, false);
  property(this, 'isQueryName', Boolean(shape.queryName), false);
  property(this, 'isLocationName', Boolean(shape.locationName), false);
  property(this, 'isIdempotent', shape.idempotencyToken === true);
  property(this, 'isJsonValue', shape.jsonvalue === true);
  property(this, 'isSensitive', shape.sensitive === true || shape.prototype && shape.prototype.sensitive === true);

  if (options.documentation) {
    property(this, 'documentation', shape.documentation);
    property(this, 'documentationUrl', shape.documentationUrl);
  }

  if (shape.xmlAttribute) {
    property(this, 'isXmlAttribute', shape.xmlAttribute || false);
  }

  // type conversion and parsing
  property(this, 'defaultValue', null);
  this.toWireFormat = function(value) {
    if (value === null || value === undefined) return '';
    return value;
  };
  this.toType = function(value) { return value; };
}

/**
 * @api private
 */
Shape.normalizedTypes = {
  character: 'string',
  double: 'float',
  long: 'integer',
  short: 'integer',
  biginteger: 'integer',
  bigdecimal: 'float',
  blob: 'binary'
};

/**
 * @api private
 */
Shape.types = {
  'structure': StructureShape,
  'list': ListShape,
  'map': MapShape,
  'boolean': BooleanShape,
  'timestamp': TimestampShape,
  'float': FloatShape,
  'integer': IntegerShape,
  'string': StringShape,
  'base64': Base64Shape,
  'binary': BinaryShape
};

Shape.resolve = function resolve(shape, options) {
  if (shape.shape) {
    var refShape = options.api.shapes[shape.shape];
    if (!refShape) {
      throw new Error('Cannot find shape reference: ' + shape.shape);
    }

    return refShape;
  } else {
    return null;
  }
};

Shape.create = function create(shape, options, memberName) {
  if (shape.isShape) return shape;

  var refShape = Shape.resolve(shape, options);
  if (refShape) {
    var filteredKeys = Object.keys(shape);
    if (!options.documentation) {
      filteredKeys = filteredKeys.filter(function(name) {
        return !name.match(/documentation/);
      });
    }

    // create an inline shape with extra members
    var InlineShape = function() {
      refShape.constructor.call(this, shape, options, memberName);
    };
    InlineShape.prototype = refShape;
    return new InlineShape();
  } else {
    // set type if not set
    if (!shape.type) {
      if (shape.members) shape.type = 'structure';
      else if (shape.member) shape.type = 'list';
      else if (shape.key) shape.type = 'map';
      else shape.type = 'string';
    }

    // normalize types
    var origType = shape.type;
    if (Shape.normalizedTypes[shape.type]) {
      shape.type = Shape.normalizedTypes[shape.type];
    }

    if (Shape.types[shape.type]) {
      return new Shape.types[shape.type](shape, options, memberName);
    } else {
      throw new Error('Unrecognized shape type: ' + origType);
    }
  }
};

function CompositeShape(shape) {
  Shape.apply(this, arguments);
  property(this, 'isComposite', true);

  if (shape.flattened) {
    property(this, 'flattened', shape.flattened || false);
  }
}

function StructureShape(shape, options) {
  var requiredMap = null, firstInit = !this.isShape;

  CompositeShape.apply(this, arguments);

  if (firstInit) {
    property(this, 'defaultValue', function() { return {}; });
    property(this, 'members', {});
    property(this, 'memberNames', []);
    property(this, 'required', []);
    property(this, 'isRequired', function() { return false; });
  }

  if (shape.members) {
    property(this, 'members', new Collection(shape.members, options, function(name, member) {
      return Shape.create(member, options, name);
    }));
    memoizedProperty(this, 'memberNames', function() {
      return shape.xmlOrder || Object.keys(shape.members);
    });
  }

  if (shape.required) {
    property(this, 'required', shape.required);
    property(this, 'isRequired', function(name) {
      if (!requiredMap) {
        requiredMap = {};
        for (var i = 0; i < shape.required.length; i++) {
          requiredMap[shape.required[i]] = true;
        }
      }

      return requiredMap[name];
    }, false, true);
  }

  property(this, 'resultWrapper', shape.resultWrapper || null);

  if (shape.payload) {
    property(this, 'payload', shape.payload);
  }

  if (typeof shape.xmlNamespace === 'string') {
    property(this, 'xmlNamespaceUri', shape.xmlNamespace);
  } else if (typeof shape.xmlNamespace === 'object') {
    property(this, 'xmlNamespacePrefix', shape.xmlNamespace.prefix);
    property(this, 'xmlNamespaceUri', shape.xmlNamespace.uri);
  }
}

function ListShape(shape, options) {
  var self = this, firstInit = !this.isShape;
  CompositeShape.apply(this, arguments);

  if (firstInit) {
    property(this, 'defaultValue', function() { return []; });
  }

  if (shape.member) {
    memoizedProperty(this, 'member', function() {
      return Shape.create(shape.member, options);
    });
  }

  if (this.flattened) {
    var oldName = this.name;
    memoizedProperty(this, 'name', function() {
      return self.member.name || oldName;
    });
  }
}

function MapShape(shape, options) {
  var firstInit = !this.isShape;
  CompositeShape.apply(this, arguments);

  if (firstInit) {
    property(this, 'defaultValue', function() { return {}; });
    property(this, 'key', Shape.create({type: 'string'}, options));
    property(this, 'value', Shape.create({type: 'string'}, options));
  }

  if (shape.key) {
    memoizedProperty(this, 'key', function() {
      return Shape.create(shape.key, options);
    });
  }
  if (shape.value) {
    memoizedProperty(this, 'value', function() {
      return Shape.create(shape.value, options);
    });
  }
}

function TimestampShape(shape) {
  var self = this;
  Shape.apply(this, arguments);

  if (this.location === 'header') {
    property(this, 'timestampFormat', 'rfc822');
  } else if (shape.timestampFormat) {
    property(this, 'timestampFormat', shape.timestampFormat);
  } else if (!this.timestampFormat && this.api) {
    if (this.api.timestampFormat) {
      property(this, 'timestampFormat', this.api.timestampFormat);
    } else {
      switch (this.api.protocol) {
        case 'json':
        case 'rest-json':
          property(this, 'timestampFormat', 'unixTimestamp');
          break;
        case 'rest-xml':
        case 'query':
        case 'ec2':
          property(this, 'timestampFormat', 'iso8601');
          break;
      }
    }
  }

  this.toType = function(value) {
    if (value === null || value === undefined) return null;
    if (typeof value.toUTCString === 'function') return value;
    return typeof value === 'string' || typeof value === 'number' ?
           util.date.parseTimestamp(value) : null;
  };

  this.toWireFormat = function(value) {
    return util.date.format(value, self.timestampFormat);
  };
}

function StringShape() {
  Shape.apply(this, arguments);

  var nullLessProtocols = ['rest-xml', 'query', 'ec2'];
  this.toType = function(value) {
    value = this.api && nullLessProtocols.indexOf(this.api.protocol) > -1 ?
      value || '' : value;
    if (this.isJsonValue) {
      return JSON.parse(value);
    }

    return value && typeof value.toString === 'function' ?
      value.toString() : value;
  };

  this.toWireFormat = function(value) {
    return this.isJsonValue ? JSON.stringify(value) : value;
  };
}

function FloatShape() {
  Shape.apply(this, arguments);

  this.toType = function(value) {
    if (value === null || value === undefined) return null;
    return parseFloat(value);
  };
  this.toWireFormat = this.toType;
}

function IntegerShape() {
  Shape.apply(this, arguments);

  this.toType = function(value) {
    if (value === null || value === undefined) return null;
    return parseInt(value, 10);
  };
  this.toWireFormat = this.toType;
}

function BinaryShape() {
  Shape.apply(this, arguments);
  this.toType = util.base64.decode;
  this.toWireFormat = util.base64.encode;
}

function Base64Shape() {
  BinaryShape.apply(this, arguments);
}

function BooleanShape() {
  Shape.apply(this, arguments);

  this.toType = function(value) {
    if (typeof value === 'boolean') return value;
    if (value === null || value === undefined) return null;
    return value === 'true';
  };
}

/**
 * @api private
 */
Shape.shapes = {
  StructureShape: StructureShape,
  ListShape: ListShape,
  MapShape: MapShape,
  StringShape: StringShape,
  BooleanShape: BooleanShape,
  Base64Shape: Base64Shape
};

module.exports = Shape;

},{"../util":303,"./collection":258}],263:[function(require,module,exports){
var AWS = require('./core');

/**
 * @api private
 */
AWS.ParamValidator = AWS.util.inherit({
  /**
   * Create a new validator object.
   *
   * @param validation [Boolean|map] whether input parameters should be
   *     validated against the operation description before sending the
   *     request. Pass a map to enable any of the following specific
   *     validation features:
   *
   *     * **min** [Boolean] &mdash; Validates that a value meets the min
   *       constraint. This is enabled by default when paramValidation is set
   *       to `true`.
   *     * **max** [Boolean] &mdash; Validates that a value meets the max
   *       constraint.
   *     * **pattern** [Boolean] &mdash; Validates that a string value matches a
   *       regular expression.
   *     * **enum** [Boolean] &mdash; Validates that a string value matches one
   *       of the allowable enum values.
   */
  constructor: function ParamValidator(validation) {
    if (validation === true || validation === undefined) {
      validation = {'min': true};
    }
    this.validation = validation;
  },

  validate: function validate(shape, params, context) {
    this.errors = [];
    this.validateMember(shape, params || {}, context || 'params');

    if (this.errors.length > 1) {
      var msg = this.errors.join('\n* ');
      msg = 'There were ' + this.errors.length +
        ' validation errors:\n* ' + msg;
      throw AWS.util.error(new Error(msg),
        {code: 'MultipleValidationErrors', errors: this.errors});
    } else if (this.errors.length === 1) {
      throw this.errors[0];
    } else {
      return true;
    }
  },

  fail: function fail(code, message) {
    this.errors.push(AWS.util.error(new Error(message), {code: code}));
  },

  validateStructure: function validateStructure(shape, params, context) {
    this.validateType(params, context, ['object'], 'structure');

    var paramName;
    for (var i = 0; shape.required && i < shape.required.length; i++) {
      paramName = shape.required[i];
      var value = params[paramName];
      if (value === undefined || value === null) {
        this.fail('MissingRequiredParameter',
          'Missing required key \'' + paramName + '\' in ' + context);
      }
    }

    // validate hash members
    for (paramName in params) {
      if (!Object.prototype.hasOwnProperty.call(params, paramName)) continue;

      var paramValue = params[paramName],
          memberShape = shape.members[paramName];

      if (memberShape !== undefined) {
        var memberContext = [context, paramName].join('.');
        this.validateMember(memberShape, paramValue, memberContext);
      } else {
        this.fail('UnexpectedParameter',
          'Unexpected key \'' + paramName + '\' found in ' + context);
      }
    }

    return true;
  },

  validateMember: function validateMember(shape, param, context) {
    switch (shape.type) {
      case 'structure':
        return this.validateStructure(shape, param, context);
      case 'list':
        return this.validateList(shape, param, context);
      case 'map':
        return this.validateMap(shape, param, context);
      default:
        return this.validateScalar(shape, param, context);
    }
  },

  validateList: function validateList(shape, params, context) {
    if (this.validateType(params, context, [Array])) {
      this.validateRange(shape, params.length, context, 'list member count');
      // validate array members
      for (var i = 0; i < params.length; i++) {
        this.validateMember(shape.member, params[i], context + '[' + i + ']');
      }
    }
  },

  validateMap: function validateMap(shape, params, context) {
    if (this.validateType(params, context, ['object'], 'map')) {
      // Build up a count of map members to validate range traits.
      var mapCount = 0;
      for (var param in params) {
        if (!Object.prototype.hasOwnProperty.call(params, param)) continue;
        // Validate any map key trait constraints
        this.validateMember(shape.key, param,
                            context + '[key=\'' + param + '\']')
        this.validateMember(shape.value, params[param],
                            context + '[\'' + param + '\']');
        mapCount++;
      }
      this.validateRange(shape, mapCount, context, 'map member count');
    }
  },

  validateScalar: function validateScalar(shape, value, context) {
    switch (shape.type) {
      case null:
      case undefined:
      case 'string':
        return this.validateString(shape, value, context);
      case 'base64':
      case 'binary':
        return this.validatePayload(value, context);
      case 'integer':
      case 'float':
        return this.validateNumber(shape, value, context);
      case 'boolean':
        return this.validateType(value, context, ['boolean']);
      case 'timestamp':
        return this.validateType(value, context, [Date,
          /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/, 'number'],
          'Date object, ISO-8601 string, or a UNIX timestamp');
      default:
        return this.fail('UnkownType', 'Unhandled type ' +
                         shape.type + ' for ' + context);
    }
  },

  validateString: function validateString(shape, value, context) {
    var validTypes = ['string'];
    if (shape.isJsonValue) {
      validTypes = validTypes.concat(['number', 'object', 'boolean']);
    }
    if (value !== null && this.validateType(value, context, validTypes)) {
      this.validateEnum(shape, value, context);
      this.validateRange(shape, value.length, context, 'string length');
      this.validatePattern(shape, value, context);
    }
  },

  validatePattern: function validatePattern(shape, value, context) {
    if (this.validation['pattern'] && shape['pattern'] !== undefined) {
      if (!(new RegExp(shape['pattern'])).test(value)) {
        this.fail('PatternMatchError', 'Provided value "' + value + '" '
          + 'does not match regex pattern /' + shape['pattern'] + '/ for '
          + context);
      }
    }
  },

  validateRange: function validateRange(shape, value, context, descriptor) {
    if (this.validation['min']) {
      if (shape['min'] !== undefined && value < shape['min']) {
        this.fail('MinRangeError', 'Expected ' + descriptor + ' >= '
          + shape['min'] + ', but found ' + value + ' for ' + context);
      }
    }
    if (this.validation['max']) {
      if (shape['max'] !== undefined && value > shape['max']) {
        this.fail('MaxRangeError', 'Expected ' + descriptor + ' <= '
          + shape['max'] + ', but found ' + value + ' for ' + context);
      }
    }
  },

  validateEnum: function validateRange(shape, value, context) {
    if (this.validation['enum'] && shape['enum'] !== undefined) {
      // Fail if the string value is not present in the enum list
      if (shape['enum'].indexOf(value) === -1) {
        this.fail('EnumError', 'Found string value of ' + value + ', but '
          + 'expected ' + shape['enum'].join('|') + ' for ' + context);
      }
    }
  },

  validateType: function validateType(value, context, acceptedTypes, type) {
    // We will not log an error for null or undefined, but we will return
    // false so that callers know that the expected type was not strictly met.
    if (value === null || value === undefined) return false;

    var foundInvalidType = false;
    for (var i = 0; i < acceptedTypes.length; i++) {
      if (typeof acceptedTypes[i] === 'string') {
        if (typeof value === acceptedTypes[i]) return true;
      } else if (acceptedTypes[i] instanceof RegExp) {
        if ((value || '').toString().match(acceptedTypes[i])) return true;
      } else {
        if (value instanceof acceptedTypes[i]) return true;
        if (AWS.util.isType(value, acceptedTypes[i])) return true;
        if (!type && !foundInvalidType) acceptedTypes = acceptedTypes.slice();
        acceptedTypes[i] = AWS.util.typeName(acceptedTypes[i]);
      }
      foundInvalidType = true;
    }

    var acceptedType = type;
    if (!acceptedType) {
      acceptedType = acceptedTypes.join(', ').replace(/,([^,]+)$/, ', or$1');
    }

    var vowel = acceptedType.match(/^[aeiou]/i) ? 'n' : '';
    this.fail('InvalidParameterType', 'Expected ' + context + ' to be a' +
              vowel + ' ' + acceptedType);
    return false;
  },

  validateNumber: function validateNumber(shape, value, context) {
    if (value === null || value === undefined) return;
    if (typeof value === 'string') {
      var castedValue = parseFloat(value);
      if (castedValue.toString() === value) value = castedValue;
    }
    if (this.validateType(value, context, ['number'])) {
      this.validateRange(shape, value, context, 'numeric value');
    }
  },

  validatePayload: function validatePayload(value, context) {
    if (value === null || value === undefined) return;
    if (typeof value === 'string') return;
    if (value && typeof value.byteLength === 'number') return; // typed arrays
    if (AWS.util.isNode()) { // special check for buffer/stream in Node.js
      var Stream = AWS.util.stream.Stream;
      if (AWS.util.Buffer.isBuffer(value) || value instanceof Stream) return;
    }

    var types = ['Buffer', 'Stream', 'File', 'Blob', 'ArrayBuffer', 'DataView'];
    if (value) {
      for (var i = 0; i < types.length; i++) {
        if (AWS.util.isType(value, types[i])) return;
        if (AWS.util.typeName(value.constructor) === types[i]) return;
      }
    }

    this.fail('InvalidParameterType', 'Expected ' + context + ' to be a ' +
      'string, Buffer, Stream, Blob, or typed array object');
  }
});

},{"./core":239}],264:[function(require,module,exports){
var AWS = require('../core');
var rest = AWS.Protocol.Rest;

/**
 * A presigner object can be used to generate presigned urls for the Polly service.
 */
AWS.Polly.Presigner = AWS.util.inherit({
    /**
     * Creates a presigner object with a set of configuration options.
     *
     * @option options params [map] An optional map of parameters to bind to every
     *   request sent by this service object.
     * @option options service [AWS.Polly] An optional pre-configured instance
     *  of the AWS.Polly service object to use for requests. The object may
     *  bound parameters used by the presigner.
     * @see AWS.Polly.constructor
     */
    constructor: function Signer(options) {
        options = options || {};
        this.options = options;
        this.service = options.service;
        this.bindServiceObject(options);
        this._operations = {};
    },

    /**
     * @api private
     */
    bindServiceObject: function bindServiceObject(options) {
        options = options || {};
        if (!this.service) {
            this.service = new AWS.Polly(options);
        } else {
            var config = AWS.util.copy(this.service.config);
            this.service = new this.service.constructor.__super__(config);
            this.service.config.params = AWS.util.merge(this.service.config.params || {}, options.params);
        }
    },

    /**
     * @api private
     */
    modifyInputMembers: function modifyInputMembers(input) {
        // make copies of the input so we don't overwrite the api
        // need to be careful to copy anything we access/modify
        var modifiedInput = AWS.util.copy(input);
        modifiedInput.members = AWS.util.copy(input.members);
        AWS.util.each(input.members, function(name, member) {
            modifiedInput.members[name] = AWS.util.copy(member);
            // update location and locationName
            if (!member.location || member.location === 'body') {
                modifiedInput.members[name].location = 'querystring';
                modifiedInput.members[name].locationName = name;
            }
        });
        return modifiedInput;
    },

    /**
     * @api private
     */
    convertPostToGet: function convertPostToGet(req) {
        // convert method
        req.httpRequest.method = 'GET';

        var operation = req.service.api.operations[req.operation];
        // get cached operation input first
        var input = this._operations[req.operation];
        if (!input) {
            // modify the original input
            this._operations[req.operation] = input = this.modifyInputMembers(operation.input);
        }

        var uri = rest.generateURI(req.httpRequest.endpoint.path, operation.httpPath, input, req.params);

        req.httpRequest.path = uri;
        req.httpRequest.body = '';

        // don't need these headers on a GET request
        delete req.httpRequest.headers['Content-Length'];
        delete req.httpRequest.headers['Content-Type'];
    },

    /**
     * @overload getSynthesizeSpeechUrl(params = {}, [expires = 3600], [callback])
     *   Generate a presigned url for {AWS.Polly.synthesizeSpeech}.
     *   @note You must ensure that you have static or previously resolved
     *     credentials if you call this method synchronously (with no callback),
     *     otherwise it may not properly sign the request. If you cannot guarantee
     *     this (you are using an asynchronous credential provider, i.e., EC2
     *     IAM roles), you should always call this method with an asynchronous
     *     callback.
     *   @param params [map] parameters to pass to the operation. See the {AWS.Polly.synthesizeSpeech}
     *     operation for the expected operation parameters.
     *   @param expires [Integer] (3600) the number of seconds to expire the pre-signed URL operation in.
     *     Defaults to 1 hour.
     *   @return [string] if called synchronously (with no callback), returns the signed URL.
     *   @return [null] nothing is returned if a callback is provided.
     *   @callback callback function (err, url)
     *     If a callback is supplied, it is called when a signed URL has been generated.
     *     @param err [Error] the error object returned from the presigner.
     *     @param url [String] the signed URL.
     *   @see AWS.Polly.synthesizeSpeech
     */
    getSynthesizeSpeechUrl: function getSynthesizeSpeechUrl(params, expires, callback) {
        var self = this;
        var request = this.service.makeRequest('synthesizeSpeech', params);
        // remove existing build listeners
        request.removeAllListeners('build');
        request.on('build', function(req) {
            self.convertPostToGet(req);
        });
        return request.presign(expires, callback);
    }
});

},{"../core":239}],265:[function(require,module,exports){
var util = require('../util');
var JsonBuilder = require('../json/builder');
var JsonParser = require('../json/parser');

function buildRequest(req) {
  var httpRequest = req.httpRequest;
  var api = req.service.api;
  var target = api.targetPrefix + '.' + api.operations[req.operation].name;
  var version = api.jsonVersion || '1.0';
  var input = api.operations[req.operation].input;
  var builder = new JsonBuilder();

  if (version === 1) version = '1.0';
  httpRequest.body = builder.build(req.params || {}, input);
  httpRequest.headers['Content-Type'] = 'application/x-amz-json-' + version;
  httpRequest.headers['X-Amz-Target'] = target;
}

function extractError(resp) {
  var error = {};
  var httpResponse = resp.httpResponse;

  error.code = httpResponse.headers['x-amzn-errortype'] || 'UnknownError';
  if (typeof error.code === 'string') {
    error.code = error.code.split(':')[0];
  }

  if (httpResponse.body.length > 0) {
    try {
      var e = JSON.parse(httpResponse.body.toString());
      if (e.__type || e.code) {
        error.code = (e.__type || e.code).split('#').pop();
      }
      if (error.code === 'RequestEntityTooLarge') {
        error.message = 'Request body must be less than 1 MB';
      } else {
        error.message = (e.message || e.Message || null);
      }
    } catch (e) {
      error.statusCode = httpResponse.statusCode;
      error.message = httpResponse.statusMessage;
    }
  } else {
    error.statusCode = httpResponse.statusCode;
    error.message = httpResponse.statusCode.toString();
  }

  resp.error = util.error(new Error(), error);
}

function extractData(resp) {
  var body = resp.httpResponse.body.toString() || '{}';
  if (resp.request.service.config.convertResponseTypes === false) {
    resp.data = JSON.parse(body);
  } else {
    var operation = resp.request.service.api.operations[resp.request.operation];
    var shape = operation.output || {};
    var parser = new JsonParser();
    resp.data = parser.parse(body, shape);
  }
}

module.exports = {
  buildRequest: buildRequest,
  extractError: extractError,
  extractData: extractData
};

},{"../json/builder":255,"../json/parser":256,"../util":303}],266:[function(require,module,exports){
var AWS = require('../core');
var util = require('../util');
var QueryParamSerializer = require('../query/query_param_serializer');
var Shape = require('../model/shape');

function buildRequest(req) {
  var operation = req.service.api.operations[req.operation];
  var httpRequest = req.httpRequest;
  httpRequest.headers['Content-Type'] =
    'application/x-www-form-urlencoded; charset=utf-8';
  httpRequest.params = {
    Version: req.service.api.apiVersion,
    Action: operation.name
  };

  // convert the request parameters into a list of query params,
  // e.g. Deeply.NestedParam.0.Name=value
  var builder = new QueryParamSerializer();
  builder.serialize(req.params, operation.input, function(name, value) {
    httpRequest.params[name] = value;
  });
  httpRequest.body = util.queryParamsToString(httpRequest.params);
}

function extractError(resp) {
  var data, body = resp.httpResponse.body.toString();
  if (body.match('<UnknownOperationException')) {
    data = {
      Code: 'UnknownOperation',
      Message: 'Unknown operation ' + resp.request.operation
    };
  } else {
    try {
      data = new AWS.XML.Parser().parse(body);
    } catch (e) {
      data = {
        Code: resp.httpResponse.statusCode,
        Message: resp.httpResponse.statusMessage
      };
    }
  }

  if (data.requestId && !resp.requestId) resp.requestId = data.requestId;
  if (data.Errors) data = data.Errors;
  if (data.Error) data = data.Error;
  if (data.Code) {
    resp.error = util.error(new Error(), {
      code: data.Code,
      message: data.Message
    });
  } else {
    resp.error = util.error(new Error(), {
      code: resp.httpResponse.statusCode,
      message: null
    });
  }
}

function extractData(resp) {
  var req = resp.request;
  var operation = req.service.api.operations[req.operation];
  var shape = operation.output || {};
  var origRules = shape;

  if (origRules.resultWrapper) {
    var tmp = Shape.create({type: 'structure'});
    tmp.members[origRules.resultWrapper] = shape;
    tmp.memberNames = [origRules.resultWrapper];
    util.property(shape, 'name', shape.resultWrapper);
    shape = tmp;
  }

  var parser = new AWS.XML.Parser();

  // TODO: Refactor XML Parser to parse RequestId from response.
  if (shape && shape.members && !shape.members._XAMZRequestId) {
    var requestIdShape = Shape.create(
      { type: 'string' },
      { api: { protocol: 'query' } },
      'requestId'
    );
    shape.members._XAMZRequestId = requestIdShape;
  }

  var data = parser.parse(resp.httpResponse.body.toString(), shape);
  resp.requestId = data._XAMZRequestId || data.requestId;

  if (data._XAMZRequestId) delete data._XAMZRequestId;

  if (origRules.resultWrapper) {
    if (data[origRules.resultWrapper]) {
      util.update(data, data[origRules.resultWrapper]);
      delete data[origRules.resultWrapper];
    }
  }

  resp.data = data;
}

module.exports = {
  buildRequest: buildRequest,
  extractError: extractError,
  extractData: extractData
};

},{"../core":239,"../model/shape":262,"../query/query_param_serializer":270,"../util":303}],267:[function(require,module,exports){
var util = require('../util');

function populateMethod(req) {
  req.httpRequest.method = req.service.api.operations[req.operation].httpMethod;
}

function generateURI(endpointPath, operationPath, input, params) {
  var uri = [endpointPath, operationPath].join('/');
  uri = uri.replace(/\/+/g, '/');

  var queryString = {}, queryStringSet = false;
  util.each(input.members, function (name, member) {
    var paramValue = params[name];
    if (paramValue === null || paramValue === undefined) return;
    if (member.location === 'uri') {
      var regex = new RegExp('\\{' + member.name + '(\\+)?\\}');
      uri = uri.replace(regex, function(_, plus) {
        var fn = plus ? util.uriEscapePath : util.uriEscape;
        return fn(String(paramValue));
      });
    } else if (member.location === 'querystring') {
      queryStringSet = true;

      if (member.type === 'list') {
        queryString[member.name] = paramValue.map(function(val) {
          return util.uriEscape(String(val));
        });
      } else if (member.type === 'map') {
        util.each(paramValue, function(key, value) {
          if (Array.isArray(value)) {
            queryString[key] = value.map(function(val) {
              return util.uriEscape(String(val));
            });
          } else {
            queryString[key] = util.uriEscape(String(value));
          }
        });
      } else {
        queryString[member.name] = util.uriEscape(String(paramValue));
      }
    }
  });

  if (queryStringSet) {
    uri += (uri.indexOf('?') >= 0 ? '&' : '?');
    var parts = [];
    util.arrayEach(Object.keys(queryString).sort(), function(key) {
      if (!Array.isArray(queryString[key])) {
        queryString[key] = [queryString[key]];
      }
      for (var i = 0; i < queryString[key].length; i++) {
        parts.push(util.uriEscape(String(key)) + '=' + queryString[key][i]);
      }
    });
    uri += parts.join('&');
  }

  return uri;
}

function populateURI(req) {
  var operation = req.service.api.operations[req.operation];
  var input = operation.input;

  var uri = generateURI(req.httpRequest.endpoint.path, operation.httpPath, input, req.params);
  req.httpRequest.path = uri;
}

function populateHeaders(req) {
  var operation = req.service.api.operations[req.operation];
  util.each(operation.input.members, function (name, member) {
    var value = req.params[name];
    if (value === null || value === undefined) return;

    if (member.location === 'headers' && member.type === 'map') {
      util.each(value, function(key, memberValue) {
        req.httpRequest.headers[member.name + key] = memberValue;
      });
    } else if (member.location === 'header') {
      value = member.toWireFormat(value).toString();
      if (member.isJsonValue) {
        value = util.base64.encode(value);
      }
      req.httpRequest.headers[member.name] = value;
    }
  });
}

function buildRequest(req) {
  populateMethod(req);
  populateURI(req);
  populateHeaders(req);
}

function extractError() {
}

function extractData(resp) {
  var req = resp.request;
  var data = {};
  var r = resp.httpResponse;
  var operation = req.service.api.operations[req.operation];
  var output = operation.output;

  // normalize headers names to lower-cased keys for matching
  var headers = {};
  util.each(r.headers, function (k, v) {
    headers[k.toLowerCase()] = v;
  });

  util.each(output.members, function(name, member) {
    var header = (member.name || name).toLowerCase();
    if (member.location === 'headers' && member.type === 'map') {
      data[name] = {};
      var location = member.isLocationName ? member.name : '';
      var pattern = new RegExp('^' + location + '(.+)', 'i');
      util.each(r.headers, function (k, v) {
        var result = k.match(pattern);
        if (result !== null) {
          data[name][result[1]] = v;
        }
      });
    } else if (member.location === 'header') {
      if (headers[header] !== undefined) {
        var value = member.isJsonValue ?
          util.base64.decode(headers[header]) :
          headers[header];
        data[name] = member.toType(value);
      }
    } else if (member.location === 'statusCode') {
      data[name] = parseInt(r.statusCode, 10);
    }
  });

  resp.data = data;
}

module.exports = {
  buildRequest: buildRequest,
  extractError: extractError,
  extractData: extractData,
  generateURI: generateURI
};

},{"../util":303}],268:[function(require,module,exports){
var util = require('../util');
var Rest = require('./rest');
var Json = require('./json');
var JsonBuilder = require('../json/builder');
var JsonParser = require('../json/parser');

function populateBody(req) {
  var builder = new JsonBuilder();
  var input = req.service.api.operations[req.operation].input;

  if (input.payload) {
    var params = {};
    var payloadShape = input.members[input.payload];
    params = req.params[input.payload];
    if (params === undefined) return;

    if (payloadShape.type === 'structure') {
      req.httpRequest.body = builder.build(params, payloadShape);
      applyContentTypeHeader(req);
    } else { // non-JSON payload
      req.httpRequest.body = params;
      if (payloadShape.type === 'binary' || payloadShape.isStreaming) {
        applyContentTypeHeader(req, true);
      }
    }
  } else {
    req.httpRequest.body = builder.build(req.params, input);
    applyContentTypeHeader(req);
  }
}

function applyContentTypeHeader(req, isBinary) {
  var operation = req.service.api.operations[req.operation];
  var input = operation.input;

  if (!req.httpRequest.headers['Content-Type']) {
    var type = isBinary ? 'binary/octet-stream' : 'application/json';
    req.httpRequest.headers['Content-Type'] = type;
  }
}

function buildRequest(req) {
  Rest.buildRequest(req);

  // never send body payload on GET/HEAD/DELETE
  if (['GET', 'HEAD', 'DELETE'].indexOf(req.httpRequest.method) < 0) {
    populateBody(req);
  }
}

function extractError(resp) {
  Json.extractError(resp);
}

function extractData(resp) {
  Rest.extractData(resp);

  var req = resp.request;
  var rules = req.service.api.operations[req.operation].output || {};
  if (rules.payload) {
    var payloadMember = rules.members[rules.payload];
    var body = resp.httpResponse.body;
    if (payloadMember.type === 'structure' || payloadMember.type === 'list') {
      var parser = new JsonParser();
      resp.data[rules.payload] = parser.parse(body, payloadMember);
    } else if (payloadMember.type === 'binary' || payloadMember.isStreaming) {
      resp.data[rules.payload] = body;
    } else {
      resp.data[rules.payload] = payloadMember.toType(body);
    }
  } else {
    var data = resp.data;
    Json.extractData(resp);
    resp.data = util.merge(data, resp.data);
  }
}

module.exports = {
  buildRequest: buildRequest,
  extractError: extractError,
  extractData: extractData
};

},{"../json/builder":255,"../json/parser":256,"../util":303,"./json":265,"./rest":267}],269:[function(require,module,exports){
var AWS = require('../core');
var util = require('../util');
var Rest = require('./rest');

function populateBody(req) {
  var input = req.service.api.operations[req.operation].input;
  var builder = new AWS.XML.Builder();
  var params = req.params;

  var payload = input.payload;
  if (payload) {
    var payloadMember = input.members[payload];
    params = params[payload];
    if (params === undefined) return;

    if (payloadMember.type === 'structure') {
      var rootElement = payloadMember.name;
      req.httpRequest.body = builder.toXML(params, payloadMember, rootElement, true);
    } else { // non-xml payload
      req.httpRequest.body = params;
    }
  } else {
    req.httpRequest.body = builder.toXML(params, input, input.name ||
      input.shape || util.string.upperFirst(req.operation) + 'Request');
  }
}

function buildRequest(req) {
  Rest.buildRequest(req);

  // never send body payload on GET/HEAD
  if (['GET', 'HEAD'].indexOf(req.httpRequest.method) < 0) {
    populateBody(req);
  }
}

function extractError(resp) {
  Rest.extractError(resp);

  var data;
  try {
    data = new AWS.XML.Parser().parse(resp.httpResponse.body.toString());
  } catch (e) {
    data = {
      Code: resp.httpResponse.statusCode,
      Message: resp.httpResponse.statusMessage
    };
  }

  if (data.Errors) data = data.Errors;
  if (data.Error) data = data.Error;
  if (data.Code) {
    resp.error = util.error(new Error(), {
      code: data.Code,
      message: data.Message
    });
  } else {
    resp.error = util.error(new Error(), {
      code: resp.httpResponse.statusCode,
      message: null
    });
  }
}

function extractData(resp) {
  Rest.extractData(resp);

  var parser;
  var req = resp.request;
  var body = resp.httpResponse.body;
  var operation = req.service.api.operations[req.operation];
  var output = operation.output;

  var payload = output.payload;
  if (payload) {
    var payloadMember = output.members[payload];
    if (payloadMember.type === 'structure') {
      parser = new AWS.XML.Parser();
      resp.data[payload] = parser.parse(body.toString(), payloadMember);
    } else if (payloadMember.type === 'binary' || payloadMember.isStreaming) {
      resp.data[payload] = body;
    } else {
      resp.data[payload] = payloadMember.toType(body);
    }
  } else if (body.length > 0) {
    parser = new AWS.XML.Parser();
    var data = parser.parse(body.toString(), output);
    util.update(resp.data, data);
  }
}

module.exports = {
  buildRequest: buildRequest,
  extractError: extractError,
  extractData: extractData
};

},{"../core":239,"../util":303,"./rest":267}],270:[function(require,module,exports){
var util = require('../util');

function QueryParamSerializer() {
}

QueryParamSerializer.prototype.serialize = function(params, shape, fn) {
  serializeStructure('', params, shape, fn);
};

function ucfirst(shape) {
  if (shape.isQueryName || shape.api.protocol !== 'ec2') {
    return shape.name;
  } else {
    return shape.name[0].toUpperCase() + shape.name.substr(1);
  }
}

function serializeStructure(prefix, struct, rules, fn) {
  util.each(rules.members, function(name, member) {
    var value = struct[name];
    if (value === null || value === undefined) return;

    var memberName = ucfirst(member);
    memberName = prefix ? prefix + '.' + memberName : memberName;
    serializeMember(memberName, value, member, fn);
  });
}

function serializeMap(name, map, rules, fn) {
  var i = 1;
  util.each(map, function (key, value) {
    var prefix = rules.flattened ? '.' : '.entry.';
    var position = prefix + (i++) + '.';
    var keyName = position + (rules.key.name || 'key');
    var valueName = position + (rules.value.name || 'value');
    serializeMember(name + keyName, key, rules.key, fn);
    serializeMember(name + valueName, value, rules.value, fn);
  });
}

function serializeList(name, list, rules, fn) {
  var memberRules = rules.member || {};

  if (list.length === 0) {
    fn.call(this, name, null);
    return;
  }

  util.arrayEach(list, function (v, n) {
    var suffix = '.' + (n + 1);
    if (rules.api.protocol === 'ec2') {
      // Do nothing for EC2
      suffix = suffix + ''; // make linter happy
    } else if (rules.flattened) {
      if (memberRules.name) {
        var parts = name.split('.');
        parts.pop();
        parts.push(ucfirst(memberRules));
        name = parts.join('.');
      }
    } else {
      suffix = '.' + (memberRules.name ? memberRules.name : 'member') + suffix;
    }
    serializeMember(name + suffix, v, memberRules, fn);
  });
}

function serializeMember(name, value, rules, fn) {
  if (value === null || value === undefined) return;
  if (rules.type === 'structure') {
    serializeStructure(name, value, rules, fn);
  } else if (rules.type === 'list') {
    serializeList(name, value, rules, fn);
  } else if (rules.type === 'map') {
    serializeMap(name, value, rules, fn);
  } else {
    fn(name, rules.toWireFormat(value).toString());
  }
}

module.exports = QueryParamSerializer;

},{"../util":303}],271:[function(require,module,exports){
var AWS = require('../core');

/**
 * @api private
 */
var service = null;

/**
 * @api private
 */
var api = {
    signatureVersion: 'v4',
    signingName: 'rds-db'
};

/**
 * @api private
 */
var requiredAuthTokenOptions = {
    region: 'string',
    hostname: 'string',
    port: 'number',
    username: 'string'
};

/**
 * A signer object can be used to generate an auth token to a database.
 */
AWS.RDS.Signer = AWS.util.inherit({
    /**
     * Creates a signer object can be used to generate an auth token.
     *
     * @option options credentials [AWS.Credentials] the AWS credentials
     *   to sign requests with. Uses the default credential provider chain
     *   if not specified.
     * @option options hostname [String] the hostname of the database to connect to.
     * @option options port [Number] the port number the database is listening on.
     * @option options region [String] the region the database is located in.
     * @option options username [String] the username to login as.
     * @example Passing in options to constructor
     *   var signer = new AWS.RDS.Signer({
     *     credentials: new AWS.SharedIniFileCredentials({profile: 'default'}),
     *     region: 'us-east-1',
     *     hostname: 'db.us-east-1.rds.amazonaws.com',
     *     port: 8000,
     *     username: 'name'
     *   });
     */
    constructor: function Signer(options) {
        this.options = options || {};
    },

    /**
     * @api private
     * Strips the protocol from a url.
     */
    convertUrlToAuthToken: function convertUrlToAuthToken(url) {
        // we are always using https as the protocol
        var protocol = 'https://';
        if (url.indexOf(protocol) === 0) {
            return url.substring(protocol.length);
        }
    },

    /**
     * @overload getAuthToken(options = {}, [callback])
     *   Generate an auth token to a database.
     *   @note You must ensure that you have static or previously resolved
     *     credentials if you call this method synchronously (with no callback),
     *     otherwise it may not properly sign the request. If you cannot guarantee
     *     this (you are using an asynchronous credential provider, i.e., EC2
     *     IAM roles), you should always call this method with an asynchronous
     *     callback.
     *
     *   @param options [map] The fields to use when generating an auth token.
     *     Any options specified here will be merged on top of any options passed
     *     to AWS.RDS.Signer:
     *
     *     * **credentials** (AWS.Credentials) &mdash; the AWS credentials
     *         to sign requests with. Uses the default credential provider chain
     *         if not specified.
     *     * **hostname** (String) &mdash; the hostname of the database to connect to.
     *     * **port** (Number) &mdash; the port number the database is listening on.
     *     * **region** (String) &mdash; the region the database is located in.
     *     * **username** (String) &mdash; the username to login as.
     *   @return [String] if called synchronously (with no callback), returns the
     *     auth token.
     *   @return [null] nothing is returned if a callback is provided.
     *   @callback callback function (err, token)
     *     If a callback is supplied, it is called when an auth token has been generated.
     *     @param err [Error] the error object returned from the signer.
     *     @param token [String] the auth token.
     *
     *   @example Generating an auth token synchronously
     *     var signer = new AWS.RDS.Signer({
     *       // configure options
     *       region: 'us-east-1',
     *       username: 'default',
     *       hostname: 'db.us-east-1.amazonaws.com',
     *       port: 8000
     *     });
     *     var token = signer.getAuthToken({
     *       // these options are merged with those defined when creating the signer, overriding in the case of a duplicate option
     *       // credentials are not specified here or when creating the signer, so default credential provider will be used
     *       username: 'test' // overriding username
     *     });
     *   @example Generating an auth token asynchronously
     *     var signer = new AWS.RDS.Signer({
     *       // configure options
     *       region: 'us-east-1',
     *       username: 'default',
     *       hostname: 'db.us-east-1.amazonaws.com',
     *       port: 8000
     *     });
     *     signer.getAuthToken({
     *       // these options are merged with those defined when creating the signer, overriding in the case of a duplicate option
     *       // credentials are not specified here or when creating the signer, so default credential provider will be used
     *       username: 'test' // overriding username
     *     }, function(err, token) {
     *       if (err) {
     *         // handle error
     *       } else {
     *         // use token
     *       }
     *     });
     *
     */
    getAuthToken: function getAuthToken(options, callback) {
        if (typeof options === 'function' && callback === undefined) {
            callback = options;
            options = {};
        }
        var self = this;
        var hasCallback = typeof callback === 'function';
        // merge options with existing options
        options = AWS.util.merge(this.options, options);
        // validate options
        var optionsValidation = this.validateAuthTokenOptions(options);
        if (optionsValidation !== true) {
            if (hasCallback) {
                return callback(optionsValidation, null);
            }
            throw optionsValidation;
        }

        // 15 minutes
        var expires = 900;
        // create service to generate a request from
        var serviceOptions = {
            region: options.region,
            endpoint: new AWS.Endpoint(options.hostname + ':' + options.port),
            paramValidation: false,
            signatureVersion: 'v4'
        };
        if (options.credentials) {
            serviceOptions.credentials = options.credentials;
        }
        service = new AWS.Service(serviceOptions);
        // ensure the SDK is using sigv4 signing (config is not enough)
        service.api = api;

        var request = service.makeRequest();
        // add listeners to request to properly build auth token
        this.modifyRequestForAuthToken(request, options);

        if (hasCallback) {
            request.presign(expires, function(err, url) {
                if (url) {
                    url = self.convertUrlToAuthToken(url);
                }
                callback(err, url);
            });
        } else {
            var url = request.presign(expires);
            return this.convertUrlToAuthToken(url);
        }
    },

    /**
     * @api private
     * Modifies a request to allow the presigner to generate an auth token.
     */
    modifyRequestForAuthToken: function modifyRequestForAuthToken(request, options) {
        request.on('build', request.buildAsGet);
        var httpRequest = request.httpRequest;
        httpRequest.body = AWS.util.queryParamsToString({
            Action: 'connect',
            DBUser: options.username
        });
    },

    /**
     * @api private
     * Validates that the options passed in contain all the keys with values of the correct type that
     *   are needed to generate an auth token.
     */
    validateAuthTokenOptions: function validateAuthTokenOptions(options) {
        // iterate over all keys in options
        var message = '';
        options = options || {};
        for (var key in requiredAuthTokenOptions) {
            if (!Object.prototype.hasOwnProperty.call(requiredAuthTokenOptions, key)) {
                continue;
            }
            if (typeof options[key] !== requiredAuthTokenOptions[key]) {
                message += 'option \'' + key + '\' should have been type \'' + requiredAuthTokenOptions[key] + '\', was \'' + typeof options[key] + '\'.\n';
            }
        }
        if (message.length) {
            return AWS.util.error(new Error(), {
                code: 'InvalidParameter',
                message: message
            });
        }
        return true;
    }
});
},{"../core":239}],272:[function(require,module,exports){
var util = require('./util');
var regionConfig = require('./region_config_data.json');

function generateRegionPrefix(region) {
  if (!region) return null;

  var parts = region.split('-');
  if (parts.length < 3) return null;
  return parts.slice(0, parts.length - 2).join('-') + '-*';
}

function derivedKeys(service) {
  var region = service.config.region;
  var regionPrefix = generateRegionPrefix(region);
  var endpointPrefix = service.api.endpointPrefix;

  return [
    [region, endpointPrefix],
    [regionPrefix, endpointPrefix],
    [region, '*'],
    [regionPrefix, '*'],
    ['*', endpointPrefix],
    ['*', '*']
  ].map(function(item) {
    return item[0] && item[1] ? item.join('/') : null;
  });
}

function applyConfig(service, config) {
  util.each(config, function(key, value) {
    if (key === 'globalEndpoint') return;
    if (service.config[key] === undefined || service.config[key] === null) {
      service.config[key] = value;
    }
  });
}

function configureEndpoint(service) {
  var keys = derivedKeys(service);
  for (var i = 0; i < keys.length; i++) {
    var key = keys[i];
    if (!key) continue;

    if (Object.prototype.hasOwnProperty.call(regionConfig.rules, key)) {
      var config = regionConfig.rules[key];
      if (typeof config === 'string') {
        config = regionConfig.patterns[config];
      }

      // set dualstack endpoint
      if (service.config.useDualstack && util.isDualstackAvailable(service)) {
        config = util.copy(config);
        config.endpoint = '{service}.dualstack.{region}.amazonaws.com';
      }

      // set global endpoint
      service.isGlobalEndpoint = !!config.globalEndpoint;

      // signature version
      if (!config.signatureVersion) config.signatureVersion = 'v4';

      // merge config
      applyConfig(service, config);
      return;
    }
  }
}

module.exports = configureEndpoint;

},{"./region_config_data.json":273,"./util":303}],273:[function(require,module,exports){
module.exports={
  "rules": {
    "*/*": {
      "endpoint": "{service}.{region}.amazonaws.com"
    },
    "cn-*/*": {
      "endpoint": "{service}.{region}.amazonaws.com.cn"
    },
    "*/budgets": "globalSSL",
    "*/cloudfront": "globalSSL",
    "*/iam": "globalSSL",
    "*/sts": "globalSSL",
    "*/importexport": {
      "endpoint": "{service}.amazonaws.com",
      "signatureVersion": "v2",
      "globalEndpoint": true
    },
    "*/route53": {
      "endpoint": "https://{service}.amazonaws.com",
      "signatureVersion": "v3https",
      "globalEndpoint": true
    },
    "*/waf": "globalSSL",
    "us-gov-*/iam": "globalGovCloud",
    "us-gov-*/sts": {
      "endpoint": "{service}.{region}.amazonaws.com"
    },
    "us-gov-west-1/s3": "s3signature",
    "us-west-1/s3": "s3signature",
    "us-west-2/s3": "s3signature",
    "eu-west-1/s3": "s3signature",
    "ap-southeast-1/s3": "s3signature",
    "ap-southeast-2/s3": "s3signature",
    "ap-northeast-1/s3": "s3signature",
    "sa-east-1/s3": "s3signature",
    "us-east-1/s3": {
      "endpoint": "{service}.amazonaws.com",
      "signatureVersion": "s3"
    },
    "us-east-1/sdb": {
      "endpoint": "{service}.amazonaws.com",
      "signatureVersion": "v2"
    },
    "*/sdb": {
      "endpoint": "{service}.{region}.amazonaws.com",
      "signatureVersion": "v2"
    }
  },

  "patterns": {
    "globalSSL": {
      "endpoint": "https://{service}.amazonaws.com",
      "globalEndpoint": true
    },
    "globalGovCloud": {
      "endpoint": "{service}.us-gov.amazonaws.com"
    },
    "s3signature": {
      "endpoint": "{service}.{region}.amazonaws.com",
      "signatureVersion": "s3"
    }
  }
}

},{}],274:[function(require,module,exports){
(function (process){
var AWS = require('./core');
var AcceptorStateMachine = require('./state_machine');
var inherit = AWS.util.inherit;
var domain = AWS.util.domain;
var jmespath = require('jmespath');

/**
 * @api private
 */
var hardErrorStates = {success: 1, error: 1, complete: 1};

function isTerminalState(machine) {
  return Object.prototype.hasOwnProperty.call(hardErrorStates, machine._asm.currentState);
}

var fsm = new AcceptorStateMachine();
fsm.setupStates = function() {
  var transition = function(_, done) {
    var self = this;
    self._haltHandlersOnError = false;

    self.emit(self._asm.currentState, function(err) {
      if (err) {
        if (isTerminalState(self)) {
          if (domain && self.domain instanceof domain.Domain) {
            err.domainEmitter = self;
            err.domain = self.domain;
            err.domainThrown = false;
            self.domain.emit('error', err);
          } else {
            throw err;
          }
        } else {
          self.response.error = err;
          done(err);
        }
      } else {
        done(self.response.error);
      }
    });

  };

  this.addState('validate', 'build', 'error', transition);
  this.addState('build', 'afterBuild', 'restart', transition);
  this.addState('afterBuild', 'sign', 'restart', transition);
  this.addState('sign', 'send', 'retry', transition);
  this.addState('retry', 'afterRetry', 'afterRetry', transition);
  this.addState('afterRetry', 'sign', 'error', transition);
  this.addState('send', 'validateResponse', 'retry', transition);
  this.addState('validateResponse', 'extractData', 'extractError', transition);
  this.addState('extractError', 'extractData', 'retry', transition);
  this.addState('extractData', 'success', 'retry', transition);
  this.addState('restart', 'build', 'error', transition);
  this.addState('success', 'complete', 'complete', transition);
  this.addState('error', 'complete', 'complete', transition);
  this.addState('complete', null, null, transition);
};
fsm.setupStates();

/**
 * ## Asynchronous Requests
 *
 * All requests made through the SDK are asynchronous and use a
 * callback interface. Each service method that kicks off a request
 * returns an `AWS.Request` object that you can use to register
 * callbacks.
 *
 * For example, the following service method returns the request
 * object as "request", which can be used to register callbacks:
 *
 * ```javascript
 * // request is an AWS.Request object
 * var request = ec2.describeInstances();
 *
 * // register callbacks on request to retrieve response data
 * request.on('success', function(response) {
 *   console.log(response.data);
 * });
 * ```
 *
 * When a request is ready to be sent, the {send} method should
 * be called:
 *
 * ```javascript
 * request.send();
 * ```
 *
 * Since registered callbacks may or may not be idempotent, requests should only
 * be sent once. To perform the same operation multiple times, you will need to
 * create multiple request objects, each with its own registered callbacks.
 *
 * ## Removing Default Listeners for Events
 *
 * Request objects are built with default listeners for the various events,
 * depending on the service type. In some cases, you may want to remove
 * some built-in listeners to customize behaviour. Doing this requires
 * access to the built-in listener functions, which are exposed through
 * the {AWS.EventListeners.Core} namespace. For instance, you may
 * want to customize the HTTP handler used when sending a request. In this
 * case, you can remove the built-in listener associated with the 'send'
 * event, the {AWS.EventListeners.Core.SEND} listener and add your own.
 *
 * ## Multiple Callbacks and Chaining
 *
 * You can register multiple callbacks on any request object. The
 * callbacks can be registered for different events, or all for the
 * same event. In addition, you can chain callback registration, for
 * example:
 *
 * ```javascript
 * request.
 *   on('success', function(response) {
 *     console.log("Success!");
 *   }).
 *   on('error', function(response) {
 *     console.log("Error!");
 *   }).
 *   on('complete', function(response) {
 *     console.log("Always!");
 *   }).
 *   send();
 * ```
 *
 * The above example will print either "Success! Always!", or "Error! Always!",
 * depending on whether the request succeeded or not.
 *
 * @!attribute httpRequest
 *   @readonly
 *   @!group HTTP Properties
 *   @return [AWS.HttpRequest] the raw HTTP request object
 *     containing request headers and body information
 *     sent by the service.
 *
 * @!attribute startTime
 *   @readonly
 *   @!group Operation Properties
 *   @return [Date] the time that the request started
 *
 * @!group Request Building Events
 *
 * @!event validate(request)
 *   Triggered when a request is being validated. Listeners
 *   should throw an error if the request should not be sent.
 *   @param request [Request] the request object being sent
 *   @see AWS.EventListeners.Core.VALIDATE_CREDENTIALS
 *   @see AWS.EventListeners.Core.VALIDATE_REGION
 *   @example Ensuring that a certain parameter is set before sending a request
 *     var req = s3.putObject(params);
 *     req.on('validate', function() {
 *       if (!req.params.Body.match(/^Hello\s/)) {
 *         throw new Error('Body must start with "Hello "');
 *       }
 *     });
 *     req.send(function(err, data) { ... });
 *
 * @!event build(request)
 *   Triggered when the request payload is being built. Listeners
 *   should fill the necessary information to send the request
 *   over HTTP.
 *   @param (see AWS.Request~validate)
 *   @example Add a custom HTTP header to a request
 *     var req = s3.putObject(params);
 *     req.on('build', function() {
 *       req.httpRequest.headers['Custom-Header'] = 'value';
 *     });
 *     req.send(function(err, data) { ... });
 *
 * @!event sign(request)
 *   Triggered when the request is being signed. Listeners should
 *   add the correct authentication headers and/or adjust the body,
 *   depending on the authentication mechanism being used.
 *   @param (see AWS.Request~validate)
 *
 * @!group Request Sending Events
 *
 * @!event send(response)
 *   Triggered when the request is ready to be sent. Listeners
 *   should call the underlying transport layer to initiate
 *   the sending of the request.
 *   @param response [Response] the response object
 *   @context [Request] the request object that was sent
 *   @see AWS.EventListeners.Core.SEND
 *
 * @!event retry(response)
 *   Triggered when a request failed and might need to be retried or redirected.
 *   If the response is retryable, the listener should set the
 *   `response.error.retryable` property to `true`, and optionally set
 *   `response.error.retryDelay` to the millisecond delay for the next attempt.
 *   In the case of a redirect, `response.error.redirect` should be set to
 *   `true` with `retryDelay` set to an optional delay on the next request.
 *
 *   If a listener decides that a request should not be retried,
 *   it should set both `retryable` and `redirect` to false.
 *
 *   Note that a retryable error will be retried at most
 *   {AWS.Config.maxRetries} times (based on the service object's config).
 *   Similarly, a request that is redirected will only redirect at most
 *   {AWS.Config.maxRedirects} times.
 *
 *   @param (see AWS.Request~send)
 *   @context (see AWS.Request~send)
 *   @example Adding a custom retry for a 404 response
 *     request.on('retry', function(response) {
 *       // this resource is not yet available, wait 10 seconds to get it again
 *       if (response.httpResponse.statusCode === 404 && response.error) {
 *         response.error.retryable = true;   // retry this error
 *         response.error.retryDelay = 10000; // wait 10 seconds
 *       }
 *     });
 *
 * @!group Data Parsing Events
 *
 * @!event extractError(response)
 *   Triggered on all non-2xx requests so that listeners can extract
 *   error details from the response body. Listeners to this event
 *   should set the `response.error` property.
 *   @param (see AWS.Request~send)
 *   @context (see AWS.Request~send)
 *
 * @!event extractData(response)
 *   Triggered in successful requests to allow listeners to
 *   de-serialize the response body into `response.data`.
 *   @param (see AWS.Request~send)
 *   @context (see AWS.Request~send)
 *
 * @!group Completion Events
 *
 * @!event success(response)
 *   Triggered when the request completed successfully.
 *   `response.data` will contain the response data and
 *   `response.error` will be null.
 *   @param (see AWS.Request~send)
 *   @context (see AWS.Request~send)
 *
 * @!event error(error, response)
 *   Triggered when an error occurs at any point during the
 *   request. `response.error` will contain details about the error
 *   that occurred. `response.data` will be null.
 *   @param error [Error] the error object containing details about
 *     the error that occurred.
 *   @param (see AWS.Request~send)
 *   @context (see AWS.Request~send)
 *
 * @!event complete(response)
 *   Triggered whenever a request cycle completes. `response.error`
 *   should be checked, since the request may have failed.
 *   @param (see AWS.Request~send)
 *   @context (see AWS.Request~send)
 *
 * @!group HTTP Events
 *
 * @!event httpHeaders(statusCode, headers, response, statusMessage)
 *   Triggered when headers are sent by the remote server
 *   @param statusCode [Integer] the HTTP response code
 *   @param headers [map<String,String>] the response headers
 *   @param (see AWS.Request~send)
 *   @param statusMessage [String] A status message corresponding to the HTTP
 *                                 response code
 *   @context (see AWS.Request~send)
 *
 * @!event httpData(chunk, response)
 *   Triggered when data is sent by the remote server
 *   @param chunk [Buffer] the buffer data containing the next data chunk
 *     from the server
 *   @param (see AWS.Request~send)
 *   @context (see AWS.Request~send)
 *   @see AWS.EventListeners.Core.HTTP_DATA
 *
 * @!event httpUploadProgress(progress, response)
 *   Triggered when the HTTP request has uploaded more data
 *   @param progress [map] An object containing the `loaded` and `total` bytes
 *     of the request.
 *   @param (see AWS.Request~send)
 *   @context (see AWS.Request~send)
 *   @note This event will not be emitted in Node.js 0.8.x.
 *
 * @!event httpDownloadProgress(progress, response)
 *   Triggered when the HTTP request has downloaded more data
 *   @param progress [map] An object containing the `loaded` and `total` bytes
 *     of the request.
 *   @param (see AWS.Request~send)
 *   @context (see AWS.Request~send)
 *   @note This event will not be emitted in Node.js 0.8.x.
 *
 * @!event httpError(error, response)
 *   Triggered when the HTTP request failed
 *   @param error [Error] the error object that was thrown
 *   @param (see AWS.Request~send)
 *   @context (see AWS.Request~send)
 *
 * @!event httpDone(response)
 *   Triggered when the server is finished sending data
 *   @param (see AWS.Request~send)
 *   @context (see AWS.Request~send)
 *
 * @see AWS.Response
 */
AWS.Request = inherit({

  /**
   * Creates a request for an operation on a given service with
   * a set of input parameters.
   *
   * @param service [AWS.Service] the service to perform the operation on
   * @param operation [String] the operation to perform on the service
   * @param params [Object] parameters to send to the operation.
   *   See the operation's documentation for the format of the
   *   parameters.
   */
  constructor: function Request(service, operation, params) {
    var endpoint = service.endpoint;
    var region = service.config.region;
    var customUserAgent = service.config.customUserAgent;

    // global endpoints sign as us-east-1
    if (service.isGlobalEndpoint) region = 'us-east-1';

    this.domain = domain && domain.active;
    this.service = service;
    this.operation = operation;
    this.params = params || {};
    this.httpRequest = new AWS.HttpRequest(endpoint, region);
    this.httpRequest.appendToUserAgent(customUserAgent);
    this.startTime = service.getSkewCorrectedDate();

    this.response = new AWS.Response(this);
    this._asm = new AcceptorStateMachine(fsm.states, 'validate');
    this._haltHandlersOnError = false;

    AWS.SequentialExecutor.call(this);
    this.emit = this.emitEvent;
  },

  /**
   * @!group Sending a Request
   */

  /**
   * @overload send(callback = null)
   *   Sends the request object.
   *
   *   @callback callback function(err, data)
   *     If a callback is supplied, it is called when a response is returned
   *     from the service.
   *     @context [AWS.Request] the request object being sent.
   *     @param err [Error] the error object returned from the request.
   *       Set to `null` if the request is successful.
   *     @param data [Object] the de-serialized data returned from
   *       the request. Set to `null` if a request error occurs.
   *   @example Sending a request with a callback
   *     request = s3.putObject({Bucket: 'bucket', Key: 'key'});
   *     request.send(function(err, data) { console.log(err, data); });
   *   @example Sending a request with no callback (using event handlers)
   *     request = s3.putObject({Bucket: 'bucket', Key: 'key'});
   *     request.on('complete', function(response) { ... }); // register a callback
   *     request.send();
   */
  send: function send(callback) {
    if (callback) {
      // append to user agent
      this.httpRequest.appendToUserAgent('callback');
      this.on('complete', function (resp) {
        callback.call(resp, resp.error, resp.data);
      });
    }
    this.runTo();

    return this.response;
  },

  /**
   * @!method  promise()
   *   Sends the request and returns a 'thenable' promise.
   *
   *   Two callbacks can be provided to the `then` method on the returned promise.
   *   The first callback will be called if the promise is fulfilled, and the second
   *   callback will be called if the promise is rejected.
   *   @callback fulfilledCallback function(data)
   *     Called if the promise is fulfilled.
   *     @param data [Object] the de-serialized data returned from the request.
   *   @callback rejectedCallback function(error)
   *     Called if the promise is rejected.
   *     @param error [Error] the error object returned from the request.
   *   @return [Promise] A promise that represents the state of the request.
   *   @example Sending a request using promises.
   *     var request = s3.putObject({Bucket: 'bucket', Key: 'key'});
   *     var result = request.promise();
   *     result.then(function(data) { ... }, function(error) { ... });
   */

  /**
   * @api private
   */
  build: function build(callback) {
    return this.runTo('send', callback);
  },

  /**
   * @api private
   */
  runTo: function runTo(state, done) {
    this._asm.runTo(state, done, this);
    return this;
  },

  /**
   * Aborts a request, emitting the error and complete events.
   *
   * @!macro nobrowser
   * @example Aborting a request after sending
   *   var params = {
   *     Bucket: 'bucket', Key: 'key',
   *     Body: new Buffer(1024 * 1024 * 5) // 5MB payload
   *   };
   *   var request = s3.putObject(params);
   *   request.send(function (err, data) {
   *     if (err) console.log("Error:", err.code, err.message);
   *     else console.log(data);
   *   });
   *
   *   // abort request in 1 second
   *   setTimeout(request.abort.bind(request), 1000);
   *
   *   // prints "Error: RequestAbortedError Request aborted by user"
   * @return [AWS.Request] the same request object, for chaining.
   * @since v1.4.0
   */
  abort: function abort() {
    this.removeAllListeners('validateResponse');
    this.removeAllListeners('extractError');
    this.on('validateResponse', function addAbortedError(resp) {
      resp.error = AWS.util.error(new Error('Request aborted by user'), {
         code: 'RequestAbortedError', retryable: false
      });
    });

    if (this.httpRequest.stream && !this.httpRequest.stream.didCallback) { // abort HTTP stream
      this.httpRequest.stream.abort();
      if (this.httpRequest._abortCallback) {
         this.httpRequest._abortCallback();
      } else {
        this.removeAllListeners('send'); // haven't sent yet, so let's not
      }
    }

    return this;
  },

  /**
   * Iterates over each page of results given a pageable request, calling
   * the provided callback with each page of data. After all pages have been
   * retrieved, the callback is called with `null` data.
   *
   * @note This operation can generate multiple requests to a service.
   * @example Iterating over multiple pages of objects in an S3 bucket
   *   var pages = 1;
   *   s3.listObjects().eachPage(function(err, data) {
   *     if (err) return;
   *     console.log("Page", pages++);
   *     console.log(data);
   *   });
   * @example Iterating over multiple pages with an asynchronous callback
   *   s3.listObjects(params).eachPage(function(err, data, done) {
   *     doSomethingAsyncAndOrExpensive(function() {
   *       // The next page of results isn't fetched until done is called
   *       done();
   *     });
   *   });
   * @callback callback function(err, data, [doneCallback])
   *   Called with each page of resulting data from the request. If the
   *   optional `doneCallback` is provided in the function, it must be called
   *   when the callback is complete.
   *
   *   @param err [Error] an error object, if an error occurred.
   *   @param data [Object] a single page of response data. If there is no
   *     more data, this object will be `null`.
   *   @param doneCallback [Function] an optional done callback. If this
   *     argument is defined in the function declaration, it should be called
   *     when the next page is ready to be retrieved. This is useful for
   *     controlling serial pagination across asynchronous operations.
   *   @return [Boolean] if the callback returns `false`, pagination will
   *     stop.
   *
   * @see AWS.Request.eachItem
   * @see AWS.Response.nextPage
   * @since v1.4.0
   */
  eachPage: function eachPage(callback) {
    // Make all callbacks async-ish
    callback = AWS.util.fn.makeAsync(callback, 3);

    function wrappedCallback(response) {
      callback.call(response, response.error, response.data, function (result) {
        if (result === false) return;

        if (response.hasNextPage()) {
          response.nextPage().on('complete', wrappedCallback).send();
        } else {
          callback.call(response, null, null, AWS.util.fn.noop);
        }
      });
    }

    this.on('complete', wrappedCallback).send();
  },

  /**
   * Enumerates over individual items of a request, paging the responses if
   * necessary.
   *
   * @api experimental
   * @since v1.4.0
   */
  eachItem: function eachItem(callback) {
    var self = this;
    function wrappedCallback(err, data) {
      if (err) return callback(err, null);
      if (data === null) return callback(null, null);

      var config = self.service.paginationConfig(self.operation);
      var resultKey = config.resultKey;
      if (Array.isArray(resultKey)) resultKey = resultKey[0];
      var items = jmespath.search(data, resultKey);
      var continueIteration = true;
      AWS.util.arrayEach(items, function(item) {
        continueIteration = callback(null, item);
        if (continueIteration === false) {
          return AWS.util.abort;
        }
      });
      return continueIteration;
    }

    this.eachPage(wrappedCallback);
  },

  /**
   * @return [Boolean] whether the operation can return multiple pages of
   *   response data.
   * @see AWS.Response.eachPage
   * @since v1.4.0
   */
  isPageable: function isPageable() {
    return this.service.paginationConfig(this.operation) ? true : false;
  },

  /**
   * Sends the request and converts the request object into a readable stream
   * that can be read from or piped into a writable stream.
   *
   * @note The data read from a readable stream contains only
   *   the raw HTTP body contents.
   * @example Manually reading from a stream
   *   request.createReadStream().on('data', function(data) {
   *     console.log("Got data:", data.toString());
   *   });
   * @example Piping a request body into a file
   *   var out = fs.createWriteStream('/path/to/outfile.jpg');
   *   s3.service.getObject(params).createReadStream().pipe(out);
   * @return [Stream] the readable stream object that can be piped
   *   or read from (by registering 'data' event listeners).
   * @!macro nobrowser
   */
  createReadStream: function createReadStream() {
    var streams = AWS.util.stream;
    var req = this;
    var stream = null;

    if (AWS.HttpClient.streamsApiVersion === 2) {
      stream = new streams.PassThrough();
      process.nextTick(function() { req.send(); });
    } else {
      stream = new streams.Stream();
      stream.readable = true;

      stream.sent = false;
      stream.on('newListener', function(event) {
        if (!stream.sent && event === 'data') {
          stream.sent = true;
          process.nextTick(function() { req.send(); });
        }
      });
    }

    this.on('error', function(err) {
      stream.emit('error', err);
    });

    this.on('httpHeaders', function streamHeaders(statusCode, headers, resp) {
      if (statusCode < 300) {
        req.removeListener('httpData', AWS.EventListeners.Core.HTTP_DATA);
        req.removeListener('httpError', AWS.EventListeners.Core.HTTP_ERROR);
        req.on('httpError', function streamHttpError(error) {
          resp.error = error;
          resp.error.retryable = false;
        });

        var shouldCheckContentLength = false;
        var expectedLen;
        if (req.httpRequest.method !== 'HEAD') {
          expectedLen = parseInt(headers['content-length'], 10);
        }
        if (expectedLen !== undefined && !isNaN(expectedLen) && expectedLen >= 0) {
          shouldCheckContentLength = true;
          var receivedLen = 0;
        }

        var checkContentLengthAndEmit = function checkContentLengthAndEmit() {
          if (shouldCheckContentLength && receivedLen !== expectedLen) {
            stream.emit('error', AWS.util.error(
              new Error('Stream content length mismatch. Received ' +
                receivedLen + ' of ' + expectedLen + ' bytes.'),
              { code: 'StreamContentLengthMismatch' }
            ));
          } else if (AWS.HttpClient.streamsApiVersion === 2) {
            stream.end();
          } else {
            stream.emit('end');
          }
        };

        var httpStream = resp.httpResponse.createUnbufferedStream();

        if (AWS.HttpClient.streamsApiVersion === 2) {
          if (shouldCheckContentLength) {
            var lengthAccumulator = new streams.PassThrough();
            lengthAccumulator._write = function(chunk) {
              if (chunk && chunk.length) {
                receivedLen += chunk.length;
              }
              return streams.PassThrough.prototype._write.apply(this, arguments);
            };

            lengthAccumulator.on('end', checkContentLengthAndEmit);
            stream.on('error', function(err) {
              shouldCheckContentLength = false;
              httpStream.unpipe(lengthAccumulator);
              lengthAccumulator.emit('end');
              lengthAccumulator.end();
            });
            httpStream.pipe(lengthAccumulator).pipe(stream, { end: false });
          } else {
            httpStream.pipe(stream);
          }
        } else {

          if (shouldCheckContentLength) {
            httpStream.on('data', function(arg) {
              if (arg && arg.length) {
                receivedLen += arg.length;
              }
            });
          }

          httpStream.on('data', function(arg) {
            stream.emit('data', arg);
          });
          httpStream.on('end', checkContentLengthAndEmit);
        }

        httpStream.on('error', function(err) {
          shouldCheckContentLength = false;
          stream.emit('error', err);
        });
      }
    });

    return stream;
  },

  /**
   * @param [Array,Response] args This should be the response object,
   *   or an array of args to send to the event.
   * @api private
   */
  emitEvent: function emit(eventName, args, done) {
    if (typeof args === 'function') { done = args; args = null; }
    if (!done) done = function() { };
    if (!args) args = this.eventParameters(eventName, this.response);

    var origEmit = AWS.SequentialExecutor.prototype.emit;
    origEmit.call(this, eventName, args, function (err) {
      if (err) this.response.error = err;
      done.call(this, err);
    });
  },

  /**
   * @api private
   */
  eventParameters: function eventParameters(eventName) {
    switch (eventName) {
      case 'restart':
      case 'validate':
      case 'sign':
      case 'build':
      case 'afterValidate':
      case 'afterBuild':
        return [this];
      case 'error':
        return [this.response.error, this.response];
      default:
        return [this.response];
    }
  },

  /**
   * @api private
   */
  presign: function presign(expires, callback) {
    if (!callback && typeof expires === 'function') {
      callback = expires;
      expires = null;
    }
    return new AWS.Signers.Presign().sign(this.toGet(), expires, callback);
  },

  /**
   * @api private
   */
  isPresigned: function isPresigned() {
    return Object.prototype.hasOwnProperty.call(this.httpRequest.headers, 'presigned-expires');
  },

  /**
   * @api private
   */
  toUnauthenticated: function toUnauthenticated() {
    this.removeListener('validate', AWS.EventListeners.Core.VALIDATE_CREDENTIALS);
    this.removeListener('sign', AWS.EventListeners.Core.SIGN);
    return this;
  },

  /**
   * @api private
   */
  toGet: function toGet() {
    if (this.service.api.protocol === 'query' ||
        this.service.api.protocol === 'ec2') {
      this.removeListener('build', this.buildAsGet);
      this.addListener('build', this.buildAsGet);
    }
    return this;
  },

  /**
   * @api private
   */
  buildAsGet: function buildAsGet(request) {
    request.httpRequest.method = 'GET';
    request.httpRequest.path = request.service.endpoint.path +
                               '?' + request.httpRequest.body;
    request.httpRequest.body = '';

    // don't need these headers on a GET request
    delete request.httpRequest.headers['Content-Length'];
    delete request.httpRequest.headers['Content-Type'];
  },

  /**
   * @api private
   */
  haltHandlersOnError: function haltHandlersOnError() {
    this._haltHandlersOnError = true;
  }
});

/**
 * @api private
 */
AWS.Request.addPromisesToClass = function addPromisesToClass(PromiseDependency) {
  this.prototype.promise = function promise() {
    var self = this;
    // append to user agent
    this.httpRequest.appendToUserAgent('promise');
    return new PromiseDependency(function(resolve, reject) {
      self.on('complete', function(resp) {
        if (resp.error) {
          reject(resp.error);
        } else {
          // define $response property so that it is not enumberable
          // this prevents circular reference errors when stringifying the JSON object
          resolve(Object.defineProperty(
            resp.data || {},
            '$response',
            {value: resp}
          ));
        }
      });
      self.runTo();
    });
  };
};

/**
 * @api private
 */
AWS.Request.deletePromisesFromClass = function deletePromisesFromClass() {
  delete this.prototype.promise;
};

AWS.util.addPromises(AWS.Request);

AWS.util.mixin(AWS.Request, AWS.SequentialExecutor);

}).call(this,require('_process'))
},{"./core":239,"./state_machine":302,"_process":453,"jmespath":312}],275:[function(require,module,exports){
/**
 * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"). You
 * may not use this file except in compliance with the License. A copy of
 * the License is located at
 *
 *     http://aws.amazon.com/apache2.0/
 *
 * or in the "license" file accompanying this file. This file is
 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
 * ANY KIND, either express or implied. See the License for the specific
 * language governing permissions and limitations under the License.
 */

var AWS = require('./core');
var inherit = AWS.util.inherit;
var jmespath = require('jmespath');

/**
 * @api private
 */
function CHECK_ACCEPTORS(resp) {
  var waiter = resp.request._waiter;
  var acceptors = waiter.config.acceptors;
  var acceptorMatched = false;
  var state = 'retry';

  acceptors.forEach(function(acceptor) {
    if (!acceptorMatched) {
      var matcher = waiter.matchers[acceptor.matcher];
      if (matcher && matcher(resp, acceptor.expected, acceptor.argument)) {
        acceptorMatched = true;
        state = acceptor.state;
      }
    }
  });

  if (!acceptorMatched && resp.error) state = 'failure';

  if (state === 'success') {
    waiter.setSuccess(resp);
  } else {
    waiter.setError(resp, state === 'retry');
  }
}

/**
 * @api private
 */
AWS.ResourceWaiter = inherit({
  /**
   * Waits for a given state on a service object
   * @param service [Service] the service object to wait on
   * @param state [String] the state (defined in waiter configuration) to wait
   *   for.
   * @example Create a waiter for running EC2 instances
   *   var ec2 = new AWS.EC2;
   *   var waiter = new AWS.ResourceWaiter(ec2, 'instanceRunning');
   */
  constructor: function constructor(service, state) {
    this.service = service;
    this.state = state;
    this.loadWaiterConfig(this.state);
  },

  service: null,

  state: null,

  config: null,

  matchers: {
    path: function(resp, expected, argument) {
      try {
        var result = jmespath.search(resp.data, argument);
      } catch (err) {
        return false;
      }

      return jmespath.strictDeepEqual(result,expected);
    },

    pathAll: function(resp, expected, argument) {
      try {
        var results = jmespath.search(resp.data, argument);
      } catch (err) {
        return false;
      }

      if (!Array.isArray(results)) results = [results];
      var numResults = results.length;
      if (!numResults) return false;
      for (var ind = 0 ; ind < numResults; ind++) {
        if (!jmespath.strictDeepEqual(results[ind], expected)) {
          return false;
        }
      }
      return true;
    },

    pathAny: function(resp, expected, argument) {
      try {
        var results = jmespath.search(resp.data, argument);
      } catch (err) {
        return false;
      }

      if (!Array.isArray(results)) results = [results];
      var numResults = results.length;
      for (var ind = 0 ; ind < numResults; ind++) {
        if (jmespath.strictDeepEqual(results[ind], expected)) {
          return true;
        }
      }
      return false;
    },

    status: function(resp, expected) {
      var statusCode = resp.httpResponse.statusCode;
      return (typeof statusCode === 'number') && (statusCode === expected);
    },

    error: function(resp, expected) {
      if (typeof expected === 'string' && resp.error) {
        return expected === resp.error.code;
      }
      // if expected is not string, can be boolean indicating presence of error
      return expected === !!resp.error;
    }
  },

  listeners: new AWS.SequentialExecutor().addNamedListeners(function(add) {
    add('RETRY_CHECK', 'retry', function(resp) {
      var waiter = resp.request._waiter;
      if (resp.error && resp.error.code === 'ResourceNotReady') {
        resp.error.retryDelay = (waiter.config.delay || 0) * 1000;
      }
    });

    add('CHECK_OUTPUT', 'extractData', CHECK_ACCEPTORS);

    add('CHECK_ERROR', 'extractError', CHECK_ACCEPTORS);
  }),

  /**
   * @return [AWS.Request]
   */
  wait: function wait(params, callback) {
    if (typeof params === 'function') {
      callback = params; params = undefined;
    }

    if (params && params.$waiter) {
      params = AWS.util.copy(params);
      if (typeof params.$waiter.delay === 'number') {
        this.config.delay = params.$waiter.delay;
      }
      if (typeof params.$waiter.maxAttempts === 'number') {
        this.config.maxAttempts = params.$waiter.maxAttempts;
      }
      delete params.$waiter;
    }

    var request = this.service.makeRequest(this.config.operation, params);
    request._waiter = this;
    request.response.maxRetries = this.config.maxAttempts;
    request.addListeners(this.listeners);

    if (callback) request.send(callback);
    return request;
  },

  setSuccess: function setSuccess(resp) {
    resp.error = null;
    resp.data = resp.data || {};
    resp.request.removeAllListeners('extractData');
  },

  setError: function setError(resp, retryable) {
    resp.data = null;
    resp.error = AWS.util.error(resp.error || new Error(), {
      code: 'ResourceNotReady',
      message: 'Resource is not in the state ' + this.state,
      retryable: retryable
    });
  },

  /**
   * Loads waiter configuration from API configuration
   *
   * @api private
   */
  loadWaiterConfig: function loadWaiterConfig(state) {
    if (!this.service.api.waiters[state]) {
      throw new AWS.util.error(new Error(), {
        code: 'StateNotFoundError',
        message: 'State ' + state + ' not found.'
      });
    }

    this.config = AWS.util.copy(this.service.api.waiters[state]);
  }
});

},{"./core":239,"jmespath":312}],276:[function(require,module,exports){
var AWS = require('./core');
var inherit = AWS.util.inherit;
var jmespath = require('jmespath');

/**
 * This class encapsulates the response information
 * from a service request operation sent through {AWS.Request}.
 * The response object has two main properties for getting information
 * back from a request:
 *
 * ## The `data` property
 *
 * The `response.data` property contains the serialized object data
 * retrieved from the service request. For instance, for an
 * Amazon DynamoDB `listTables` method call, the response data might
 * look like:
 *
 * ```
 * > resp.data
 * { TableNames:
 *    [ 'table1', 'table2', ... ] }
 * ```
 *
 * The `data` property can be null if an error occurs (see below).
 *
 * ## The `error` property
 *
 * In the event of a service error (or transfer error), the
 * `response.error` property will be filled with the given
 * error data in the form:
 *
 * ```
 * { code: 'SHORT_UNIQUE_ERROR_CODE',
 *   message: 'Some human readable error message' }
 * ```
 *
 * In the case of an error, the `data` property will be `null`.
 * Note that if you handle events that can be in a failure state,
 * you should always check whether `response.error` is set
 * before attempting to access the `response.data` property.
 *
 * @!attribute data
 *   @readonly
 *   @!group Data Properties
 *   @note Inside of a {AWS.Request~httpData} event, this
 *     property contains a single raw packet instead of the
 *     full de-serialized service response.
 *   @return [Object] the de-serialized response data
 *     from the service.
 *
 * @!attribute error
 *   An structure containing information about a service
 *   or networking error.
 *   @readonly
 *   @!group Data Properties
 *   @note This attribute is only filled if a service or
 *     networking error occurs.
 *   @return [Error]
 *     * code [String] a unique short code representing the
 *       error that was emitted.
 *     * message [String] a longer human readable error message
 *     * retryable [Boolean] whether the error message is
 *       retryable.
 *     * statusCode [Numeric] in the case of a request that reached the service,
 *       this value contains the response status code.
 *     * time [Date] the date time object when the error occurred.
 *     * hostname [String] set when a networking error occurs to easily
 *       identify the endpoint of the request.
 *     * region [String] set when a networking error occurs to easily
 *       identify the region of the request.
 *
 * @!attribute requestId
 *   @readonly
 *   @!group Data Properties
 *   @return [String] the unique request ID associated with the response.
 *     Log this value when debugging requests for AWS support.
 *
 * @!attribute retryCount
 *   @readonly
 *   @!group Operation Properties
 *   @return [Integer] the number of retries that were
 *     attempted before the request was completed.
 *
 * @!attribute redirectCount
 *   @readonly
 *   @!group Operation Properties
 *   @return [Integer] the number of redirects that were
 *     followed before the request was completed.
 *
 * @!attribute httpResponse
 *   @readonly
 *   @!group HTTP Properties
 *   @return [AWS.HttpResponse] the raw HTTP response object
 *     containing the response headers and body information
 *     from the server.
 *
 * @see AWS.Request
 */
AWS.Response = inherit({

  /**
   * @api private
   */
  constructor: function Response(request) {
    this.request = request;
    this.data = null;
    this.error = null;
    this.retryCount = 0;
    this.redirectCount = 0;
    this.httpResponse = new AWS.HttpResponse();
    if (request) {
      this.maxRetries = request.service.numRetries();
      this.maxRedirects = request.service.config.maxRedirects;
    }
  },

  /**
   * Creates a new request for the next page of response data, calling the
   * callback with the page data if a callback is provided.
   *
   * @callback callback function(err, data)
   *   Called when a page of data is returned from the next request.
   *
   *   @param err [Error] an error object, if an error occurred in the request
   *   @param data [Object] the next page of data, or null, if there are no
   *     more pages left.
   * @return [AWS.Request] the request object for the next page of data
   * @return [null] if no callback is provided and there are no pages left
   *   to retrieve.
   * @since v1.4.0
   */
  nextPage: function nextPage(callback) {
    var config;
    var service = this.request.service;
    var operation = this.request.operation;
    try {
      config = service.paginationConfig(operation, true);
    } catch (e) { this.error = e; }

    if (!this.hasNextPage()) {
      if (callback) callback(this.error, null);
      else if (this.error) throw this.error;
      return null;
    }

    var params = AWS.util.copy(this.request.params);
    if (!this.nextPageTokens) {
      return callback ? callback(null, null) : null;
    } else {
      var inputTokens = config.inputToken;
      if (typeof inputTokens === 'string') inputTokens = [inputTokens];
      for (var i = 0; i < inputTokens.length; i++) {
        params[inputTokens[i]] = this.nextPageTokens[i];
      }
      return service.makeRequest(this.request.operation, params, callback);
    }
  },

  /**
   * @return [Boolean] whether more pages of data can be returned by further
   *   requests
   * @since v1.4.0
   */
  hasNextPage: function hasNextPage() {
    this.cacheNextPageTokens();
    if (this.nextPageTokens) return true;
    if (this.nextPageTokens === undefined) return undefined;
    else return false;
  },

  /**
   * @api private
   */
  cacheNextPageTokens: function cacheNextPageTokens() {
    if (Object.prototype.hasOwnProperty.call(this, 'nextPageTokens')) return this.nextPageTokens;
    this.nextPageTokens = undefined;

    var config = this.request.service.paginationConfig(this.request.operation);
    if (!config) return this.nextPageTokens;

    this.nextPageTokens = null;
    if (config.moreResults) {
      if (!jmespath.search(this.data, config.moreResults)) {
        return this.nextPageTokens;
      }
    }

    var exprs = config.outputToken;
    if (typeof exprs === 'string') exprs = [exprs];
    AWS.util.arrayEach.call(this, exprs, function (expr) {
      var output = jmespath.search(this.data, expr);
      if (output) {
        this.nextPageTokens = this.nextPageTokens || [];
        this.nextPageTokens.push(output);
      }
    });

    return this.nextPageTokens;
  }

});

},{"./core":239,"jmespath":312}],277:[function(require,module,exports){
var AWS = require('../core');
var byteLength = AWS.util.string.byteLength;
var Buffer = AWS.util.Buffer;

/**
 * The managed uploader allows for easy and efficient uploading of buffers,
 * blobs, or streams, using a configurable amount of concurrency to perform
 * multipart uploads where possible. This abstraction also enables uploading
 * streams of unknown size due to the use of multipart uploads.
 *
 * To construct a managed upload object, see the {constructor} function.
 *
 * ## Tracking upload progress
 *
 * The managed upload object can also track progress by attaching an
 * 'httpUploadProgress' listener to the upload manager. This event is similar
 * to {AWS.Request~httpUploadProgress} but groups all concurrent upload progress
 * into a single event. See {AWS.S3.ManagedUpload~httpUploadProgress} for more
 * information.
 *
 * ## Handling Multipart Cleanup
 *
 * By default, this class will automatically clean up any multipart uploads
 * when an individual part upload fails. This behavior can be disabled in order
 * to manually handle failures by setting the `leavePartsOnError` configuration
 * option to `true` when initializing the upload object.
 *
 * @!event httpUploadProgress(progress)
 *   Triggered when the uploader has uploaded more data.
 *   @note The `total` property may not be set if the stream being uploaded has
 *     not yet finished chunking. In this case the `total` will be undefined
 *     until the total stream size is known.
 *   @note This event will not be emitted in Node.js 0.8.x.
 *   @param progress [map] An object containing the `loaded` and `total` bytes
 *     of the request and the `key` of the S3 object. Note that `total` may be undefined until the payload
 *     size is known.
 *   @context (see AWS.Request~send)
 */
AWS.S3.ManagedUpload = AWS.util.inherit({
  /**
   * Creates a managed upload object with a set of configuration options.
   *
   * @note A "Body" parameter is required to be set prior to calling {send}.
   * @option options params [map] a map of parameters to pass to the upload
   *   requests. The "Body" parameter is required to be specified either on
   *   the service or in the params option.
   * @note ContentMD5 should not be provided when using the managed upload object.
   *   Instead, setting "computeChecksums" to true will enable automatic ContentMD5 generation
   *   by the managed upload object.
   * @option options queueSize [Number] (4) the size of the concurrent queue
   *   manager to upload parts in parallel. Set to 1 for synchronous uploading
   *   of parts. Note that the uploader will buffer at most queueSize * partSize
   *   bytes into memory at any given time.
   * @option options partSize [Number] (5mb) the size in bytes for each
   *   individual part to be uploaded. Adjust the part size to ensure the number
   *   of parts does not exceed {maxTotalParts}. See {minPartSize} for the
   *   minimum allowed part size.
   * @option options leavePartsOnError [Boolean] (false) whether to abort the
   *   multipart upload if an error occurs. Set to true if you want to handle
   *   failures manually.
   * @option options service [AWS.S3] an optional S3 service object to use for
   *   requests. This object might have bound parameters used by the uploader.
   * @option options tags [Array<map>] The tags to apply to the uploaded object.
   *   Each tag should have a `Key` and `Value` keys.
   * @example Creating a default uploader for a stream object
   *   var upload = new AWS.S3.ManagedUpload({
   *     params: {Bucket: 'bucket', Key: 'key', Body: stream}
   *   });
   * @example Creating an uploader with concurrency of 1 and partSize of 10mb
   *   var upload = new AWS.S3.ManagedUpload({
   *     partSize: 10 * 1024 * 1024, queueSize: 1,
   *     params: {Bucket: 'bucket', Key: 'key', Body: stream}
   *   });
   * @example Creating an uploader with tags
   *   var upload = new AWS.S3.ManagedUpload({
   *     params: {Bucket: 'bucket', Key: 'key', Body: stream},
   *     tags: [{Key: 'tag1', Value: 'value1'}, {Key: 'tag2', Value: 'value2'}]
   *   });
   * @see send
   */
  constructor: function ManagedUpload(options) {
    var self = this;
    AWS.SequentialExecutor.call(self);
    self.body = null;
    self.sliceFn = null;
    self.callback = null;
    self.parts = {};
    self.completeInfo = [];
    self.fillQueue = function() {
      self.callback(new Error('Unsupported body payload ' + typeof self.body));
    };

    self.configure(options);
  },

  /**
   * @api private
   */
  configure: function configure(options) {
    options = options || {};
    this.partSize = this.minPartSize;

    if (options.queueSize) this.queueSize = options.queueSize;
    if (options.partSize) this.partSize = options.partSize;
    if (options.leavePartsOnError) this.leavePartsOnError = true;
    if (options.tags) {
      if (!Array.isArray(options.tags)) {
        throw new Error('Tags must be specified as an array; ' +
          typeof options.tags + ' provided.');
      }
      this.tags = options.tags;
    }

    if (this.partSize < this.minPartSize) {
      throw new Error('partSize must be greater than ' +
                      this.minPartSize);
    }

    this.service = options.service;
    this.bindServiceObject(options.params);
    this.validateBody();
    this.adjustTotalBytes();
  },

  /**
   * @api private
   */
  leavePartsOnError: false,

  /**
   * @api private
   */
  queueSize: 4,

  /**
   * @api private
   */
  partSize: null,

  /**
   * @readonly
   * @return [Number] the minimum number of bytes for an individual part
   *   upload.
   */
  minPartSize: 1024 * 1024 * 5,

  /**
   * @readonly
   * @return [Number] the maximum allowed number of parts in a multipart upload.
   */
  maxTotalParts: 10000,

  /**
   * Initiates the managed upload for the payload.
   *
   * @callback callback function(err, data)
   *   @param err [Error] an error or null if no error occurred.
   *   @param data [map] The response data from the successful upload:
   *     * `Location` (String) the URL of the uploaded object
   *     * `ETag` (String) the ETag of the uploaded object
   *     * `Bucket` (String) the bucket to which the object was uploaded
   *     * `Key` (String) the key to which the object was uploaded
   * @example Sending a managed upload object
   *   var params = {Bucket: 'bucket', Key: 'key', Body: stream};
   *   var upload = new AWS.S3.ManagedUpload({params: params});
   *   upload.send(function(err, data) {
   *     console.log(err, data);
   *   });
   */
  send: function(callback) {
    var self = this;
    self.failed = false;
    self.callback = callback || function(err) { if (err) throw err; };

    var runFill = true;
    if (self.sliceFn) {
      self.fillQueue = self.fillBuffer;
    } else if (AWS.util.isNode()) {
      var Stream = AWS.util.stream.Stream;
      if (self.body instanceof Stream) {
        runFill = false;
        self.fillQueue = self.fillStream;
        self.partBuffers = [];
        self.body.
          on('error', function(err) { self.cleanup(err); }).
          on('readable', function() { self.fillQueue(); }).
          on('end', function() {
            self.isDoneChunking = true;
            self.numParts = self.totalPartNumbers;
            self.fillQueue.call(self);

            if (self.isDoneChunking && self.totalPartNumbers >= 1 && self.doneParts === self.numParts) {
              self.finishMultiPart();
            }
          });
      }
    }

    if (runFill) self.fillQueue.call(self);
  },

  /**
   * @!method  promise()
   *   Returns a 'thenable' promise.
   *
   *   Two callbacks can be provided to the `then` method on the returned promise.
   *   The first callback will be called if the promise is fulfilled, and the second
   *   callback will be called if the promise is rejected.
   *   @callback fulfilledCallback function(data)
   *     Called if the promise is fulfilled.
   *     @param data [map] The response data from the successful upload:
   *       `Location` (String) the URL of the uploaded object
   *       `ETag` (String) the ETag of the uploaded object
   *       `Bucket` (String) the bucket to which the object was uploaded
   *       `Key` (String) the key to which the object was uploaded
   *   @callback rejectedCallback function(err)
   *     Called if the promise is rejected.
   *     @param err [Error] an error or null if no error occurred.
   *   @return [Promise] A promise that represents the state of the upload request.
   *   @example Sending an upload request using promises.
   *     var upload = s3.upload({Bucket: 'bucket', Key: 'key', Body: stream});
   *     var promise = upload.promise();
   *     promise.then(function(data) { ... }, function(err) { ... });
   */

  /**
   * Aborts a managed upload, including all concurrent upload requests.
   * @note By default, calling this function will cleanup a multipart upload
   *   if one was created. To leave the multipart upload around after aborting
   *   a request, configure `leavePartsOnError` to `true` in the {constructor}.
   * @note Calling {abort} in the browser environment will not abort any requests
   *   that are already in flight. If a multipart upload was created, any parts
   *   not yet uploaded will not be sent, and the multipart upload will be cleaned up.
   * @example Aborting an upload
   *   var params = {
   *     Bucket: 'bucket', Key: 'key',
   *     Body: new Buffer(1024 * 1024 * 25) // 25MB payload
   *   };
   *   var upload = s3.upload(params);
   *   upload.send(function (err, data) {
   *     if (err) console.log("Error:", err.code, err.message);
   *     else console.log(data);
   *   });
   *
   *   // abort request in 1 second
   *   setTimeout(upload.abort.bind(upload), 1000);
   */
  abort: function() {
    this.cleanup(AWS.util.error(new Error('Request aborted by user'), {
      code: 'RequestAbortedError', retryable: false
    }));
  },

  /**
   * @api private
   */
  validateBody: function validateBody() {
    var self = this;
    self.body = self.service.config.params.Body;
    if (typeof self.body === 'string') {
      self.body = new AWS.util.Buffer(self.body);
    } else if (!self.body) {
      throw new Error('params.Body is required');
    }
    self.sliceFn = AWS.util.arraySliceFn(self.body);
  },

  /**
   * @api private
   */
  bindServiceObject: function bindServiceObject(params) {
    params = params || {};
    var self = this;
    // bind parameters to new service object
    if (!self.service) {
      self.service = new AWS.S3({params: params});
    } else {
      var service = self.service;
      var config = AWS.util.copy(service.config);
      config.signatureVersion = service.getSignatureVersion();
      self.service = new service.constructor.__super__(config);
      self.service.config.params =
        AWS.util.merge(self.service.config.params || {}, params);
    }
  },

  /**
   * @api private
   */
  adjustTotalBytes: function adjustTotalBytes() {
    var self = this;
    try { // try to get totalBytes
      self.totalBytes = byteLength(self.body);
    } catch (e) { }

    // try to adjust partSize if we know payload length
    if (self.totalBytes) {
      var newPartSize = Math.ceil(self.totalBytes / self.maxTotalParts);
      if (newPartSize > self.partSize) self.partSize = newPartSize;
    } else {
      self.totalBytes = undefined;
    }
  },

  /**
   * @api private
   */
  isDoneChunking: false,

  /**
   * @api private
   */
  partPos: 0,

  /**
   * @api private
   */
  totalChunkedBytes: 0,

  /**
   * @api private
   */
  totalUploadedBytes: 0,

  /**
   * @api private
   */
  totalBytes: undefined,

  /**
   * @api private
   */
  numParts: 0,

  /**
   * @api private
   */
  totalPartNumbers: 0,

  /**
   * @api private
   */
  activeParts: 0,

  /**
   * @api private
   */
  doneParts: 0,

  /**
   * @api private
   */
  parts: null,

  /**
   * @api private
   */
  completeInfo: null,

  /**
   * @api private
   */
  failed: false,

  /**
   * @api private
   */
  multipartReq: null,

  /**
   * @api private
   */
  partBuffers: null,

  /**
   * @api private
   */
  partBufferLength: 0,

  /**
   * @api private
   */
  fillBuffer: function fillBuffer() {
    var self = this;
    var bodyLen = byteLength(self.body);

    if (bodyLen === 0) {
      self.isDoneChunking = true;
      self.numParts = 1;
      self.nextChunk(self.body);
      return;
    }

    while (self.activeParts < self.queueSize && self.partPos < bodyLen) {
      var endPos = Math.min(self.partPos + self.partSize, bodyLen);
      var buf = self.sliceFn.call(self.body, self.partPos, endPos);
      self.partPos += self.partSize;

      if (byteLength(buf) < self.partSize || self.partPos === bodyLen) {
        self.isDoneChunking = true;
        self.numParts = self.totalPartNumbers + 1;
      }
      self.nextChunk(buf);
    }
  },

  /**
   * @api private
   */
  fillStream: function fillStream() {
    var self = this;
    if (self.activeParts >= self.queueSize) return;

    var buf = self.body.read(self.partSize - self.partBufferLength) ||
              self.body.read();
    if (buf) {
      self.partBuffers.push(buf);
      self.partBufferLength += buf.length;
      self.totalChunkedBytes += buf.length;
    }

    if (self.partBufferLength >= self.partSize) {
      // if we have single buffer we avoid copyfull concat
      var pbuf = self.partBuffers.length === 1 ?
        self.partBuffers[0] : Buffer.concat(self.partBuffers);
      self.partBuffers = [];
      self.partBufferLength = 0;

      // if we have more than partSize, push the rest back on the queue
      if (pbuf.length > self.partSize) {
        var rest = pbuf.slice(self.partSize);
        self.partBuffers.push(rest);
        self.partBufferLength += rest.length;
        pbuf = pbuf.slice(0, self.partSize);
      }

      self.nextChunk(pbuf);
    }

    if (self.isDoneChunking && !self.isDoneSending) {
      // if we have single buffer we avoid copyfull concat
      pbuf = self.partBuffers.length === 1 ?
          self.partBuffers[0] : Buffer.concat(self.partBuffers);
      self.partBuffers = [];
      self.partBufferLength = 0;
      self.totalBytes = self.totalChunkedBytes;
      self.isDoneSending = true;

      if (self.numParts === 0 || pbuf.length > 0) {
        self.numParts++;
        self.nextChunk(pbuf);
      }
    }

    self.body.read(0);
  },

  /**
   * @api private
   */
  nextChunk: function nextChunk(chunk) {
    var self = this;
    if (self.failed) return null;

    var partNumber = ++self.totalPartNumbers;
    if (self.isDoneChunking && partNumber === 1) {
      var params = {Body: chunk};
      if (this.tags) {
        params.Tagging = this.getTaggingHeader();
      }
      var req = self.service.putObject(params);
      req._managedUpload = self;
      req.on('httpUploadProgress', self.progress).send(self.finishSinglePart);
      return null;
    } else if (self.service.config.params.ContentMD5) {
      var err = AWS.util.error(new Error('The Content-MD5 you specified is invalid for multi-part uploads.'), {
        code: 'InvalidDigest', retryable: false
      });

      self.cleanup(err);
      return null;
    }

    if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) {
      return null; // Already uploaded this part.
    }

    self.activeParts++;
    if (!self.service.config.params.UploadId) {

      if (!self.multipartReq) { // create multipart
        self.multipartReq = self.service.createMultipartUpload();
        self.multipartReq.on('success', function(resp) {
          self.service.config.params.UploadId = resp.data.UploadId;
          self.multipartReq = null;
        });
        self.queueChunks(chunk, partNumber);
        self.multipartReq.on('error', function(err) {
          self.cleanup(err);
        });
        self.multipartReq.send();
      } else {
        self.queueChunks(chunk, partNumber);
      }
    } else { // multipart is created, just send
      self.uploadPart(chunk, partNumber);
    }
  },

  /**
   * @api private
   */
  getTaggingHeader: function getTaggingHeader() {
    var kvPairStrings = [];
    for (var i = 0; i < this.tags.length; i++) {
      kvPairStrings.push(AWS.util.uriEscape(this.tags[i].Key) + '=' +
        AWS.util.uriEscape(this.tags[i].Value));
    }

    return kvPairStrings.join('&');
  },

  /**
   * @api private
   */
  uploadPart: function uploadPart(chunk, partNumber) {
    var self = this;

    var partParams = {
      Body: chunk,
      ContentLength: AWS.util.string.byteLength(chunk),
      PartNumber: partNumber
    };

    var partInfo = {ETag: null, PartNumber: partNumber};
    self.completeInfo[partNumber] = partInfo;

    var req = self.service.uploadPart(partParams);
    self.parts[partNumber] = req;
    req._lastUploadedBytes = 0;
    req._managedUpload = self;
    req.on('httpUploadProgress', self.progress);
    req.send(function(err, data) {
      delete self.parts[partParams.PartNumber];
      self.activeParts--;

      if (!err && (!data || !data.ETag)) {
        var message = 'No access to ETag property on response.';
        if (AWS.util.isBrowser()) {
          message += ' Check CORS configuration to expose ETag header.';
        }

        err = AWS.util.error(new Error(message), {
          code: 'ETagMissing', retryable: false
        });
      }
      if (err) return self.cleanup(err);

      partInfo.ETag = data.ETag;
      self.doneParts++;
      if (self.isDoneChunking && self.doneParts === self.numParts) {
        self.finishMultiPart();
      } else {
        self.fillQueue.call(self);
      }
    });
  },

  /**
   * @api private
   */
  queueChunks: function queueChunks(chunk, partNumber) {
    var self = this;
    self.multipartReq.on('success', function() {
      self.uploadPart(chunk, partNumber);
    });
  },

  /**
   * @api private
   */
  cleanup: function cleanup(err) {
    var self = this;
    if (self.failed) return;

    // clean up stream
    if (typeof self.body.removeAllListeners === 'function' &&
        typeof self.body.resume === 'function') {
      self.body.removeAllListeners('readable');
      self.body.removeAllListeners('end');
      self.body.resume();
    }

    // cleanup multipartReq listeners
    if (self.multipartReq) {
      self.multipartReq.removeAllListeners('success');
      self.multipartReq.removeAllListeners('error');
      self.multipartReq.removeAllListeners('complete');
      delete self.multipartReq;
    }

    if (self.service.config.params.UploadId && !self.leavePartsOnError) {
      self.service.abortMultipartUpload().send();
    } else if (self.leavePartsOnError) {
      self.isDoneChunking = false;
    }

    AWS.util.each(self.parts, function(partNumber, part) {
      part.removeAllListeners('complete');
      part.abort();
    });

    self.activeParts = 0;
    self.partPos = 0;
    self.numParts = 0;
    self.totalPartNumbers = 0;
    self.parts = {};
    self.failed = true;
    self.callback(err);
  },

  /**
   * @api private
   */
  finishMultiPart: function finishMultiPart() {
    var self = this;
    var completeParams = { MultipartUpload: { Parts: self.completeInfo.slice(1) } };
    self.service.completeMultipartUpload(completeParams, function(err, data) {
      if (err) {
        return self.cleanup(err);
      }

      if (data && typeof data.Location === 'string') {
        data.Location = data.Location.replace(/%2F/g, '/');
      }

      if (Array.isArray(self.tags)) {
        self.service.putObjectTagging(
          {Tagging: {TagSet: self.tags}},
          function(e, d) {
            if (e) {
              self.callback(e);
            } else {
              self.callback(e, data);
            }
          }
        );
      } else {
        self.callback(err, data);
      }
    });
  },

  /**
   * @api private
   */
  finishSinglePart: function finishSinglePart(err, data) {
    var upload = this.request._managedUpload;
    var httpReq = this.request.httpRequest;
    var endpoint = httpReq.endpoint;
    if (err) return upload.callback(err);
    data.Location =
      [endpoint.protocol, '//', endpoint.host, httpReq.path].join('');
    data.key = this.request.params.Key; // will stay undocumented
    data.Key = this.request.params.Key;
    data.Bucket = this.request.params.Bucket;
    upload.callback(err, data);
  },

  /**
   * @api private
   */
  progress: function progress(info) {
    var upload = this._managedUpload;
    if (this.operation === 'putObject') {
      info.part = 1;
      info.key = this.params.Key;
    } else {
      upload.totalUploadedBytes += info.loaded - this._lastUploadedBytes;
      this._lastUploadedBytes = info.loaded;
      info = {
        loaded: upload.totalUploadedBytes,
        total: upload.totalBytes,
        part: this.params.PartNumber,
        key: this.params.Key
      };
    }
    upload.emit('httpUploadProgress', [info]);
  }
});

AWS.util.mixin(AWS.S3.ManagedUpload, AWS.SequentialExecutor);

/**
 * @api private
 */
AWS.S3.ManagedUpload.addPromisesToClass = function addPromisesToClass(PromiseDependency) {
  this.prototype.promise = AWS.util.promisifyMethod('send', PromiseDependency);
};

/**
 * @api private
 */
AWS.S3.ManagedUpload.deletePromisesFromClass = function deletePromisesFromClass() {
  delete this.prototype.promise;
};

AWS.util.addPromises(AWS.S3.ManagedUpload);

module.exports = AWS.S3.ManagedUpload;

},{"../core":239}],278:[function(require,module,exports){
var AWS = require('./core');

/**
 * @api private
 * @!method on(eventName, callback)
 *   Registers an event listener callback for the event given by `eventName`.
 *   Parameters passed to the callback function depend on the individual event
 *   being triggered. See the event documentation for those parameters.
 *
 *   @param eventName [String] the event name to register the listener for
 *   @param callback [Function] the listener callback function
 *   @return [AWS.SequentialExecutor] the same object for chaining
 */
AWS.SequentialExecutor = AWS.util.inherit({

  constructor: function SequentialExecutor() {
    this._events = {};
  },

  /**
   * @api private
   */
  listeners: function listeners(eventName) {
    return this._events[eventName] ? this._events[eventName].slice(0) : [];
  },

  on: function on(eventName, listener) {
    if (this._events[eventName]) {
      this._events[eventName].push(listener);
    } else {
      this._events[eventName] = [listener];
    }
    return this;
  },

  /**
   * @api private
   */
  onAsync: function onAsync(eventName, listener) {
    listener._isAsync = true;
    return this.on(eventName, listener);
  },

  removeListener: function removeListener(eventName, listener) {
    var listeners = this._events[eventName];
    if (listeners) {
      var length = listeners.length;
      var position = -1;
      for (var i = 0; i < length; ++i) {
        if (listeners[i] === listener) {
          position = i;
        }
      }
      if (position > -1) {
        listeners.splice(position, 1);
      }
    }
    return this;
  },

  removeAllListeners: function removeAllListeners(eventName) {
    if (eventName) {
      delete this._events[eventName];
    } else {
      this._events = {};
    }
    return this;
  },

  /**
   * @api private
   */
  emit: function emit(eventName, eventArgs, doneCallback) {
    if (!doneCallback) doneCallback = function() { };
    var listeners = this.listeners(eventName);
    var count = listeners.length;
    this.callListeners(listeners, eventArgs, doneCallback);
    return count > 0;
  },

  /**
   * @api private
   */
  callListeners: function callListeners(listeners, args, doneCallback, prevError) {
    var self = this;
    var error = prevError || null;

    function callNextListener(err) {
      if (err) {
        error = AWS.util.error(error || new Error(), err);
        if (self._haltHandlersOnError) {
          return doneCallback.call(self, error);
        }
      }
      self.callListeners(listeners, args, doneCallback, error);
    }

    while (listeners.length > 0) {
      var listener = listeners.shift();
      if (listener._isAsync) { // asynchronous listener
        listener.apply(self, args.concat([callNextListener]));
        return; // stop here, callNextListener will continue
      } else { // synchronous listener
        try {
          listener.apply(self, args);
        } catch (err) {
          error = AWS.util.error(error || new Error(), err);
        }
        if (error && self._haltHandlersOnError) {
          doneCallback.call(self, error);
          return;
        }
      }
    }
    doneCallback.call(self, error);
  },

  /**
   * Adds or copies a set of listeners from another list of
   * listeners or SequentialExecutor object.
   *
   * @param listeners [map<String,Array<Function>>, AWS.SequentialExecutor]
   *   a list of events and callbacks, or an event emitter object
   *   containing listeners to add to this emitter object.
   * @return [AWS.SequentialExecutor] the emitter object, for chaining.
   * @example Adding listeners from a map of listeners
   *   emitter.addListeners({
   *     event1: [function() { ... }, function() { ... }],
   *     event2: [function() { ... }]
   *   });
   *   emitter.emit('event1'); // emitter has event1
   *   emitter.emit('event2'); // emitter has event2
   * @example Adding listeners from another emitter object
   *   var emitter1 = new AWS.SequentialExecutor();
   *   emitter1.on('event1', function() { ... });
   *   emitter1.on('event2', function() { ... });
   *   var emitter2 = new AWS.SequentialExecutor();
   *   emitter2.addListeners(emitter1);
   *   emitter2.emit('event1'); // emitter2 has event1
   *   emitter2.emit('event2'); // emitter2 has event2
   */
  addListeners: function addListeners(listeners) {
    var self = this;

    // extract listeners if parameter is an SequentialExecutor object
    if (listeners._events) listeners = listeners._events;

    AWS.util.each(listeners, function(event, callbacks) {
      if (typeof callbacks === 'function') callbacks = [callbacks];
      AWS.util.arrayEach(callbacks, function(callback) {
        self.on(event, callback);
      });
    });

    return self;
  },

  /**
   * Registers an event with {on} and saves the callback handle function
   * as a property on the emitter object using a given `name`.
   *
   * @param name [String] the property name to set on this object containing
   *   the callback function handle so that the listener can be removed in
   *   the future.
   * @param (see on)
   * @return (see on)
   * @example Adding a named listener DATA_CALLBACK
   *   var listener = function() { doSomething(); };
   *   emitter.addNamedListener('DATA_CALLBACK', 'data', listener);
   *
   *   // the following prints: true
   *   console.log(emitter.DATA_CALLBACK == listener);
   */
  addNamedListener: function addNamedListener(name, eventName, callback) {
    this[name] = callback;
    this.addListener(eventName, callback);
    return this;
  },

  /**
   * @api private
   */
  addNamedAsyncListener: function addNamedAsyncListener(name, eventName, callback) {
    callback._isAsync = true;
    return this.addNamedListener(name, eventName, callback);
  },

  /**
   * Helper method to add a set of named listeners using
   * {addNamedListener}. The callback contains a parameter
   * with a handle to the `addNamedListener` method.
   *
   * @callback callback function(add)
   *   The callback function is called immediately in order to provide
   *   the `add` function to the block. This simplifies the addition of
   *   a large group of named listeners.
   *   @param add [Function] the {addNamedListener} function to call
   *     when registering listeners.
   * @example Adding a set of named listeners
   *   emitter.addNamedListeners(function(add) {
   *     add('DATA_CALLBACK', 'data', function() { ... });
   *     add('OTHER', 'otherEvent', function() { ... });
   *     add('LAST', 'lastEvent', function() { ... });
   *   });
   *
   *   // these properties are now set:
   *   emitter.DATA_CALLBACK;
   *   emitter.OTHER;
   *   emitter.LAST;
   */
  addNamedListeners: function addNamedListeners(callback) {
    var self = this;
    callback(
      function() {
        self.addNamedListener.apply(self, arguments);
      },
      function() {
        self.addNamedAsyncListener.apply(self, arguments);
      }
    );
    return this;
  }
});

/**
 * {on} is the prefered method.
 * @api private
 */
AWS.SequentialExecutor.prototype.addListener = AWS.SequentialExecutor.prototype.on;

module.exports = AWS.SequentialExecutor;

},{"./core":239}],279:[function(require,module,exports){
var AWS = require('./core');
var Api = require('./model/api');
var regionConfig = require('./region_config');
var inherit = AWS.util.inherit;
var clientCount = 0;

/**
 * The service class representing an AWS service.
 *
 * @abstract
 *
 * @!attribute apiVersions
 *   @return [Array<String>] the list of API versions supported by this service.
 *   @readonly
 */
AWS.Service = inherit({
  /**
   * Create a new service object with a configuration object
   *
   * @param config [map] a map of configuration options
   */
  constructor: function Service(config) {
    if (!this.loadServiceClass) {
      throw AWS.util.error(new Error(),
        'Service must be constructed with `new\' operator');
    }
    var ServiceClass = this.loadServiceClass(config || {});
    if (ServiceClass) {
      var originalConfig = AWS.util.copy(config);
      var svc = new ServiceClass(config);
      Object.defineProperty(svc, '_originalConfig', {
        get: function() { return originalConfig; },
        enumerable: false,
        configurable: true
      });
      svc._clientId = ++clientCount;
      return svc;
    }
    this.initialize(config);
  },

  /**
   * @api private
   */
  initialize: function initialize(config) {
    var svcConfig = AWS.config[this.serviceIdentifier];

    this.config = new AWS.Config(AWS.config);
    if (svcConfig) this.config.update(svcConfig, true);
    if (config) this.config.update(config, true);

    this.validateService();
    if (!this.config.endpoint) regionConfig(this);

    this.config.endpoint = this.endpointFromTemplate(this.config.endpoint);
    this.setEndpoint(this.config.endpoint);
  },

  /**
   * @api private
   */
  validateService: function validateService() {
  },

  /**
   * @api private
   */
  loadServiceClass: function loadServiceClass(serviceConfig) {
    var config = serviceConfig;
    if (!AWS.util.isEmpty(this.api)) {
      return null;
    } else if (config.apiConfig) {
      return AWS.Service.defineServiceApi(this.constructor, config.apiConfig);
    } else if (!this.constructor.services) {
      return null;
    } else {
      config = new AWS.Config(AWS.config);
      config.update(serviceConfig, true);
      var version = config.apiVersions[this.constructor.serviceIdentifier];
      version = version || config.apiVersion;
      return this.getLatestServiceClass(version);
    }
  },

  /**
   * @api private
   */
  getLatestServiceClass: function getLatestServiceClass(version) {
    version = this.getLatestServiceVersion(version);
    if (this.constructor.services[version] === null) {
      AWS.Service.defineServiceApi(this.constructor, version);
    }

    return this.constructor.services[version];
  },

  /**
   * @api private
   */
  getLatestServiceVersion: function getLatestServiceVersion(version) {
    if (!this.constructor.services || this.constructor.services.length === 0) {
      throw new Error('No services defined on ' +
                      this.constructor.serviceIdentifier);
    }

    if (!version) {
      version = 'latest';
    } else if (AWS.util.isType(version, Date)) {
      version = AWS.util.date.iso8601(version).split('T')[0];
    }

    if (Object.hasOwnProperty(this.constructor.services, version)) {
      return version;
    }

    var keys = Object.keys(this.constructor.services).sort();
    var selectedVersion = null;
    for (var i = keys.length - 1; i >= 0; i--) {
      // versions that end in "*" are not available on disk and can be
      // skipped, so do not choose these as selectedVersions
      if (keys[i][keys[i].length - 1] !== '*') {
        selectedVersion = keys[i];
      }
      if (keys[i].substr(0, 10) <= version) {
        return selectedVersion;
      }
    }

    throw new Error('Could not find ' + this.constructor.serviceIdentifier +
                    ' API to satisfy version constraint `' + version + '\'');
  },

  /**
   * @api private
   */
  api: {},

  /**
   * @api private
   */
  defaultRetryCount: 3,

  /**
   * @api private
   */
  customizeRequests: function customizeRequests(callback) {
    if (!callback) {
      this.customRequestHandler = null;
    } else if (typeof callback === 'function') {
      this.customRequestHandler = callback;
    } else {
      throw new Error('Invalid callback type \'' + typeof callback + '\' provided in customizeRequests');
    }
  },

  /**
   * Calls an operation on a service with the given input parameters.
   *
   * @param operation [String] the name of the operation to call on the service.
   * @param params [map] a map of input options for the operation
   * @callback callback function(err, data)
   *   If a callback is supplied, it is called when a response is returned
   *   from the service.
   *   @param err [Error] the error object returned from the request.
   *     Set to `null` if the request is successful.
   *   @param data [Object] the de-serialized data returned from
   *     the request. Set to `null` if a request error occurs.
   */
  makeRequest: function makeRequest(operation, params, callback) {
    if (typeof params === 'function') {
      callback = params;
      params = null;
    }

    params = params || {};
    if (this.config.params) { // copy only toplevel bound params
      var rules = this.api.operations[operation];
      if (rules) {
        params = AWS.util.copy(params);
        AWS.util.each(this.config.params, function(key, value) {
          if (rules.input.members[key]) {
            if (params[key] === undefined || params[key] === null) {
              params[key] = value;
            }
          }
        });
      }
    }

    var request = new AWS.Request(this, operation, params);
    this.addAllRequestListeners(request);

    if (callback) request.send(callback);
    return request;
  },

  /**
   * Calls an operation on a service with the given input parameters, without
   * any authentication data. This method is useful for "public" API operations.
   *
   * @param operation [String] the name of the operation to call on the service.
   * @param params [map] a map of input options for the operation
   * @callback callback function(err, data)
   *   If a callback is supplied, it is called when a response is returned
   *   from the service.
   *   @param err [Error] the error object returned from the request.
   *     Set to `null` if the request is successful.
   *   @param data [Object] the de-serialized data returned from
   *     the request. Set to `null` if a request error occurs.
   */
  makeUnauthenticatedRequest: function makeUnauthenticatedRequest(operation, params, callback) {
    if (typeof params === 'function') {
      callback = params;
      params = {};
    }

    var request = this.makeRequest(operation, params).toUnauthenticated();
    return callback ? request.send(callback) : request;
  },

  /**
   * Waits for a given state
   *
   * @param state [String] the state on the service to wait for
   * @param params [map] a map of parameters to pass with each request
   * @option params $waiter [map] a map of configuration options for the waiter
   * @option params $waiter.delay [Number] The number of seconds to wait between
   *                                       requests
   * @option params $waiter.maxAttempts [Number] The maximum number of requests
   *                                             to send while waiting
   * @callback callback function(err, data)
   *   If a callback is supplied, it is called when a response is returned
   *   from the service.
   *   @param err [Error] the error object returned from the request.
   *     Set to `null` if the request is successful.
   *   @param data [Object] the de-serialized data returned from
   *     the request. Set to `null` if a request error occurs.
   */
  waitFor: function waitFor(state, params, callback) {
    var waiter = new AWS.ResourceWaiter(this, state);
    return waiter.wait(params, callback);
  },

  /**
   * @api private
   */
  addAllRequestListeners: function addAllRequestListeners(request) {
    var list = [AWS.events, AWS.EventListeners.Core, this.serviceInterface(),
                AWS.EventListeners.CorePost];
    for (var i = 0; i < list.length; i++) {
      if (list[i]) request.addListeners(list[i]);
    }

    // disable parameter validation
    if (!this.config.paramValidation) {
      request.removeListener('validate',
        AWS.EventListeners.Core.VALIDATE_PARAMETERS);
    }

    if (this.config.logger) { // add logging events
      request.addListeners(AWS.EventListeners.Logger);
    }

    this.setupRequestListeners(request);
    // call prototype's customRequestHandler
    if (typeof this.constructor.prototype.customRequestHandler === 'function') {
      this.constructor.prototype.customRequestHandler(request);
    }
    // call instance's customRequestHandler
    if (Object.prototype.hasOwnProperty.call(this, 'customRequestHandler') && typeof this.customRequestHandler === 'function') {
      this.customRequestHandler(request);
    }
  },

  /**
   * Override this method to setup any custom request listeners for each
   * new request to the service.
   *
   * @abstract
   */
  setupRequestListeners: function setupRequestListeners() {
  },

  /**
   * Gets the signer class for a given request
   * @api private
   */
  getSignerClass: function getSignerClass(request) {
    var version;
    // get operation authtype if present
    var operation = null;
    var authtype = '';
    if (request) {
      var operations = request.service.api.operations || {};
      operation = operations[request.operation] || null;
      authtype = operation ? operation.authtype : '';
    }
    if (this.config.signatureVersion) {
      version = this.config.signatureVersion;
    } else if (authtype === 'v4' || authtype === 'v4-unsigned-body') {
      version = 'v4';
    } else {
      version = this.api.signatureVersion;
    }
    return AWS.Signers.RequestSigner.getVersion(version);
  },

  /**
   * @api private
   */
  serviceInterface: function serviceInterface() {
    switch (this.api.protocol) {
      case 'ec2': return AWS.EventListeners.Query;
      case 'query': return AWS.EventListeners.Query;
      case 'json': return AWS.EventListeners.Json;
      case 'rest-json': return AWS.EventListeners.RestJson;
      case 'rest-xml': return AWS.EventListeners.RestXml;
    }
    if (this.api.protocol) {
      throw new Error('Invalid service `protocol\' ' +
        this.api.protocol + ' in API config');
    }
  },

  /**
   * @api private
   */
  successfulResponse: function successfulResponse(resp) {
    return resp.httpResponse.statusCode < 300;
  },

  /**
   * How many times a failed request should be retried before giving up.
   * the defaultRetryCount can be overriden by service classes.
   *
   * @api private
   */
  numRetries: function numRetries() {
    if (this.config.maxRetries !== undefined) {
      return this.config.maxRetries;
    } else {
      return this.defaultRetryCount;
    }
  },

  /**
   * @api private
   */
  retryDelays: function retryDelays(retryCount) {
    return AWS.util.calculateRetryDelay(retryCount, this.config.retryDelayOptions);
  },

  /**
   * @api private
   */
  retryableError: function retryableError(error) {
    if (this.timeoutError(error)) return true;
    if (this.networkingError(error)) return true;
    if (this.expiredCredentialsError(error)) return true;
    if (this.throttledError(error)) return true;
    if (error.statusCode >= 500) return true;
    return false;
  },

  /**
   * @api private
   */
  networkingError: function networkingError(error) {
    return error.code === 'NetworkingError';
  },

  /**
   * @api private
   */
  timeoutError: function timeoutError(error) {
    return error.code === 'TimeoutError';
  },

  /**
   * @api private
   */
  expiredCredentialsError: function expiredCredentialsError(error) {
    // TODO : this only handles *one* of the expired credential codes
    return (error.code === 'ExpiredTokenException');
  },

  /**
   * @api private
   */
  clockSkewError: function clockSkewError(error) {
    switch (error.code) {
      case 'RequestTimeTooSkewed':
      case 'RequestExpired':
      case 'InvalidSignatureException':
      case 'SignatureDoesNotMatch':
      case 'AuthFailure':
      case 'RequestInTheFuture':
        return true;
      default: return false;
    }
  },

  /**
   * @api private
   */
  getSkewCorrectedDate: function getSkewCorrectedDate() {
    return new Date(Date.now() + this.config.systemClockOffset);
  },

  /**
   * @api private
   */
  applyClockOffset: function applyClockOffset(newServerTime) {
    if (newServerTime) {
      this.config.systemClockOffset = newServerTime - Date.now();
    }
  },

  /**
   * @api private
   */
  isClockSkewed: function isClockSkewed(newServerTime) {
    if (newServerTime) {
      return Math.abs(this.getSkewCorrectedDate().getTime() - newServerTime) >= 30000;
    }
  },

  /**
   * @api private
   */
  throttledError: function throttledError(error) {
    // this logic varies between services
    switch (error.code) {
      case 'ProvisionedThroughputExceededException':
      case 'Throttling':
      case 'ThrottlingException':
      case 'RequestLimitExceeded':
      case 'RequestThrottled':
        return true;
      default:
        return false;
    }
  },

  /**
   * @api private
   */
  endpointFromTemplate: function endpointFromTemplate(endpoint) {
    if (typeof endpoint !== 'string') return endpoint;

    var e = endpoint;
    e = e.replace(/\{service\}/g, this.api.endpointPrefix);
    e = e.replace(/\{region\}/g, this.config.region);
    e = e.replace(/\{scheme\}/g, this.config.sslEnabled ? 'https' : 'http');
    return e;
  },

  /**
   * @api private
   */
  setEndpoint: function setEndpoint(endpoint) {
    this.endpoint = new AWS.Endpoint(endpoint, this.config);
  },

  /**
   * @api private
   */
  paginationConfig: function paginationConfig(operation, throwException) {
    var paginator = this.api.operations[operation].paginator;
    if (!paginator) {
      if (throwException) {
        var e = new Error();
        throw AWS.util.error(e, 'No pagination configuration for ' + operation);
      }
      return null;
    }

    return paginator;
  }
});

AWS.util.update(AWS.Service, {

  /**
   * Adds one method for each operation described in the api configuration
   *
   * @api private
   */
  defineMethods: function defineMethods(svc) {
    AWS.util.each(svc.prototype.api.operations, function iterator(method) {
      if (svc.prototype[method]) return;
      var operation = svc.prototype.api.operations[method];
      if (operation.authtype === 'none') {
        svc.prototype[method] = function (params, callback) {
          return this.makeUnauthenticatedRequest(method, params, callback);
        };
      } else {
        svc.prototype[method] = function (params, callback) {
          return this.makeRequest(method, params, callback);
        };
      }
    });
  },

  /**
   * Defines a new Service class using a service identifier and list of versions
   * including an optional set of features (functions) to apply to the class
   * prototype.
   *
   * @param serviceIdentifier [String] the identifier for the service
   * @param versions [Array<String>] a list of versions that work with this
   *   service
   * @param features [Object] an object to attach to the prototype
   * @return [Class<Service>] the service class defined by this function.
   */
  defineService: function defineService(serviceIdentifier, versions, features) {
    AWS.Service._serviceMap[serviceIdentifier] = true;
    if (!Array.isArray(versions)) {
      features = versions;
      versions = [];
    }

    var svc = inherit(AWS.Service, features || {});

    if (typeof serviceIdentifier === 'string') {
      AWS.Service.addVersions(svc, versions);

      var identifier = svc.serviceIdentifier || serviceIdentifier;
      svc.serviceIdentifier = identifier;
    } else { // defineService called with an API
      svc.prototype.api = serviceIdentifier;
      AWS.Service.defineMethods(svc);
    }

    return svc;
  },

  /**
   * @api private
   */
  addVersions: function addVersions(svc, versions) {
    if (!Array.isArray(versions)) versions = [versions];

    svc.services = svc.services || {};
    for (var i = 0; i < versions.length; i++) {
      if (svc.services[versions[i]] === undefined) {
        svc.services[versions[i]] = null;
      }
    }

    svc.apiVersions = Object.keys(svc.services).sort();
  },

  /**
   * @api private
   */
  defineServiceApi: function defineServiceApi(superclass, version, apiConfig) {
    var svc = inherit(superclass, {
      serviceIdentifier: superclass.serviceIdentifier
    });

    function setApi(api) {
      if (api.isApi) {
        svc.prototype.api = api;
      } else {
        svc.prototype.api = new Api(api);
      }
    }

    if (typeof version === 'string') {
      if (apiConfig) {
        setApi(apiConfig);
      } else {
        try {
          setApi(AWS.apiLoader(superclass.serviceIdentifier, version));
        } catch (err) {
          throw AWS.util.error(err, {
            message: 'Could not find API configuration ' +
              superclass.serviceIdentifier + '-' + version
          });
        }
      }
      if (!Object.prototype.hasOwnProperty.call(superclass.services, version)) {
        superclass.apiVersions = superclass.apiVersions.concat(version).sort();
      }
      superclass.services[version] = svc;
    } else {
      setApi(version);
    }

    AWS.Service.defineMethods(svc);
    return svc;
  },

  /**
   * @api private
   */
  hasService: function(identifier) {
    return Object.prototype.hasOwnProperty.call(AWS.Service._serviceMap, identifier);
  },

  /**
   * @api private
   */
  _serviceMap: {}
});

module.exports = AWS.Service;

},{"./core":239,"./model/api":257,"./region_config":272}],280:[function(require,module,exports){
var AWS = require('../core');

AWS.util.update(AWS.APIGateway.prototype, {
/**
 * Sets the Accept header to application/json.
 *
 * @api private
 */
  setAcceptHeader: function setAcceptHeader(req) {
    var httpRequest = req.httpRequest;
    if (!httpRequest.headers.Accept) {
      httpRequest.headers['Accept'] = 'application/json';
    }
  },

  /**
   * @api private
   */
  setupRequestListeners: function setupRequestListeners(request) {
    request.addListener('build', this.setAcceptHeader);
    if (request.operation === 'getExport') {
      var params = request.params || {};
      if (params.exportType === 'swagger') {
        request.addListener('extractData', AWS.util.convertPayloadToString);
      }
    }
  }
});


},{"../core":239}],281:[function(require,module,exports){
var AWS = require('../core');

// pull in CloudFront signer
require('../cloudfront/signer');

AWS.util.update(AWS.CloudFront.prototype, {

  setupRequestListeners: function setupRequestListeners(request) {
    request.addListener('extractData', AWS.util.hoistPayloadMember);
  }

});

},{"../cloudfront/signer":237,"../core":239}],282:[function(require,module,exports){
var AWS = require('../core');

AWS.util.update(AWS.CognitoIdentity.prototype, {
  getOpenIdToken: function getOpenIdToken(params, callback) {
    return this.makeUnauthenticatedRequest('getOpenIdToken', params, callback);
  },

  getId: function getId(params, callback) {
    return this.makeUnauthenticatedRequest('getId', params, callback);
  },

  getCredentialsForIdentity: function getCredentialsForIdentity(params, callback) {
    return this.makeUnauthenticatedRequest('getCredentialsForIdentity', params, callback);
  }
});

},{"../core":239}],283:[function(require,module,exports){
var AWS = require('../core');
require('../dynamodb/document_client');

AWS.util.update(AWS.DynamoDB.prototype, {
  /**
   * @api private
   */
  setupRequestListeners: function setupRequestListeners(request) {
    if (request.service.config.dynamoDbCrc32) {
      request.removeListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA);
      request.addListener('extractData', this.checkCrc32);
      request.addListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA);
    }
  },

  /**
   * @api private
   */
  checkCrc32: function checkCrc32(resp) {
    if (!resp.httpResponse.streaming && !resp.request.service.crc32IsValid(resp)) {
      resp.data = null;
      resp.error = AWS.util.error(new Error(), {
        code: 'CRC32CheckFailed',
        message: 'CRC32 integrity check failed',
        retryable: true
      });
      resp.request.haltHandlersOnError();
      throw (resp.error);
    }
  },

  /**
   * @api private
   */
  crc32IsValid: function crc32IsValid(resp) {
    var crc = resp.httpResponse.headers['x-amz-crc32'];
    if (!crc) return true; // no (valid) CRC32 header
    return parseInt(crc, 10) === AWS.util.crypto.crc32(resp.httpResponse.body);
  },

  /**
   * @api private
   */
  defaultRetryCount: 10,

  /**
   * @api private
   */
  retryDelays: function retryDelays(retryCount) {
    var retryDelayOptions = AWS.util.copy(this.config.retryDelayOptions);

    if (typeof retryDelayOptions.base !== 'number') {
        retryDelayOptions.base = 50; // default for dynamodb
    }
    var delay = AWS.util.calculateRetryDelay(retryCount, retryDelayOptions);
    return delay;
  }
});

},{"../core":239,"../dynamodb/document_client":247}],284:[function(require,module,exports){
var AWS = require('../core');

AWS.util.update(AWS.EC2.prototype, {
  /**
   * @api private
   */
  setupRequestListeners: function setupRequestListeners(request) {
    request.removeListener('extractError', AWS.EventListeners.Query.EXTRACT_ERROR);
    request.addListener('extractError', this.extractError);

    if (request.operation === 'copySnapshot') {
      request.onAsync('validate', this.buildCopySnapshotPresignedUrl);
    }
  },

  /**
   * @api private
   */
  buildCopySnapshotPresignedUrl: function buildCopySnapshotPresignedUrl(req, done) {
    if (req.params.PresignedUrl || req._subRequest) {
      return done();
    }

    req.params = AWS.util.copy(req.params);
    req.params.DestinationRegion = req.service.config.region;

    var config = AWS.util.copy(req.service.config);
    delete config.endpoint;
    config.region = req.params.SourceRegion;
    var svc = new req.service.constructor(config);
    var newReq = svc[req.operation](req.params);
    newReq._subRequest = true;
    newReq.presign(function(err, url) {
      if (err) done(err);
      else {
        req.params.PresignedUrl = url;
        done();
      }
    });
  },

  /**
   * @api private
   */
  extractError: function extractError(resp) {
    // EC2 nests the error code and message deeper than other AWS Query services.
    var httpResponse = resp.httpResponse;
    var data = new AWS.XML.Parser().parse(httpResponse.body.toString() || '');
    if (data.Errors) {
      resp.error = AWS.util.error(new Error(), {
        code: data.Errors.Error.Code,
        message: data.Errors.Error.Message
      });
    } else {
      resp.error = AWS.util.error(new Error(), {
        code: httpResponse.statusCode,
        message: null
      });
    }
    resp.error.requestId = data.RequestID || null;
  }
});

},{"../core":239}],285:[function(require,module,exports){
var AWS = require('../core');

/**
 * @api private
 */
var blobPayloadOutputOps = [
  'deleteThingShadow',
  'getThingShadow',
  'updateThingShadow'
];

/**
 * Constructs a service interface object. Each API operation is exposed as a
 * function on service.
 *
 * ### Sending a Request Using IotData
 *
 * ```javascript
 * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});
 * iotdata.getThingShadow(params, function (err, data) {
 *   if (err) console.log(err, err.stack); // an error occurred
 *   else     console.log(data);           // successful response
 * });
 * ```
 *
 * ### Locking the API Version
 *
 * In order to ensure that the IotData object uses this specific API,
 * you can construct the object by passing the `apiVersion` option to the
 * constructor:
 *
 * ```javascript
 * var iotdata = new AWS.IotData({
 *   endpoint: 'my.host.tld',
 *   apiVersion: '2015-05-28'
 * });
 * ```
 *
 * You can also set the API version globally in `AWS.config.apiVersions` using
 * the **iotdata** service identifier:
 *
 * ```javascript
 * AWS.config.apiVersions = {
 *   iotdata: '2015-05-28',
 *   // other service API versions
 * };
 *
 * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});
 * ```
 *
 * @note You *must* provide an `endpoint` configuration parameter when
 *   constructing this service. See {constructor} for more information.
 *
 * @!method constructor(options = {})
 *   Constructs a service object. This object has one method for each
 *   API operation.
 *
 *   @example Constructing a IotData object
 *     var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});
 *   @note You *must* provide an `endpoint` when constructing this service.
 *   @option (see AWS.Config.constructor)
 *
 * @service iotdata
 * @version 2015-05-28
 */
AWS.util.update(AWS.IotData.prototype, {
    /**
     * @api private
     */
    validateService: function validateService() {
        if (!this.config.endpoint || this.config.endpoint.indexOf('{') >= 0) {
            var msg = 'AWS.IotData requires an explicit ' +
                '`endpoint\' configuration option.';
            throw AWS.util.error(new Error(),
                {name: 'InvalidEndpoint', message: msg});
        }
    },

    /**
     * @api private
     */
    setupRequestListeners: function setupRequestListeners(request) {
        request.addListener('validateResponse', this.validateResponseBody);
        if (blobPayloadOutputOps.indexOf(request.operation) > -1) {
            request.addListener('extractData', AWS.util.convertPayloadToString);
        }
    },

    /**
     * @api private
     */
    validateResponseBody: function validateResponseBody(resp) {
        var body = resp.httpResponse.body.toString() || '{}';
        var bodyCheck = body.trim();
        if (!bodyCheck || bodyCheck.charAt(0) !== '{') {
            resp.httpResponse.body = '';
        }
    }

});

},{"../core":239}],286:[function(require,module,exports){
var AWS = require('../core');

AWS.util.update(AWS.Lambda.prototype, {
  /**
   * @api private
   */
  setupRequestListeners: function setupRequestListeners(request) {
    if (request.operation === 'invoke') {
      request.addListener('extractData', AWS.util.convertPayloadToString);
    }
  }
});


},{"../core":239}],287:[function(require,module,exports){
var AWS = require('../core');

AWS.util.update(AWS.MachineLearning.prototype, {
  /**
   * @api private
   */
  setupRequestListeners: function setupRequestListeners(request) {
    if (request.operation === 'predict') {
      request.addListener('build', this.buildEndpoint);
    }
  },

  /**
   * Updates request endpoint from PredictEndpoint
   * @api private
   */
  buildEndpoint: function buildEndpoint(request) {
    var url = request.params.PredictEndpoint;
    if (url) {
      request.httpRequest.endpoint = new AWS.Endpoint(url);
    }
  }

});

},{"../core":239}],288:[function(require,module,exports){
require('../polly/presigner');
},{"../polly/presigner":264}],289:[function(require,module,exports){
var AWS = require('../core');
require('../rds/signer');
 /**
  * @api private
  */
 var crossRegionOperations = ['copyDBSnapshot', 'createDBInstanceReadReplica', 'createDBCluster', 'copyDBClusterSnapshot'];

 AWS.util.update(AWS.RDS.prototype, {
   /**
    * @api private
    */
   setupRequestListeners: function setupRequestListeners(request) {
     if (crossRegionOperations.indexOf(request.operation) !== -1 &&
         request.params.SourceRegion) {
       request.params = AWS.util.copy(request.params);
       if (request.params.PreSignedUrl ||
           request.params.SourceRegion === this.config.region) {
         delete request.params.SourceRegion;
       } else {
         var doesParamValidation = !!this.config.paramValidation;
         // remove the validate parameters listener so we can re-add it after we build the URL
         if (doesParamValidation) {
           request.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);
         }
         request.onAsync('validate', this.buildCrossRegionPresignedUrl);
         if (doesParamValidation) {
           request.addListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);
         }
       }
     }
   },

   /**
    * @api private
    */
   buildCrossRegionPresignedUrl: function buildCrossRegionPresignedUrl(req, done) {
     var config = AWS.util.copy(req.service.config);
     config.region = req.params.SourceRegion;
     delete req.params.SourceRegion;
     delete config.endpoint;
     // relevant params for the operation will already be in req.params
     delete config.params;
     config.signatureVersion = 'v4';
     var destinationRegion = req.service.config.region;

     var svc = new req.service.constructor(config);
     var newReq = svc[req.operation](AWS.util.copy(req.params));
     newReq.on('build', function addDestinationRegionParam(request) {
       var httpRequest = request.httpRequest;
       httpRequest.params.DestinationRegion = destinationRegion;
       httpRequest.body = AWS.util.queryParamsToString(httpRequest.params);
     });
     newReq.presign(function(err, url) {
       if (err) done(err);
       else {
         req.params.PreSignedUrl = url;
         done();
       }
     });
   }
 });
},{"../core":239,"../rds/signer":271}],290:[function(require,module,exports){
var AWS = require('../core');

AWS.util.update(AWS.Route53.prototype, {
  /**
   * @api private
   */
  setupRequestListeners: function setupRequestListeners(request) {
    request.on('build', this.sanitizeUrl);
  },

  /**
   * @api private
   */
  sanitizeUrl: function sanitizeUrl(request) {
    var path = request.httpRequest.path;
    request.httpRequest.path = path.replace(/\/%2F\w+%2F/, '/');
  },

  /**
   * @return [Boolean] whether the error can be retried
   * @api private
   */
  retryableError: function retryableError(error) {
    if (error.code === 'PriorRequestNotComplete' &&
        error.statusCode === 400) {
      return true;
    } else {
      var _super = AWS.Service.prototype.retryableError;
      return _super.call(this, error);
    }
  }
});

},{"../core":239}],291:[function(require,module,exports){
var AWS = require('../core');
var v4Credentials = require('../signers/v4_credentials');

// Pull in managed upload extension
require('../s3/managed_upload');

/**
 * @api private
 */
var operationsWith200StatusCodeError = {
  'completeMultipartUpload': true,
  'copyObject': true,
  'uploadPartCopy': true
};

/**
 * @api private
 */
 var regionRedirectErrorCodes = [
  'AuthorizationHeaderMalformed', // non-head operations on virtual-hosted global bucket endpoints
  'BadRequest', // head operations on virtual-hosted global bucket endpoints
  'PermanentRedirect', // non-head operations on path-style or regional endpoints
  301 // head operations on path-style or regional endpoints
 ];

AWS.util.update(AWS.S3.prototype, {
  /**
   * @api private
   */
  getSignatureVersion: function getSignatureVersion(request) {
    var defaultApiVersion = this.api.signatureVersion;
    var userDefinedVersion = this._originalConfig ? this._originalConfig.signatureVersion : null;
    var regionDefinedVersion = this.config.signatureVersion;
    var isPresigned = request ? request.isPresigned() : false;
    /*
      1) User defined version specified:
        a) always return user defined version
      2) No user defined version specified:
        a) default to lowest version the region supports
        b) If using presigned urls, default to lowest version the region supports
    */
    if (userDefinedVersion) {
      userDefinedVersion = userDefinedVersion === 'v2' ? 's3' : userDefinedVersion;
      return userDefinedVersion;
    }
    if (isPresigned !== true) {
      defaultApiVersion = 'v4';
    } else if (regionDefinedVersion) {
      defaultApiVersion = regionDefinedVersion;
    }
    return defaultApiVersion;
  },

  /**
   * @api private
   */
  getSignerClass: function getSignerClass(request) {
    var signatureVersion = this.getSignatureVersion(request);
    return AWS.Signers.RequestSigner.getVersion(signatureVersion);
  },

  /**
   * @api private
   */
  validateService: function validateService() {
    var msg;
    var messages = [];

    // default to us-east-1 when no region is provided
    if (!this.config.region) this.config.region = 'us-east-1';

    if (!this.config.endpoint && this.config.s3BucketEndpoint) {
      messages.push('An endpoint must be provided when configuring ' +
                    '`s3BucketEndpoint` to true.');
    }
    if (messages.length === 1) {
      msg = messages[0];
    } else if (messages.length > 1) {
      msg = 'Multiple configuration errors:\n' + messages.join('\n');
    }
    if (msg) {
      throw AWS.util.error(new Error(),
        {name: 'InvalidEndpoint', message: msg});
    }
  },

  /**
   * @api private
   */
  shouldDisableBodySigning: function shouldDisableBodySigning(request) {
    var signerClass = this.getSignerClass();
    if (this.config.s3DisableBodySigning === true && signerClass === AWS.Signers.V4
        && request.httpRequest.endpoint.protocol === 'https:') {
      return true;
    }
    return false;
  },

  /**
   * @api private
   */
  setupRequestListeners: function setupRequestListeners(request) {
    request.addListener('validate', this.validateScheme);
    request.addListener('validate', this.validateBucketEndpoint);
    request.addListener('validate', this.correctBucketRegionFromCache);
    request.addListener('validate', this.validateBucketName);
    request.addListener('build', this.addContentType);
    request.addListener('build', this.populateURI);
    request.addListener('build', this.computeContentMd5);
    request.addListener('build', this.computeSseCustomerKeyMd5);
    request.addListener('afterBuild', this.addExpect100Continue);
    request.removeListener('validate',
      AWS.EventListeners.Core.VALIDATE_REGION);
    request.addListener('extractError', this.extractError);
    request.onAsync('extractError', this.requestBucketRegion);
    request.addListener('extractData', this.extractData);
    request.addListener('extractData', AWS.util.hoistPayloadMember);
    request.addListener('beforePresign', this.prepareSignedUrl);
    if (AWS.util.isBrowser()) {
      request.onAsync('retry', this.reqRegionForNetworkingError);
    }
    if (this.shouldDisableBodySigning(request))  {
      request.removeListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256);
      request.addListener('afterBuild', this.disableBodySigning);
    }
  },

  /**
   * @api private
   */
  validateScheme: function(req) {
    var params = req.params,
        scheme = req.httpRequest.endpoint.protocol,
        sensitive = params.SSECustomerKey || params.CopySourceSSECustomerKey;
    if (sensitive && scheme !== 'https:') {
      var msg = 'Cannot send SSE keys over HTTP. Set \'sslEnabled\'' +
        'to \'true\' in your configuration';
      throw AWS.util.error(new Error(),
        { code: 'ConfigError', message: msg });
    }
  },

  /**
   * @api private
   */
  validateBucketEndpoint: function(req) {
    if (!req.params.Bucket && req.service.config.s3BucketEndpoint) {
      var msg = 'Cannot send requests to root API with `s3BucketEndpoint` set.';
      throw AWS.util.error(new Error(),
        { code: 'ConfigError', message: msg });
    }
  },

  /**
   * @api private
   */
  validateBucketName: function validateBucketName(req) {
    var service = req.service;
    var signatureVersion = service.getSignatureVersion(req);
    // Only validate buckets when using sigv4
    if (signatureVersion !== 'v4') {
      return;
    }
    var bucket = req.params && req.params.Bucket;
    var key = req.params && req.params.Key;
    var slashIndex = bucket && bucket.indexOf('/');
    if (bucket && slashIndex >= 0) {
      if (typeof key === 'string') {
        req.params = AWS.util.copy(req.params);
        // Need to include trailing slash to match sigv2 behavior
        var prefix = bucket.substr(slashIndex + 1) || '';
        req.params.Key = prefix + '/' + key;
        req.params.Bucket = bucket.substr(0, slashIndex);
      } else {
        var msg = 'Bucket names cannot contain forward slashes. Bucket: ' + bucket;
        throw AWS.util.error(new Error(),
          { code: 'InvalidBucket', message: msg });
      }
    }
  },

  /**
   * @api private
   */
  isValidAccelerateOperation: function isValidAccelerateOperation(operation) {
    var invalidOperations = [
      'createBucket',
      'deleteBucket',
      'listBuckets'
    ];
    return invalidOperations.indexOf(operation) === -1;
  },


  /**
   * S3 prefers dns-compatible bucket names to be moved from the uri path
   * to the hostname as a sub-domain.  This is not possible, even for dns-compat
   * buckets when using SSL and the bucket name contains a dot ('.').  The
   * ssl wildcard certificate is only 1-level deep.
   *
   * @api private
   */
  populateURI: function populateURI(req) {
    var httpRequest = req.httpRequest;
    var b = req.params.Bucket;
    var service = req.service;
    var endpoint = httpRequest.endpoint;
    if (b) {
      if (!service.pathStyleBucketName(b)) {
        if (service.config.useAccelerateEndpoint && service.isValidAccelerateOperation(req.operation)) {
          if (service.config.useDualstack) {
            endpoint.hostname = b + '.s3-accelerate.dualstack.amazonaws.com';
          } else {
            endpoint.hostname = b + '.s3-accelerate.amazonaws.com';
          }
        } else if (!service.config.s3BucketEndpoint) {
          endpoint.hostname =
            b + '.' + endpoint.hostname;
        }

        var port = endpoint.port;
        if (port !== 80 && port !== 443) {
          endpoint.host = endpoint.hostname + ':' +
            endpoint.port;
        } else {
          endpoint.host = endpoint.hostname;
        }

        httpRequest.virtualHostedBucket = b; // needed for signing the request
        service.removeVirtualHostedBucketFromPath(req);
      }
    }
  },

  /**
   * Takes the bucket name out of the path if bucket is virtual-hosted
   *
   * @api private
   */
  removeVirtualHostedBucketFromPath: function removeVirtualHostedBucketFromPath(req) {
    var httpRequest = req.httpRequest;
    var bucket = httpRequest.virtualHostedBucket;
    if (bucket && httpRequest.path) {
      httpRequest.path = httpRequest.path.replace(new RegExp('/' + bucket), '');
      if (httpRequest.path[0] !== '/') {
        httpRequest.path = '/' + httpRequest.path;
      }
    }
  },

  /**
   * Adds Expect: 100-continue header if payload is greater-or-equal 1MB
   * @api private
   */
  addExpect100Continue: function addExpect100Continue(req) {
    var len = req.httpRequest.headers['Content-Length'];
    if (AWS.util.isNode() && len >= 1024 * 1024) {
      req.httpRequest.headers['Expect'] = '100-continue';
    }
  },

  /**
   * Adds a default content type if none is supplied.
   *
   * @api private
   */
  addContentType: function addContentType(req) {
    var httpRequest = req.httpRequest;
    if (httpRequest.method === 'GET' || httpRequest.method === 'HEAD') {
      // Content-Type is not set in GET/HEAD requests
      delete httpRequest.headers['Content-Type'];
      return;
    }

    if (!httpRequest.headers['Content-Type']) { // always have a Content-Type
      httpRequest.headers['Content-Type'] = 'application/octet-stream';
    }

    var contentType = httpRequest.headers['Content-Type'];
    if (AWS.util.isBrowser()) {
      if (typeof httpRequest.body === 'string' && !contentType.match(/;\s*charset=/)) {
        var charset = '; charset=UTF-8';
        httpRequest.headers['Content-Type'] += charset;
      } else {
        var replaceFn = function(_, prefix, charsetName) {
          return prefix + charsetName.toUpperCase();
        };

        httpRequest.headers['Content-Type'] =
          contentType.replace(/(;\s*charset=)(.+)$/, replaceFn);
      }
    }
  },

  /**
   * @api private
   */
  computableChecksumOperations: {
    putBucketCors: true,
    putBucketLifecycle: true,
    putBucketLifecycleConfiguration: true,
    putBucketTagging: true,
    deleteObjects: true,
    putBucketReplication: true
  },

  /**
   * Checks whether checksums should be computed for the request.
   * If the request requires checksums to be computed, this will always
   * return true, otherwise it depends on whether {AWS.Config.computeChecksums}
   * is set.
   *
   * @param req [AWS.Request] the request to check against
   * @return [Boolean] whether to compute checksums for a request.
   * @api private
   */
  willComputeChecksums: function willComputeChecksums(req) {
    if (this.computableChecksumOperations[req.operation]) return true;
    if (!this.config.computeChecksums) return false;

    // TODO: compute checksums for Stream objects
    if (!AWS.util.Buffer.isBuffer(req.httpRequest.body) &&
        typeof req.httpRequest.body !== 'string') {
      return false;
    }

    var rules = req.service.api.operations[req.operation].input.members;

    // Sha256 signing disabled, and not a presigned url
    if (req.service.shouldDisableBodySigning(req) && !Object.prototype.hasOwnProperty.call(req.httpRequest.headers, 'presigned-expires')) {
      if (rules.ContentMD5 && !req.params.ContentMD5) {
        return true;
      }
    }

    // V4 signer uses SHA256 signatures so only compute MD5 if it is required
    if (req.service.getSignerClass(req) === AWS.Signers.V4) {
      if (rules.ContentMD5 && !rules.ContentMD5.required) return false;
    }

    if (rules.ContentMD5 && !req.params.ContentMD5) return true;
  },

  /**
   * A listener that computes the Content-MD5 and sets it in the header.
   * @see AWS.S3.willComputeChecksums
   * @api private
   */
  computeContentMd5: function computeContentMd5(req) {
    if (req.service.willComputeChecksums(req)) {
      var md5 = AWS.util.crypto.md5(req.httpRequest.body, 'base64');
      req.httpRequest.headers['Content-MD5'] = md5;
    }
  },

  /**
   * @api private
   */
  computeSseCustomerKeyMd5: function computeSseCustomerKeyMd5(req) {
    var keys = {
      SSECustomerKey: 'x-amz-server-side-encryption-customer-key-MD5',
      CopySourceSSECustomerKey: 'x-amz-copy-source-server-side-encryption-customer-key-MD5'
    };
    AWS.util.each(keys, function(key, header) {
      if (req.params[key]) {
        var value = AWS.util.crypto.md5(req.params[key], 'base64');
        req.httpRequest.headers[header] = value;
      }
    });
  },

  /**
   * Returns true if the bucket name should be left in the URI path for
   * a request to S3.  This function takes into account the current
   * endpoint protocol (e.g. http or https).
   *
   * @api private
   */
  pathStyleBucketName: function pathStyleBucketName(bucketName) {
    // user can force path style requests via the configuration
    if (this.config.s3ForcePathStyle) return true;
    if (this.config.s3BucketEndpoint) return false;

    if (this.dnsCompatibleBucketName(bucketName)) {
      return (this.config.sslEnabled && bucketName.match(/\./)) ? true : false;
    } else {
      return true; // not dns compatible names must always use path style
    }
  },

  /**
   * Returns true if the bucket name is DNS compatible.  Buckets created
   * outside of the classic region MUST be DNS compatible.
   *
   * @api private
   */
  dnsCompatibleBucketName: function dnsCompatibleBucketName(bucketName) {
    var b = bucketName;
    var domain = new RegExp(/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/);
    var ipAddress = new RegExp(/(\d+\.){3}\d+/);
    var dots = new RegExp(/\.\./);
    return (b.match(domain) && !b.match(ipAddress) && !b.match(dots)) ? true : false;
  },

  /**
   * @return [Boolean] whether response contains an error
   * @api private
   */
  successfulResponse: function successfulResponse(resp) {
    var req = resp.request;
    var httpResponse = resp.httpResponse;
    if (operationsWith200StatusCodeError[req.operation] &&
        httpResponse.body.toString().match('<Error>')) {
      return false;
    } else {
      return httpResponse.statusCode < 300;
    }
  },

  /**
   * @return [Boolean] whether the error can be retried
   * @api private
   */
  retryableError: function retryableError(error, request) {
    if (operationsWith200StatusCodeError[request.operation] &&
        error.statusCode === 200) {
      return true;
    } else if (request._requestRegionForBucket &&
        request.service.bucketRegionCache[request._requestRegionForBucket]) {
      return false;
    } else if (error && error.code === 'RequestTimeout') {
      return true;
    } else if (error &&
        regionRedirectErrorCodes.indexOf(error.code) != -1 &&
        error.region && error.region != request.httpRequest.region) {
      request.httpRequest.region = error.region;
      if (error.statusCode === 301) {
        request.service.updateReqBucketRegion(request);
      }
      return true;
    } else {
      var _super = AWS.Service.prototype.retryableError;
      return _super.call(this, error, request);
    }
  },

  /**
   * Updates httpRequest with region. If region is not provided, then
   * the httpRequest will be updated based on httpRequest.region
   *
   * @api private
   */
  updateReqBucketRegion: function updateReqBucketRegion(request, region) {
    var httpRequest = request.httpRequest;
    if (typeof region === 'string' && region.length) {
      httpRequest.region = region;
    }
    if (!httpRequest.endpoint.host.match(/s3(?!-accelerate).*\.amazonaws\.com$/)) {
      return;
    }
    var service = request.service;
    var s3Config = service.config;
    var s3BucketEndpoint = s3Config.s3BucketEndpoint;
    if (s3BucketEndpoint) {
      delete s3Config.s3BucketEndpoint;
    }
    var newConfig = AWS.util.copy(s3Config);
    delete newConfig.endpoint;
    newConfig.region = httpRequest.region;

    httpRequest.endpoint = (new AWS.S3(newConfig)).endpoint;
    service.populateURI(request);
    s3Config.s3BucketEndpoint = s3BucketEndpoint;
    httpRequest.headers.Host = httpRequest.endpoint.host;

    if (request._asm.currentState === 'validate') {
      request.removeListener('build', service.populateURI);
      request.addListener('build', service.removeVirtualHostedBucketFromPath);
    }
  },

  /**
   * Provides a specialized parser for getBucketLocation -- all other
   * operations are parsed by the super class.
   *
   * @api private
   */
  extractData: function extractData(resp) {
    var req = resp.request;
    if (req.operation === 'getBucketLocation') {
      var match = resp.httpResponse.body.toString().match(/>(.+)<\/Location/);
      delete resp.data['_'];
      if (match) {
        resp.data.LocationConstraint = match[1];
      } else {
        resp.data.LocationConstraint = '';
      }
    }
    var bucket = req.params.Bucket || null;
    if (req.operation === 'deleteBucket' && typeof bucket === 'string' && !resp.error) {
      req.service.clearBucketRegionCache(bucket);
    } else {
      var headers = resp.httpResponse.headers || {};
      var region = headers['x-amz-bucket-region'] || null;
      if (!region && req.operation === 'createBucket' && !resp.error) {
        var createBucketConfiguration = req.params.CreateBucketConfiguration;
        if (!createBucketConfiguration) {
          region = 'us-east-1';
        } else if (createBucketConfiguration.LocationConstraint === 'EU') {
          region = 'eu-west-1';
        } else {
          region = createBucketConfiguration.LocationConstraint;
        }
      }
      if (region) {
          if (bucket && region !== req.service.bucketRegionCache[bucket]) {
            req.service.bucketRegionCache[bucket] = region;
          }
      }
    }
    req.service.extractRequestIds(resp);
  },

  /**
   * Extracts an error object from the http response.
   *
   * @api private
   */
  extractError: function extractError(resp) {
    var codes = {
      304: 'NotModified',
      403: 'Forbidden',
      400: 'BadRequest',
      404: 'NotFound'
    };

    var req = resp.request;
    var code = resp.httpResponse.statusCode;
    var body = resp.httpResponse.body || '';

    var headers = resp.httpResponse.headers || {};
    var region = headers['x-amz-bucket-region'] || null;
    var bucket = req.params.Bucket || null;
    var bucketRegionCache = req.service.bucketRegionCache;
    if (region && bucket && region !== bucketRegionCache[bucket]) {
      bucketRegionCache[bucket] = region;
    }

    var cachedRegion;
    if (codes[code] && body.length === 0) {
      if (bucket && !region) {
        cachedRegion = bucketRegionCache[bucket] || null;
        if (cachedRegion !== req.httpRequest.region) {
          region = cachedRegion;
        }
      }
      resp.error = AWS.util.error(new Error(), {
        code: codes[code],
        message: null,
        region: region
      });
    } else {
      var data = new AWS.XML.Parser().parse(body.toString());

      if (data.Region && !region) {
        region = data.Region;
        if (bucket && region !== bucketRegionCache[bucket]) {
          bucketRegionCache[bucket] = region;
        }
      } else if (bucket && !region && !data.Region) {
        cachedRegion = bucketRegionCache[bucket] || null;
        if (cachedRegion !== req.httpRequest.region) {
          region = cachedRegion;
        }
      }

      resp.error = AWS.util.error(new Error(), {
        code: data.Code || code,
        message: data.Message || null,
        region: region
      });
    }
    req.service.extractRequestIds(resp);
  },

  /**
   * If region was not obtained synchronously, then send async request
   * to get bucket region for errors resulting from wrong region.
   *
   * @api private
   */
  requestBucketRegion: function requestBucketRegion(resp, done) {
    var error = resp.error;
    var req = resp.request;
    var bucket = req.params.Bucket || null;

    if (!error || !bucket || error.region || req.operation === 'listObjects' ||
        (AWS.util.isNode() && req.operation === 'headBucket') ||
        (error.statusCode === 400 && req.operation !== 'headObject') ||
        regionRedirectErrorCodes.indexOf(error.code) === -1) {
      return done();
    }
    var reqOperation = AWS.util.isNode() ? 'headBucket' : 'listObjects';
    var reqParams = {Bucket: bucket};
    if (reqOperation === 'listObjects') reqParams.MaxKeys = 0;
    var regionReq = req.service[reqOperation](reqParams);
    regionReq._requestRegionForBucket = bucket;
    regionReq.send(function() {
      var region = req.service.bucketRegionCache[bucket] || null;
      error.region = region;
      done();
    });
  },

   /**
   * For browser only. If NetworkingError received, will attempt to obtain
   * the bucket region.
   *
   * @api private
   */
   reqRegionForNetworkingError: function reqRegionForNetworkingError(resp, done) {
    if (!AWS.util.isBrowser()) {
      return done();
    }
    var error = resp.error;
    var request = resp.request;
    var bucket = request.params.Bucket;
    if (!error || error.code !== 'NetworkingError' || !bucket ||
        request.httpRequest.region === 'us-east-1') {
      return done();
    }
    var service = request.service;
    var bucketRegionCache = service.bucketRegionCache;
    var cachedRegion = bucketRegionCache[bucket] || null;

    if (cachedRegion && cachedRegion !== request.httpRequest.region) {
      service.updateReqBucketRegion(request, cachedRegion);
      done();
    } else if (!service.dnsCompatibleBucketName(bucket)) {
      service.updateReqBucketRegion(request, 'us-east-1');
      if (bucketRegionCache[bucket] !== 'us-east-1') {
        bucketRegionCache[bucket] = 'us-east-1';
      }
      done();
    } else if (request.httpRequest.virtualHostedBucket) {
      var getRegionReq = service.listObjects({Bucket: bucket, MaxKeys: 0});
      service.updateReqBucketRegion(getRegionReq, 'us-east-1');
      getRegionReq._requestRegionForBucket = bucket;

      getRegionReq.send(function() {
        var region = service.bucketRegionCache[bucket] || null;
        if (region && region !== request.httpRequest.region) {
          service.updateReqBucketRegion(request, region);
        }
        done();
      });
    } else {
      // DNS-compatible path-style
      // (s3ForcePathStyle or bucket name with dot over https)
      // Cannot obtain region information for this case
      done();
    }
   },

  /**
   * Cache for bucket region.
   *
   * @api private
   */
   bucketRegionCache: {},

  /**
   * Clears bucket region cache.
   *
   * @api private
   */
   clearBucketRegionCache: function(buckets) {
    var bucketRegionCache = this.bucketRegionCache;
    if (!buckets) {
      buckets = Object.keys(bucketRegionCache);
    } else if (typeof buckets === 'string') {
      buckets = [buckets];
    }
    for (var i = 0; i < buckets.length; i++) {
      delete bucketRegionCache[buckets[i]];
    }
    return bucketRegionCache;
   },

   /**
    * Corrects request region if bucket's cached region is different
    *
    * @api private
    */
  correctBucketRegionFromCache: function correctBucketRegionFromCache(req) {
    var bucket = req.params.Bucket || null;
    if (bucket) {
      var service = req.service;
      var requestRegion = req.httpRequest.region;
      var cachedRegion = service.bucketRegionCache[bucket];
      if (cachedRegion && cachedRegion !== requestRegion) {
        service.updateReqBucketRegion(req, cachedRegion);
      }
    }
  },

  /**
   * Extracts S3 specific request ids from the http response.
   *
   * @api private
   */
  extractRequestIds: function extractRequestIds(resp) {
    var extendedRequestId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-id-2'] : null;
    var cfId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-cf-id'] : null;
    resp.extendedRequestId = extendedRequestId;
    resp.cfId = cfId;

    if (resp.error) {
      resp.error.requestId = resp.requestId || null;
      resp.error.extendedRequestId = extendedRequestId;
      resp.error.cfId = cfId;
    }
  },

  /**
   * Get a pre-signed URL for a given operation name.
   *
   * @note You must ensure that you have static or previously resolved
   *   credentials if you call this method synchronously (with no callback),
   *   otherwise it may not properly sign the request. If you cannot guarantee
   *   this (you are using an asynchronous credential provider, i.e., EC2
   *   IAM roles), you should always call this method with an asynchronous
   *   callback.
   * @note Not all operation parameters are supported when using pre-signed
   *   URLs. Certain parameters, such as `SSECustomerKey`, `ACL`, `Expires`,
   *   `ContentLength`, or `Tagging` must be provided as headers when sending a
   *   request. If you are using pre-signed URLs to upload from a browser and
   *   need to use these fields, see {createPresignedPost}.
   * @param operation [String] the name of the operation to call
   * @param params [map] parameters to pass to the operation. See the given
   *   operation for the expected operation parameters. In addition, you can
   *   also pass the "Expires" parameter to inform S3 how long the URL should
   *   work for.
   * @option params Expires [Integer] (900) the number of seconds to expire
   *   the pre-signed URL operation in. Defaults to 15 minutes.
   * @param callback [Function] if a callback is provided, this function will
   *   pass the URL as the second parameter (after the error parameter) to
   *   the callback function.
   * @return [String] if called synchronously (with no callback), returns the
   *   signed URL.
   * @return [null] nothing is returned if a callback is provided.
   * @example Pre-signing a getObject operation (synchronously)
   *   var params = {Bucket: 'bucket', Key: 'key'};
   *   var url = s3.getSignedUrl('getObject', params);
   *   console.log('The URL is', url);
   * @example Pre-signing a putObject (asynchronously)
   *   var params = {Bucket: 'bucket', Key: 'key'};
   *   s3.getSignedUrl('putObject', params, function (err, url) {
   *     console.log('The URL is', url);
   *   });
   * @example Pre-signing a putObject operation with a specific payload
   *   var params = {Bucket: 'bucket', Key: 'key', Body: 'body'};
   *   var url = s3.getSignedUrl('putObject', params);
   *   console.log('The URL is', url);
   * @example Passing in a 1-minute expiry time for a pre-signed URL
   *   var params = {Bucket: 'bucket', Key: 'key', Expires: 60};
   *   var url = s3.getSignedUrl('getObject', params);
   *   console.log('The URL is', url); // expires in 60 seconds
   */
  getSignedUrl: function getSignedUrl(operation, params, callback) {
    params = AWS.util.copy(params || {});
    var expires = params.Expires || 900;
    delete params.Expires; // we can't validate this
    var request = this.makeRequest(operation, params);

    if (callback) {
      AWS.util.defer(function() {
        request.presign(expires, callback);
      });
    } else {
      return request.presign(expires, callback);
    }
  },


  /**
   * Get a pre-signed POST policy to support uploading to S3 directly from an
   * HTML form.
   *
   * @param params [map]
   * @option params Bucket [String]     The bucket to which the post should be
   *                                    uploaded
   * @option params Expires [Integer]   (3600) The number of seconds for which
   *                                    the presigned policy should be valid.
   * @option params Conditions [Array]  An array of conditions that must be met
   *                                    for the presigned policy to allow the
   *                                    upload. This can include required tags,
   *                                    the accepted range for content lengths,
   *                                    etc.
   * @see http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html
   * @option params Fields [map]        Fields to include in the form. All
   *                                    values passed in as fields will be
   *                                    signed as exact match conditions.
   * @param callback [Function]
   *
   * @note All fields passed in when creating presigned post data will be signed
   *   as exact match conditions. Any fields that will be interpolated by S3
   *   must be added to the fields hash after signing, and an appropriate
   *   condition for such fields must be explicitly added to the Conditions
   *   array passed to this function before signing.
   *
   * @example Presiging post data with a known key
   *   var params = {
   *     Bucket: 'bucket',
   *     Fields: {
   *       key: 'key'
   *     }
   *   };
   *   s3.createPresignedPost(params, function(err, data) {
   *     if (err) {
   *       console.error('Presigning post data encountered an error', err);
   *     } else {
   *       console.log('The post data is', data);
   *     }
   *   });
   *
   * @example Presigning post data with an interpolated key
   *   var params = {
   *     Bucket: 'bucket',
   *     Conditions: [
   *       ['starts-with', '$key', 'path/to/uploads/']
   *     ]
   *   };
   *   s3.createPresignedPost(params, function(err, data) {
   *     if (err) {
   *       console.error('Presigning post data encountered an error', err);
   *     } else {
   *       data.Fields.key = 'path/to/uploads/${filename}';
   *       console.log('The post data is', data);
   *     }
   *   });
   *
   * @note You must ensure that you have static or previously resolved
   *   credentials if you call this method synchronously (with no callback),
   *   otherwise it may not properly sign the request. If you cannot guarantee
   *   this (you are using an asynchronous credential provider, i.e., EC2
   *   IAM roles), you should always call this method with an asynchronous
   *   callback.
   *
   * @return [map]  If called synchronously (with no callback), returns a hash
   *                with the url to set as the form action and a hash of fields
   *                to include in the form.
   * @return [null] Nothing is returned if a callback is provided.
   *
   * @callback callback function (err, data)
   *  @param err [Error] the error object returned from the policy signer
   *  @param data [map] The data necessary to construct an HTML form
   *  @param data.url [String] The URL to use as the action of the form
   *  @param data.fields [map] A hash of fields that must be included in the
   *                           form for the upload to succeed. This hash will
   *                           include the signed POST policy, your access key
   *                           ID and security token (if present), etc. These
   *                           may be safely included as input elements of type
   *                           'hidden.'
   */
  createPresignedPost: function createPresignedPost(params, callback) {
    if (typeof params === 'function' && callback === undefined) {
      callback = params;
      params = null;
    }

    params = AWS.util.copy(params || {});
    var boundParams = this.config.params || {};
    var bucket = params.Bucket || boundParams.Bucket,
      self = this,
      config = this.config,
      endpoint = AWS.util.copy(this.endpoint);
    if (!config.s3BucketEndpoint) {
      endpoint.pathname = '/' + bucket;
    }

    function finalizePost() {
      return {
        url: AWS.util.urlFormat(endpoint),
        fields: self.preparePostFields(
          config.credentials,
          config.region,
          bucket,
          params.Fields,
          params.Conditions,
          params.Expires
        )
      };
    }

    if (callback) {
      config.getCredentials(function (err) {
        if (err) {
          callback(err);
        }

        callback(null, finalizePost());
      });
    } else {
      return finalizePost();
    }
  },

  /**
   * @api private
   */
  preparePostFields: function preparePostFields(
    credentials,
    region,
    bucket,
    fields,
    conditions,
    expiresInSeconds
  ) {
    var now = this.getSkewCorrectedDate();
    if (!credentials || !region || !bucket) {
      throw new Error('Unable to create a POST object policy without a bucket,'
        + ' region, and credentials');
    }
    fields = AWS.util.copy(fields || {});
    conditions = (conditions || []).slice(0);
    expiresInSeconds = expiresInSeconds || 3600;

    var signingDate = AWS.util.date.iso8601(now).replace(/[:\-]|\.\d{3}/g, '');
    var shortDate = signingDate.substr(0, 8);
    var scope = v4Credentials.createScope(shortDate, region, 's3');
    var credential = credentials.accessKeyId + '/' + scope;

    fields['bucket'] = bucket;
    fields['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256';
    fields['X-Amz-Credential'] = credential;
    fields['X-Amz-Date'] = signingDate;
    if (credentials.sessionToken) {
      fields['X-Amz-Security-Token'] = credentials.sessionToken;
    }
    for (var field in fields) {
      if (fields.hasOwnProperty(field)) {
        var condition = {};
        condition[field] = fields[field];
        conditions.push(condition);
      }
    }

    fields.Policy = this.preparePostPolicy(
      new Date(now.valueOf() + expiresInSeconds * 1000),
      conditions
    );
    fields['X-Amz-Signature'] = AWS.util.crypto.hmac(
      v4Credentials.getSigningKey(credentials, shortDate, region, 's3', true),
      fields.Policy,
      'hex'
    );

    return fields;
  },

  /**
   * @api private
   */
  preparePostPolicy: function preparePostPolicy(expiration, conditions) {
    return AWS.util.base64.encode(JSON.stringify({
      expiration: AWS.util.date.iso8601(expiration),
      conditions: conditions
    }));
  },

  /**
   * @api private
   */
  prepareSignedUrl: function prepareSignedUrl(request) {
    request.addListener('validate', request.service.noPresignedContentLength);
    request.removeListener('build', request.service.addContentType);
    if (!request.params.Body) {
      // no Content-MD5/SHA-256 if body is not provided
      request.removeListener('build', request.service.computeContentMd5);
    } else {
      request.addListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256);
    }
  },

  /**
   * @api private
   * @param request
   */
  disableBodySigning: function disableBodySigning(request) {
    var headers = request.httpRequest.headers;
    // Add the header to anything that isn't a presigned url, unless that presigned url had a body defined
    if (!Object.prototype.hasOwnProperty.call(headers, 'presigned-expires')) {
      headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD';
    }
  },

  /**
   * @api private
   */
  noPresignedContentLength: function noPresignedContentLength(request) {
    if (request.params.ContentLength !== undefined) {
      throw AWS.util.error(new Error(), {code: 'UnexpectedParameter',
        message: 'ContentLength is not supported in pre-signed URLs.'});
    }
  },

  createBucket: function createBucket(params, callback) {
    // When creating a bucket *outside* the classic region, the location
    // constraint must be set for the bucket and it must match the endpoint.
    // This chunk of code will set the location constraint param based
    // on the region (when possible), but it will not override a passed-in
    // location constraint.
    if (typeof params === 'function' || !params) {
      callback = callback || params;
      params = {};
    }
    var hostname = this.endpoint.hostname;
    if (hostname !== this.api.globalEndpoint && !params.CreateBucketConfiguration) {
      params.CreateBucketConfiguration = { LocationConstraint: this.config.region };
    }
    return this.makeRequest('createBucket', params, callback);
  },

  /**
   * @see AWS.S3.ManagedUpload
   * @overload upload(params = {}, [options], [callback])
   *   Uploads an arbitrarily sized buffer, blob, or stream, using intelligent
   *   concurrent handling of parts if the payload is large enough. You can
   *   configure the concurrent queue size by setting `options`. Note that this
   *   is the only operation for which the SDK can retry requests with stream
   *   bodies.
   *
   *   @param (see AWS.S3.putObject)
   *   @option (see AWS.S3.ManagedUpload.constructor)
   *   @return [AWS.S3.ManagedUpload] the managed upload object that can call
   *     `send()` or track progress.
   *   @example Uploading a stream object
   *     var params = {Bucket: 'bucket', Key: 'key', Body: stream};
   *     s3.upload(params, function(err, data) {
   *       console.log(err, data);
   *     });
   *   @example Uploading a stream with concurrency of 1 and partSize of 10mb
   *     var params = {Bucket: 'bucket', Key: 'key', Body: stream};
   *     var options = {partSize: 10 * 1024 * 1024, queueSize: 1};
   *     s3.upload(params, options, function(err, data) {
   *       console.log(err, data);
   *     });
   * @callback callback function(err, data)
   *   @param err [Error] an error or null if no error occurred.
   *   @param data [map] The response data from the successful upload:
   *   @param data.Location [String] the URL of the uploaded object
   *   @param data.ETag [String] the ETag of the uploaded object
   *   @param data.Bucket [String]  the bucket to which the object was uploaded
   *   @param data.Key [String] the key to which the object was uploaded
   */
  upload: function upload(params, options, callback) {
    if (typeof options === 'function' && callback === undefined) {
      callback = options;
      options = null;
    }

    options = options || {};
    options = AWS.util.merge(options || {}, {service: this, params: params});

    var uploader = new AWS.S3.ManagedUpload(options);
    if (typeof callback === 'function') uploader.send(callback);
    return uploader;
  }
});

},{"../core":239,"../s3/managed_upload":277,"../signers/v4_credentials":301}],292:[function(require,module,exports){
var AWS = require('../core');

AWS.util.update(AWS.SQS.prototype, {
  /**
   * @api private
   */
  setupRequestListeners: function setupRequestListeners(request) {
    request.addListener('build', this.buildEndpoint);

    if (request.service.config.computeChecksums) {
      if (request.operation === 'sendMessage') {
        request.addListener('extractData', this.verifySendMessageChecksum);
      } else if (request.operation === 'sendMessageBatch') {
        request.addListener('extractData', this.verifySendMessageBatchChecksum);
      } else if (request.operation === 'receiveMessage') {
        request.addListener('extractData', this.verifyReceiveMessageChecksum);
      }
    }
  },

  /**
   * @api private
   */
  verifySendMessageChecksum: function verifySendMessageChecksum(response) {
    if (!response.data) return;

    var md5 = response.data.MD5OfMessageBody;
    var body = this.params.MessageBody;
    var calculatedMd5 = this.service.calculateChecksum(body);
    if (calculatedMd5 !== md5) {
      var msg = 'Got "' + response.data.MD5OfMessageBody +
        '", expecting "' + calculatedMd5 + '".';
      this.service.throwInvalidChecksumError(response,
        [response.data.MessageId], msg);
    }
  },

  /**
   * @api private
   */
  verifySendMessageBatchChecksum: function verifySendMessageBatchChecksum(response) {
    if (!response.data) return;

    var service = this.service;
    var entries = {};
    var errors = [];
    var messageIds = [];
    AWS.util.arrayEach(response.data.Successful, function (entry) {
      entries[entry.Id] = entry;
    });
    AWS.util.arrayEach(this.params.Entries, function (entry) {
      if (entries[entry.Id]) {
        var md5 = entries[entry.Id].MD5OfMessageBody;
        var body = entry.MessageBody;
        if (!service.isChecksumValid(md5, body)) {
          errors.push(entry.Id);
          messageIds.push(entries[entry.Id].MessageId);
        }
      }
    });

    if (errors.length > 0) {
      service.throwInvalidChecksumError(response, messageIds,
        'Invalid messages: ' + errors.join(', '));
    }
  },

  /**
   * @api private
   */
  verifyReceiveMessageChecksum: function verifyReceiveMessageChecksum(response) {
    if (!response.data) return;

    var service = this.service;
    var messageIds = [];
    AWS.util.arrayEach(response.data.Messages, function(message) {
      var md5 = message.MD5OfBody;
      var body = message.Body;
      if (!service.isChecksumValid(md5, body)) {
        messageIds.push(message.MessageId);
      }
    });

    if (messageIds.length > 0) {
      service.throwInvalidChecksumError(response, messageIds,
        'Invalid messages: ' + messageIds.join(', '));
    }
  },

  /**
   * @api private
   */
  throwInvalidChecksumError: function throwInvalidChecksumError(response, ids, message) {
    response.error = AWS.util.error(new Error(), {
      retryable: true,
      code: 'InvalidChecksum',
      messageIds: ids,
      message: response.request.operation +
               ' returned an invalid MD5 response. ' + message
    });
  },

  /**
   * @api private
   */
  isChecksumValid: function isChecksumValid(checksum, data) {
    return this.calculateChecksum(data) === checksum;
  },

  /**
   * @api private
   */
  calculateChecksum: function calculateChecksum(data) {
    return AWS.util.crypto.md5(data, 'hex');
  },

  /**
   * @api private
   */
  buildEndpoint: function buildEndpoint(request) {
    var url = request.httpRequest.params.QueueUrl;
    if (url) {
      request.httpRequest.endpoint = new AWS.Endpoint(url);

      // signature version 4 requires the region name to be set,
      // sqs queue urls contain the region name
      var matches = request.httpRequest.endpoint.host.match(/^sqs\.(.+?)\./);
      if (matches) request.httpRequest.region = matches[1];
    }
  }
});

},{"../core":239}],293:[function(require,module,exports){
var AWS = require('../core');

AWS.util.update(AWS.STS.prototype, {
  /**
   * @overload credentialsFrom(data, credentials = null)
   *   Creates a credentials object from STS response data containing
   *   credentials information. Useful for quickly setting AWS credentials.
   *
   *   @note This is a low-level utility function. If you want to load temporary
   *     credentials into your process for subsequent requests to AWS resources,
   *     you should use {AWS.TemporaryCredentials} instead.
   *   @param data [map] data retrieved from a call to {getFederatedToken},
   *     {getSessionToken}, {assumeRole}, or {assumeRoleWithWebIdentity}.
   *   @param credentials [AWS.Credentials] an optional credentials object to
   *     fill instead of creating a new object. Useful when modifying an
   *     existing credentials object from a refresh call.
   *   @return [AWS.TemporaryCredentials] the set of temporary credentials
   *     loaded from a raw STS operation response.
   *   @example Using credentialsFrom to load global AWS credentials
   *     var sts = new AWS.STS();
   *     sts.getSessionToken(function (err, data) {
   *       if (err) console.log("Error getting credentials");
   *       else {
   *         AWS.config.credentials = sts.credentialsFrom(data);
   *       }
   *     });
   *   @see AWS.TemporaryCredentials
   */
  credentialsFrom: function credentialsFrom(data, credentials) {
    if (!data) return null;
    if (!credentials) credentials = new AWS.TemporaryCredentials();
    credentials.expired = false;
    credentials.accessKeyId = data.Credentials.AccessKeyId;
    credentials.secretAccessKey = data.Credentials.SecretAccessKey;
    credentials.sessionToken = data.Credentials.SessionToken;
    credentials.expireTime = data.Credentials.Expiration;
    return credentials;
  },

  assumeRoleWithWebIdentity: function assumeRoleWithWebIdentity(params, callback) {
    return this.makeUnauthenticatedRequest('assumeRoleWithWebIdentity', params, callback);
  },

  assumeRoleWithSAML: function assumeRoleWithSAML(params, callback) {
    return this.makeUnauthenticatedRequest('assumeRoleWithSAML', params, callback);
  }
});

},{"../core":239}],294:[function(require,module,exports){
var AWS = require('../core');
var inherit = AWS.util.inherit;

/**
 * @api private
 */
var expiresHeader = 'presigned-expires';

/**
 * @api private
 */
function signedUrlBuilder(request) {
  var expires = request.httpRequest.headers[expiresHeader];
  var signerClass = request.service.getSignerClass(request);

  delete request.httpRequest.headers['User-Agent'];
  delete request.httpRequest.headers['X-Amz-User-Agent'];

  if (signerClass === AWS.Signers.V4) {
    if (expires > 604800) { // one week expiry is invalid
      var message = 'Presigning does not support expiry time greater ' +
                    'than a week with SigV4 signing.';
      throw AWS.util.error(new Error(), {
        code: 'InvalidExpiryTime', message: message, retryable: false
      });
    }
    request.httpRequest.headers[expiresHeader] = expires;
  } else if (signerClass === AWS.Signers.S3) {
    var now = request.service ? request.service.getSkewCorrectedDate() : AWS.util.date.getDate();
    request.httpRequest.headers[expiresHeader] = parseInt(
      AWS.util.date.unixTimestamp(now) + expires, 10).toString();
  } else {
    throw AWS.util.error(new Error(), {
      message: 'Presigning only supports S3 or SigV4 signing.',
      code: 'UnsupportedSigner', retryable: false
    });
  }
}

/**
 * @api private
 */
function signedUrlSigner(request) {
  var endpoint = request.httpRequest.endpoint;
  var parsedUrl = AWS.util.urlParse(request.httpRequest.path);
  var queryParams = {};

  if (parsedUrl.search) {
    queryParams = AWS.util.queryStringParse(parsedUrl.search.substr(1));
  }

  var auth = request.httpRequest.headers['Authorization'].split(' ');
  if (auth[0] === 'AWS') {
    auth = auth[1].split(':');
    queryParams['AWSAccessKeyId'] = auth[0];
    queryParams['Signature'] = auth[1];

    AWS.util.each(request.httpRequest.headers, function (key, value) {
      if (key === expiresHeader) key = 'Expires';
      if (key.indexOf('x-amz-meta-') === 0) {
        // Delete existing, potentially not normalized key
        delete queryParams[key];
        key = key.toLowerCase();
      }
      queryParams[key] = value;
    });
    delete request.httpRequest.headers[expiresHeader];
    delete queryParams['Authorization'];
    delete queryParams['Host'];
  } else if (auth[0] === 'AWS4-HMAC-SHA256') { // SigV4 signing
    auth.shift();
    var rest = auth.join(' ');
    var signature = rest.match(/Signature=(.*?)(?:,|\s|\r?\n|$)/)[1];
    queryParams['X-Amz-Signature'] = signature;
    delete queryParams['Expires'];
  }

  // build URL
  endpoint.pathname = parsedUrl.pathname;
  endpoint.search = AWS.util.queryParamsToString(queryParams);
}

/**
 * @api private
 */
AWS.Signers.Presign = inherit({
  /**
   * @api private
   */
  sign: function sign(request, expireTime, callback) {
    request.httpRequest.headers[expiresHeader] = expireTime || 3600;
    request.on('build', signedUrlBuilder);
    request.on('sign', signedUrlSigner);
    request.removeListener('afterBuild',
      AWS.EventListeners.Core.SET_CONTENT_LENGTH);
    request.removeListener('afterBuild',
      AWS.EventListeners.Core.COMPUTE_SHA256);

    request.emit('beforePresign', [request]);

    if (callback) {
      request.build(function() {
        if (this.response.error) callback(this.response.error);
        else {
          callback(null, AWS.util.urlFormat(request.httpRequest.endpoint));
        }
      });
    } else {
      request.build();
      if (request.response.error) throw request.response.error;
      return AWS.util.urlFormat(request.httpRequest.endpoint);
    }
  }
});

module.exports = AWS.Signers.Presign;

},{"../core":239}],295:[function(require,module,exports){
var AWS = require('../core');

var inherit = AWS.util.inherit;

/**
 * @api private
 */
AWS.Signers.RequestSigner = inherit({
  constructor: function RequestSigner(request) {
    this.request = request;
  },

  setServiceClientId: function setServiceClientId(id) {
    this.serviceClientId = id;
  },

  getServiceClientId: function getServiceClientId() {
    return this.serviceClientId;
  }
});

AWS.Signers.RequestSigner.getVersion = function getVersion(version) {
  switch (version) {
    case 'v2': return AWS.Signers.V2;
    case 'v3': return AWS.Signers.V3;
    case 'v4': return AWS.Signers.V4;
    case 's3': return AWS.Signers.S3;
    case 'v3https': return AWS.Signers.V3Https;
  }
  throw new Error('Unknown signing version ' + version);
};

require('./v2');
require('./v3');
require('./v3https');
require('./v4');
require('./s3');
require('./presign');

},{"../core":239,"./presign":294,"./s3":296,"./v2":297,"./v3":298,"./v3https":299,"./v4":300}],296:[function(require,module,exports){
var AWS = require('../core');
var inherit = AWS.util.inherit;

/**
 * @api private
 */
AWS.Signers.S3 = inherit(AWS.Signers.RequestSigner, {
  /**
   * When building the stringToSign, these sub resource params should be
   * part of the canonical resource string with their NON-decoded values
   */
  subResources: {
    'acl': 1,
    'accelerate': 1,
    'analytics': 1,
    'cors': 1,
    'lifecycle': 1,
    'delete': 1,
    'inventory': 1,
    'location': 1,
    'logging': 1,
    'metrics': 1,
    'notification': 1,
    'partNumber': 1,
    'policy': 1,
    'requestPayment': 1,
    'replication': 1,
    'restore': 1,
    'tagging': 1,
    'torrent': 1,
    'uploadId': 1,
    'uploads': 1,
    'versionId': 1,
    'versioning': 1,
    'versions': 1,
    'website': 1
  },

  // when building the stringToSign, these querystring params should be
  // part of the canonical resource string with their NON-encoded values
  responseHeaders: {
    'response-content-type': 1,
    'response-content-language': 1,
    'response-expires': 1,
    'response-cache-control': 1,
    'response-content-disposition': 1,
    'response-content-encoding': 1
  },

  addAuthorization: function addAuthorization(credentials, date) {
    if (!this.request.headers['presigned-expires']) {
      this.request.headers['X-Amz-Date'] = AWS.util.date.rfc822(date);
    }

    if (credentials.sessionToken) {
      // presigned URLs require this header to be lowercased
      this.request.headers['x-amz-security-token'] = credentials.sessionToken;
    }

    var signature = this.sign(credentials.secretAccessKey, this.stringToSign());
    var auth = 'AWS ' + credentials.accessKeyId + ':' + signature;

    this.request.headers['Authorization'] = auth;
  },

  stringToSign: function stringToSign() {
    var r = this.request;

    var parts = [];
    parts.push(r.method);
    parts.push(r.headers['Content-MD5'] || '');
    parts.push(r.headers['Content-Type'] || '');

    // This is the "Date" header, but we use X-Amz-Date.
    // The S3 signing mechanism requires us to pass an empty
    // string for this Date header regardless.
    parts.push(r.headers['presigned-expires'] || '');

    var headers = this.canonicalizedAmzHeaders();
    if (headers) parts.push(headers);
    parts.push(this.canonicalizedResource());

    return parts.join('\n');

  },

  canonicalizedAmzHeaders: function canonicalizedAmzHeaders() {

    var amzHeaders = [];

    AWS.util.each(this.request.headers, function (name) {
      if (name.match(/^x-amz-/i))
        amzHeaders.push(name);
    });

    amzHeaders.sort(function (a, b) {
      return a.toLowerCase() < b.toLowerCase() ? -1 : 1;
    });

    var parts = [];
    AWS.util.arrayEach.call(this, amzHeaders, function (name) {
      parts.push(name.toLowerCase() + ':' + String(this.request.headers[name]));
    });

    return parts.join('\n');

  },

  canonicalizedResource: function canonicalizedResource() {

    var r = this.request;

    var parts = r.path.split('?');
    var path = parts[0];
    var querystring = parts[1];

    var resource = '';

    if (r.virtualHostedBucket)
      resource += '/' + r.virtualHostedBucket;

    resource += path;

    if (querystring) {

      // collect a list of sub resources and query params that need to be signed
      var resources = [];

      AWS.util.arrayEach.call(this, querystring.split('&'), function (param) {
        var name = param.split('=')[0];
        var value = param.split('=')[1];
        if (this.subResources[name] || this.responseHeaders[name]) {
          var subresource = { name: name };
          if (value !== undefined) {
            if (this.subResources[name]) {
              subresource.value = value;
            } else {
              subresource.value = decodeURIComponent(value);
            }
          }
          resources.push(subresource);
        }
      });

      resources.sort(function (a, b) { return a.name < b.name ? -1 : 1; });

      if (resources.length) {

        querystring = [];
        AWS.util.arrayEach(resources, function (res) {
          if (res.value === undefined) {
            querystring.push(res.name);
          } else {
            querystring.push(res.name + '=' + res.value);
          }
        });

        resource += '?' + querystring.join('&');
      }

    }

    return resource;

  },

  sign: function sign(secret, string) {
    return AWS.util.crypto.hmac(secret, string, 'base64', 'sha1');
  }
});

module.exports = AWS.Signers.S3;

},{"../core":239}],297:[function(require,module,exports){
var AWS = require('../core');
var inherit = AWS.util.inherit;

/**
 * @api private
 */
AWS.Signers.V2 = inherit(AWS.Signers.RequestSigner, {
  addAuthorization: function addAuthorization(credentials, date) {

    if (!date) date = AWS.util.date.getDate();

    var r = this.request;

    r.params.Timestamp = AWS.util.date.iso8601(date);
    r.params.SignatureVersion = '2';
    r.params.SignatureMethod = 'HmacSHA256';
    r.params.AWSAccessKeyId = credentials.accessKeyId;

    if (credentials.sessionToken) {
      r.params.SecurityToken = credentials.sessionToken;
    }

    delete r.params.Signature; // delete old Signature for re-signing
    r.params.Signature = this.signature(credentials);

    r.body = AWS.util.queryParamsToString(r.params);
    r.headers['Content-Length'] = r.body.length;
  },

  signature: function signature(credentials) {
    return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64');
  },

  stringToSign: function stringToSign() {
    var parts = [];
    parts.push(this.request.method);
    parts.push(this.request.endpoint.host.toLowerCase());
    parts.push(this.request.pathname());
    parts.push(AWS.util.queryParamsToString(this.request.params));
    return parts.join('\n');
  }

});

module.exports = AWS.Signers.V2;

},{"../core":239}],298:[function(require,module,exports){
var AWS = require('../core');
var inherit = AWS.util.inherit;

/**
 * @api private
 */
AWS.Signers.V3 = inherit(AWS.Signers.RequestSigner, {
  addAuthorization: function addAuthorization(credentials, date) {

    var datetime = AWS.util.date.rfc822(date);

    this.request.headers['X-Amz-Date'] = datetime;

    if (credentials.sessionToken) {
      this.request.headers['x-amz-security-token'] = credentials.sessionToken;
    }

    this.request.headers['X-Amzn-Authorization'] =
      this.authorization(credentials, datetime);

  },

  authorization: function authorization(credentials) {
    return 'AWS3 ' +
      'AWSAccessKeyId=' + credentials.accessKeyId + ',' +
      'Algorithm=HmacSHA256,' +
      'SignedHeaders=' + this.signedHeaders() + ',' +
      'Signature=' + this.signature(credentials);
  },

  signedHeaders: function signedHeaders() {
    var headers = [];
    AWS.util.arrayEach(this.headersToSign(), function iterator(h) {
      headers.push(h.toLowerCase());
    });
    return headers.sort().join(';');
  },

  canonicalHeaders: function canonicalHeaders() {
    var headers = this.request.headers;
    var parts = [];
    AWS.util.arrayEach(this.headersToSign(), function iterator(h) {
      parts.push(h.toLowerCase().trim() + ':' + String(headers[h]).trim());
    });
    return parts.sort().join('\n') + '\n';
  },

  headersToSign: function headersToSign() {
    var headers = [];
    AWS.util.each(this.request.headers, function iterator(k) {
      if (k === 'Host' || k === 'Content-Encoding' || k.match(/^X-Amz/i)) {
        headers.push(k);
      }
    });
    return headers;
  },

  signature: function signature(credentials) {
    return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64');
  },

  stringToSign: function stringToSign() {
    var parts = [];
    parts.push(this.request.method);
    parts.push('/');
    parts.push('');
    parts.push(this.canonicalHeaders());
    parts.push(this.request.body);
    return AWS.util.crypto.sha256(parts.join('\n'));
  }

});

module.exports = AWS.Signers.V3;

},{"../core":239}],299:[function(require,module,exports){
var AWS = require('../core');
var inherit = AWS.util.inherit;

require('./v3');

/**
 * @api private
 */
AWS.Signers.V3Https = inherit(AWS.Signers.V3, {
  authorization: function authorization(credentials) {
    return 'AWS3-HTTPS ' +
      'AWSAccessKeyId=' + credentials.accessKeyId + ',' +
      'Algorithm=HmacSHA256,' +
      'Signature=' + this.signature(credentials);
  },

  stringToSign: function stringToSign() {
    return this.request.headers['X-Amz-Date'];
  }
});

module.exports = AWS.Signers.V3Https;

},{"../core":239,"./v3":298}],300:[function(require,module,exports){
var AWS = require('../core');
var v4Credentials = require('./v4_credentials');
var inherit = AWS.util.inherit;

/**
 * @api private
 */
var expiresHeader = 'presigned-expires';

/**
 * @api private
 */
AWS.Signers.V4 = inherit(AWS.Signers.RequestSigner, {
  constructor: function V4(request, serviceName, options) {
    AWS.Signers.RequestSigner.call(this, request);
    this.serviceName = serviceName;
    options = options || {};
    this.signatureCache = typeof options.signatureCache === 'boolean' ? options.signatureCache : true;
    this.operation = options.operation;
  },

  algorithm: 'AWS4-HMAC-SHA256',

  addAuthorization: function addAuthorization(credentials, date) {
    var datetime = AWS.util.date.iso8601(date).replace(/[:\-]|\.\d{3}/g, '');

    if (this.isPresigned()) {
      this.updateForPresigned(credentials, datetime);
    } else {
      this.addHeaders(credentials, datetime);
    }

    this.request.headers['Authorization'] =
      this.authorization(credentials, datetime);
  },

  addHeaders: function addHeaders(credentials, datetime) {
    this.request.headers['X-Amz-Date'] = datetime;
    if (credentials.sessionToken) {
      this.request.headers['x-amz-security-token'] = credentials.sessionToken;
    }
  },

  updateForPresigned: function updateForPresigned(credentials, datetime) {
    var credString = this.credentialString(datetime);
    var qs = {
      'X-Amz-Date': datetime,
      'X-Amz-Algorithm': this.algorithm,
      'X-Amz-Credential': credentials.accessKeyId + '/' + credString,
      'X-Amz-Expires': this.request.headers[expiresHeader],
      'X-Amz-SignedHeaders': this.signedHeaders()
    };

    if (credentials.sessionToken) {
      qs['X-Amz-Security-Token'] = credentials.sessionToken;
    }

    if (this.request.headers['Content-Type']) {
      qs['Content-Type'] = this.request.headers['Content-Type'];
    }
    if (this.request.headers['Content-MD5']) {
      qs['Content-MD5'] = this.request.headers['Content-MD5'];
    }
    if (this.request.headers['Cache-Control']) {
      qs['Cache-Control'] = this.request.headers['Cache-Control'];
    }

    // need to pull in any other X-Amz-* headers
    AWS.util.each.call(this, this.request.headers, function(key, value) {
      if (key === expiresHeader) return;
      if (this.isSignableHeader(key)) {
        var lowerKey = key.toLowerCase();
        // Metadata should be normalized
        if (lowerKey.indexOf('x-amz-meta-') === 0) {
          qs[lowerKey] = value;
        } else if (lowerKey.indexOf('x-amz-') === 0) {
          qs[key] = value;
        }
      }
    });

    var sep = this.request.path.indexOf('?') >= 0 ? '&' : '?';
    this.request.path += sep + AWS.util.queryParamsToString(qs);
  },

  authorization: function authorization(credentials, datetime) {
    var parts = [];
    var credString = this.credentialString(datetime);
    parts.push(this.algorithm + ' Credential=' +
      credentials.accessKeyId + '/' + credString);
    parts.push('SignedHeaders=' + this.signedHeaders());
    parts.push('Signature=' + this.signature(credentials, datetime));
    return parts.join(', ');
  },

  signature: function signature(credentials, datetime) {
    var signingKey = v4Credentials.getSigningKey(
      credentials,
      datetime.substr(0, 8),
      this.request.region,
      this.serviceName,
      this.signatureCache
    );
    return AWS.util.crypto.hmac(signingKey, this.stringToSign(datetime), 'hex');
  },

  stringToSign: function stringToSign(datetime) {
    var parts = [];
    parts.push('AWS4-HMAC-SHA256');
    parts.push(datetime);
    parts.push(this.credentialString(datetime));
    parts.push(this.hexEncodedHash(this.canonicalString()));
    return parts.join('\n');
  },

  canonicalString: function canonicalString() {
    var parts = [], pathname = this.request.pathname();
    if (this.serviceName !== 's3') pathname = AWS.util.uriEscapePath(pathname);

    parts.push(this.request.method);
    parts.push(pathname);
    parts.push(this.request.search());
    parts.push(this.canonicalHeaders() + '\n');
    parts.push(this.signedHeaders());
    parts.push(this.hexEncodedBodyHash());
    return parts.join('\n');
  },

  canonicalHeaders: function canonicalHeaders() {
    var headers = [];
    AWS.util.each.call(this, this.request.headers, function (key, item) {
      headers.push([key, item]);
    });
    headers.sort(function (a, b) {
      return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : 1;
    });
    var parts = [];
    AWS.util.arrayEach.call(this, headers, function (item) {
      var key = item[0].toLowerCase();
      if (this.isSignableHeader(key)) {
        var value = item[1];
        if (typeof value === 'undefined' || value === null || typeof value.toString !== 'function') {
          throw AWS.util.error(new Error('Header ' + key + ' contains invalid value'), {
            code: 'InvalidHeader'
          });
        }
        parts.push(key + ':' +
          this.canonicalHeaderValues(value.toString()));
      }
    });
    return parts.join('\n');
  },

  canonicalHeaderValues: function canonicalHeaderValues(values) {
    return values.replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, '');
  },

  signedHeaders: function signedHeaders() {
    var keys = [];
    AWS.util.each.call(this, this.request.headers, function (key) {
      key = key.toLowerCase();
      if (this.isSignableHeader(key)) keys.push(key);
    });
    return keys.sort().join(';');
  },

  credentialString: function credentialString(datetime) {
    return v4Credentials.createScope(
      datetime.substr(0, 8),
      this.request.region,
      this.serviceName
    );
  },

  hexEncodedHash: function hash(string) {
    return AWS.util.crypto.sha256(string, 'hex');
  },

  hexEncodedBodyHash: function hexEncodedBodyHash() {
    var request = this.request;
    if (this.isPresigned() && this.serviceName === 's3' && !request.body) {
      return 'UNSIGNED-PAYLOAD';
    } else if (request.headers['X-Amz-Content-Sha256']) {
      return request.headers['X-Amz-Content-Sha256'];
    } else {
      return this.hexEncodedHash(this.request.body || '');
    }
  },

  unsignableHeaders: [
    'authorization',
    'content-type',
    'content-length',
    'user-agent',
    expiresHeader,
    'expect',
    'x-amzn-trace-id'
  ],

  isSignableHeader: function isSignableHeader(key) {
    if (key.toLowerCase().indexOf('x-amz-') === 0) return true;
    return this.unsignableHeaders.indexOf(key) < 0;
  },

  isPresigned: function isPresigned() {
    return this.request.headers[expiresHeader] ? true : false;
  }

});

module.exports = AWS.Signers.V4;

},{"../core":239,"./v4_credentials":301}],301:[function(require,module,exports){
var AWS = require('../core');

/**
 * @api private
 */
var cachedSecret = {};

/**
 * @api private
 */
var cacheQueue = [];

/**
 * @api private
 */
var maxCacheEntries = 50;

/**
 * @api private
 */
var v4Identifier = 'aws4_request';

module.exports = {
  /**
   * @api private
   *
   * @param date [String]
   * @param region [String]
   * @param serviceName [String]
   * @return [String]
   */
  createScope: function createScope(date, region, serviceName) {
    return [
      date.substr(0, 8),
      region,
      serviceName,
      v4Identifier
    ].join('/');
  },

  /**
   * @api private
   *
   * @param credentials [Credentials]
   * @param date [String]
   * @param region [String]
   * @param service [String]
   * @param shouldCache [Boolean]
   * @return [String]
   */
  getSigningKey: function getSigningKey(
    credentials,
    date,
    region,
    service,
    shouldCache
  ) {
    var credsIdentifier = AWS.util.crypto
      .hmac(credentials.secretAccessKey, credentials.accessKeyId, 'base64');
    var cacheKey = [credsIdentifier, date, region, service].join('_');
    shouldCache = shouldCache !== false;
    if (shouldCache && (cacheKey in cachedSecret)) {
      return cachedSecret[cacheKey];
    }

    var kDate = AWS.util.crypto.hmac(
      'AWS4' + credentials.secretAccessKey,
      date,
      'buffer'
    );
    var kRegion = AWS.util.crypto.hmac(kDate, region, 'buffer');
    var kService = AWS.util.crypto.hmac(kRegion, service, 'buffer');

    var signingKey = AWS.util.crypto.hmac(kService, v4Identifier, 'buffer');
    if (shouldCache) {
      cachedSecret[cacheKey] = signingKey;
      cacheQueue.push(cacheKey);
      if (cacheQueue.length > maxCacheEntries) {
        // remove the oldest entry (not the least recently used)
        delete cachedSecret[cacheQueue.shift()];
      }
    }

    return signingKey;
  },

  /**
   * @api private
   *
   * Empties the derived signing key cache. Made available for testing purposes
   * only.
   */
  emptyCache: function emptyCache() {
    cachedSecret = {};
    cacheQueue = [];
  }
};

},{"../core":239}],302:[function(require,module,exports){
function AcceptorStateMachine(states, state) {
  this.currentState = state || null;
  this.states = states || {};
}

AcceptorStateMachine.prototype.runTo = function runTo(finalState, done, bindObject, inputError) {
  if (typeof finalState === 'function') {
    inputError = bindObject; bindObject = done;
    done = finalState; finalState = null;
  }

  var self = this;
  var state = self.states[self.currentState];
  state.fn.call(bindObject || self, inputError, function(err) {
    if (err) {
      if (state.fail) self.currentState = state.fail;
      else return done ? done.call(bindObject, err) : null;
    } else {
      if (state.accept) self.currentState = state.accept;
      else return done ? done.call(bindObject) : null;
    }
    if (self.currentState === finalState) {
      return done ? done.call(bindObject, err) : null;
    }

    self.runTo(finalState, done, bindObject, err);
  });
};

AcceptorStateMachine.prototype.addState = function addState(name, acceptState, failState, fn) {
  if (typeof acceptState === 'function') {
    fn = acceptState; acceptState = null; failState = null;
  } else if (typeof failState === 'function') {
    fn = failState; failState = null;
  }

  if (!this.currentState) this.currentState = name;
  this.states[name] = { accept: acceptState, fail: failState, fn: fn };
  return this;
};

module.exports = AcceptorStateMachine;

},{}],303:[function(require,module,exports){
(function (process){
/* eslint guard-for-in:0 */
var AWS;

/**
 * A set of utility methods for use with the AWS SDK.
 *
 * @!attribute abort
 *   Return this value from an iterator function {each} or {arrayEach}
 *   to break out of the iteration.
 *   @example Breaking out of an iterator function
 *     AWS.util.each({a: 1, b: 2, c: 3}, function(key, value) {
 *       if (key == 'b') return AWS.util.abort;
 *     });
 *   @see each
 *   @see arrayEach
 * @api private
 */
var util = {
  environment: 'nodejs',
  engine: function engine() {
    if (util.isBrowser() && typeof navigator !== 'undefined') {
      return navigator.userAgent;
    } else {
      var engine = process.platform + '/' + process.version;
      if (process.env.AWS_EXECUTION_ENV) {
        engine += ' exec-env/' + process.env.AWS_EXECUTION_ENV;
      }
      return engine;
    }
  },

  userAgent: function userAgent() {
    var name = util.environment;
    var agent = 'aws-sdk-' + name + '/' + require('./core').VERSION;
    if (name === 'nodejs') agent += ' ' + util.engine();
    return agent;
  },

  isBrowser: function isBrowser() { return process && process.browser; },
  isNode: function isNode() { return !util.isBrowser(); },
  uriEscape: function uriEscape(string) {
    var output = encodeURIComponent(string);
    output = output.replace(/[^A-Za-z0-9_.~\-%]+/g, escape);

    // AWS percent-encodes some extra non-standard characters in a URI
    output = output.replace(/[*]/g, function(ch) {
      return '%' + ch.charCodeAt(0).toString(16).toUpperCase();
    });

    return output;
  },

  uriEscapePath: function uriEscapePath(string) {
    var parts = [];
    util.arrayEach(string.split('/'), function (part) {
      parts.push(util.uriEscape(part));
    });
    return parts.join('/');
  },

  urlParse: function urlParse(url) {
    return util.url.parse(url);
  },

  urlFormat: function urlFormat(url) {
    return util.url.format(url);
  },

  queryStringParse: function queryStringParse(qs) {
    return util.querystring.parse(qs);
  },

  queryParamsToString: function queryParamsToString(params) {
    var items = [];
    var escape = util.uriEscape;
    var sortedKeys = Object.keys(params).sort();

    util.arrayEach(sortedKeys, function(name) {
      var value = params[name];
      var ename = escape(name);
      var result = ename + '=';
      if (Array.isArray(value)) {
        var vals = [];
        util.arrayEach(value, function(item) { vals.push(escape(item)); });
        result = ename + '=' + vals.sort().join('&' + ename + '=');
      } else if (value !== undefined && value !== null) {
        result = ename + '=' + escape(value);
      }
      items.push(result);
    });

    return items.join('&');
  },

  readFileSync: function readFileSync(path) {
    if (util.isBrowser()) return null;
    return require('fs').readFileSync(path, 'utf-8');
  },

  base64: {
    encode: function encode64(string) {
      if (typeof string === 'number') {
        throw util.error(new Error('Cannot base64 encode number ' + string));
      }
      if (string === null || typeof string === 'undefined') {
        return string;
      }
      var buf = (typeof util.Buffer.from === 'function' && util.Buffer.from !== Uint8Array.from) ? util.Buffer.from(string) : new util.Buffer(string);
      return buf.toString('base64');
    },

    decode: function decode64(string) {
      if (typeof string === 'number') {
        throw util.error(new Error('Cannot base64 decode number ' + string));
      }
      if (string === null || typeof string === 'undefined') {
        return string;
      }
      return (typeof util.Buffer.from === 'function' && util.Buffer.from !== Uint8Array.from) ? util.Buffer.from(string, 'base64') : new util.Buffer(string, 'base64');
    }

  },

  buffer: {
    toStream: function toStream(buffer) {
      if (!util.Buffer.isBuffer(buffer)) buffer = new util.Buffer(buffer);

      var readable = new (util.stream.Readable)();
      var pos = 0;
      readable._read = function(size) {
        if (pos >= buffer.length) return readable.push(null);

        var end = pos + size;
        if (end > buffer.length) end = buffer.length;
        readable.push(buffer.slice(pos, end));
        pos = end;
      };

      return readable;
    },

    /**
     * Concatenates a list of Buffer objects.
     */
    concat: function(buffers) {
      var length = 0,
          offset = 0,
          buffer = null, i;

      for (i = 0; i < buffers.length; i++) {
        length += buffers[i].length;
      }

      buffer = new util.Buffer(length);

      for (i = 0; i < buffers.length; i++) {
        buffers[i].copy(buffer, offset);
        offset += buffers[i].length;
      }

      return buffer;
    }
  },

  string: {
    byteLength: function byteLength(string) {
      if (string === null || string === undefined) return 0;
      if (typeof string === 'string') string = new util.Buffer(string);

      if (typeof string.byteLength === 'number') {
        return string.byteLength;
      } else if (typeof string.length === 'number') {
        return string.length;
      } else if (typeof string.size === 'number') {
        return string.size;
      } else if (typeof string.path === 'string') {
        return require('fs').lstatSync(string.path).size;
      } else {
        throw util.error(new Error('Cannot determine length of ' + string),
          { object: string });
      }
    },

    upperFirst: function upperFirst(string) {
      return string[0].toUpperCase() + string.substr(1);
    },

    lowerFirst: function lowerFirst(string) {
      return string[0].toLowerCase() + string.substr(1);
    }
  },

  ini: {
    parse: function string(ini) {
      var currentSection, map = {};
      util.arrayEach(ini.split(/\r?\n/), function(line) {
        line = line.split(/(^|\s)[;#]/)[0]; // remove comments
        var section = line.match(/^\s*\[([^\[\]]+)\]\s*$/);
        if (section) {
          currentSection = section[1];
        } else if (currentSection) {
          var item = line.match(/^\s*(.+?)\s*=\s*(.+?)\s*$/);
          if (item) {
            map[currentSection] = map[currentSection] || {};
            map[currentSection][item[1]] = item[2];
          }
        }
      });

      return map;
    }
  },

  fn: {
    noop: function() {},

    /**
     * Turn a synchronous function into as "async" function by making it call
     * a callback. The underlying function is called with all but the last argument,
     * which is treated as the callback. The callback is passed passed a first argument
     * of null on success to mimick standard node callbacks.
     */
    makeAsync: function makeAsync(fn, expectedArgs) {
      if (expectedArgs && expectedArgs <= fn.length) {
        return fn;
      }

      return function() {
        var args = Array.prototype.slice.call(arguments, 0);
        var callback = args.pop();
        var result = fn.apply(null, args);
        callback(result);
      };
    }
  },

  /**
   * Date and time utility functions.
   */
  date: {

    /**
     * @return [Date] the current JavaScript date object. Since all
     *   AWS services rely on this date object, you can override
     *   this function to provide a special time value to AWS service
     *   requests.
     */
    getDate: function getDate() {
      if (!AWS) AWS = require('./core');
      if (AWS.config.systemClockOffset) { // use offset when non-zero
        return new Date(new Date().getTime() + AWS.config.systemClockOffset);
      } else {
        return new Date();
      }
    },

    /**
     * @return [String] the date in ISO-8601 format
     */
    iso8601: function iso8601(date) {
      if (date === undefined) { date = util.date.getDate(); }
      return date.toISOString().replace(/\.\d{3}Z$/, 'Z');
    },

    /**
     * @return [String] the date in RFC 822 format
     */
    rfc822: function rfc822(date) {
      if (date === undefined) { date = util.date.getDate(); }
      return date.toUTCString();
    },

    /**
     * @return [Integer] the UNIX timestamp value for the current time
     */
    unixTimestamp: function unixTimestamp(date) {
      if (date === undefined) { date = util.date.getDate(); }
      return date.getTime() / 1000;
    },

    /**
     * @param [String,number,Date] date
     * @return [Date]
     */
    from: function format(date) {
      if (typeof date === 'number') {
        return new Date(date * 1000); // unix timestamp
      } else {
        return new Date(date);
      }
    },

    /**
     * Given a Date or date-like value, this function formats the
     * date into a string of the requested value.
     * @param [String,number,Date] date
     * @param [String] formatter Valid formats are:
     #   * 'iso8601'
     #   * 'rfc822'
     #   * 'unixTimestamp'
     * @return [String]
     */
    format: function format(date, formatter) {
      if (!formatter) formatter = 'iso8601';
      return util.date[formatter](util.date.from(date));
    },

    parseTimestamp: function parseTimestamp(value) {
      if (typeof value === 'number') { // unix timestamp (number)
        return new Date(value * 1000);
      } else if (value.match(/^\d+$/)) { // unix timestamp
        return new Date(value * 1000);
      } else if (value.match(/^\d{4}/)) { // iso8601
        return new Date(value);
      } else if (value.match(/^\w{3},/)) { // rfc822
        return new Date(value);
      } else {
        throw util.error(
          new Error('unhandled timestamp format: ' + value),
          {code: 'TimestampParserError'});
      }
    }

  },

  crypto: {
    crc32Table: [
     0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419,
     0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4,
     0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07,
     0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
     0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856,
     0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9,
     0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4,
     0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
     0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3,
     0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A,
     0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599,
     0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
     0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190,
     0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F,
     0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E,
     0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
     0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED,
     0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950,
     0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3,
     0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
     0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A,
     0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5,
     0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010,
     0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
     0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17,
     0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6,
     0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615,
     0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
     0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344,
     0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB,
     0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A,
     0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
     0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1,
     0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C,
     0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF,
     0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
     0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE,
     0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31,
     0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C,
     0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
     0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B,
     0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242,
     0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1,
     0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
     0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278,
     0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7,
     0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66,
     0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
     0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605,
     0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8,
     0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B,
     0x2D02EF8D],

    crc32: function crc32(data) {
      var tbl = util.crypto.crc32Table;
      var crc = 0 ^ -1;

      if (typeof data === 'string') {
        data = new util.Buffer(data);
      }

      for (var i = 0; i < data.length; i++) {
        var code = data.readUInt8(i);
        crc = (crc >>> 8) ^ tbl[(crc ^ code) & 0xFF];
      }
      return (crc ^ -1) >>> 0;
    },

    hmac: function hmac(key, string, digest, fn) {
      if (!digest) digest = 'binary';
      if (digest === 'buffer') { digest = undefined; }
      if (!fn) fn = 'sha256';
      if (typeof string === 'string') string = new util.Buffer(string);
      return util.crypto.lib.createHmac(fn, key).update(string).digest(digest);
    },

    md5: function md5(data, digest, callback) {
      return util.crypto.hash('md5', data, digest, callback);
    },

    sha256: function sha256(data, digest, callback) {
      return util.crypto.hash('sha256', data, digest, callback);
    },

    hash: function(algorithm, data, digest, callback) {
      var hash = util.crypto.createHash(algorithm);
      if (!digest) { digest = 'binary'; }
      if (digest === 'buffer') { digest = undefined; }
      if (typeof data === 'string') data = new util.Buffer(data);
      var sliceFn = util.arraySliceFn(data);
      var isBuffer = util.Buffer.isBuffer(data);
      //Identifying objects with an ArrayBuffer as buffers
      if (util.isBrowser() && typeof ArrayBuffer !== 'undefined' && data && data.buffer instanceof ArrayBuffer) isBuffer = true;

      if (callback && typeof data === 'object' &&
          typeof data.on === 'function' && !isBuffer) {
        data.on('data', function(chunk) { hash.update(chunk); });
        data.on('error', function(err) { callback(err); });
        data.on('end', function() { callback(null, hash.digest(digest)); });
      } else if (callback && sliceFn && !isBuffer &&
                 typeof FileReader !== 'undefined') {
        // this might be a File/Blob
        var index = 0, size = 1024 * 512;
        var reader = new FileReader();
        reader.onerror = function() {
          callback(new Error('Failed to read data.'));
        };
        reader.onload = function() {
          var buf = new util.Buffer(new Uint8Array(reader.result));
          hash.update(buf);
          index += buf.length;
          reader._continueReading();
        };
        reader._continueReading = function() {
          if (index >= data.size) {
            callback(null, hash.digest(digest));
            return;
          }

          var back = index + size;
          if (back > data.size) back = data.size;
          reader.readAsArrayBuffer(sliceFn.call(data, index, back));
        };

        reader._continueReading();
      } else {
        if (util.isBrowser() && typeof data === 'object' && !isBuffer) {
          data = new util.Buffer(new Uint8Array(data));
        }
        var out = hash.update(data).digest(digest);
        if (callback) callback(null, out);
        return out;
      }
    },

    toHex: function toHex(data) {
      var out = [];
      for (var i = 0; i < data.length; i++) {
        out.push(('0' + data.charCodeAt(i).toString(16)).substr(-2, 2));
      }
      return out.join('');
    },

    createHash: function createHash(algorithm) {
      return util.crypto.lib.createHash(algorithm);
    }

  },

  /** @!ignore */

  /* Abort constant */
  abort: {},

  each: function each(object, iterFunction) {
    for (var key in object) {
      if (Object.prototype.hasOwnProperty.call(object, key)) {
        var ret = iterFunction.call(this, key, object[key]);
        if (ret === util.abort) break;
      }
    }
  },

  arrayEach: function arrayEach(array, iterFunction) {
    for (var idx in array) {
      if (Object.prototype.hasOwnProperty.call(array, idx)) {
        var ret = iterFunction.call(this, array[idx], parseInt(idx, 10));
        if (ret === util.abort) break;
      }
    }
  },

  update: function update(obj1, obj2) {
    util.each(obj2, function iterator(key, item) {
      obj1[key] = item;
    });
    return obj1;
  },

  merge: function merge(obj1, obj2) {
    return util.update(util.copy(obj1), obj2);
  },

  copy: function copy(object) {
    if (object === null || object === undefined) return object;
    var dupe = {};
    // jshint forin:false
    for (var key in object) {
      dupe[key] = object[key];
    }
    return dupe;
  },

  isEmpty: function isEmpty(obj) {
    for (var prop in obj) {
      if (Object.prototype.hasOwnProperty.call(obj, prop)) {
        return false;
      }
    }
    return true;
  },

  arraySliceFn: function arraySliceFn(obj) {
    var fn = obj.slice || obj.webkitSlice || obj.mozSlice;
    return typeof fn === 'function' ? fn : null;
  },

  isType: function isType(obj, type) {
    // handle cross-"frame" objects
    if (typeof type === 'function') type = util.typeName(type);
    return Object.prototype.toString.call(obj) === '[object ' + type + ']';
  },

  typeName: function typeName(type) {
    if (Object.prototype.hasOwnProperty.call(type, 'name')) return type.name;
    var str = type.toString();
    var match = str.match(/^\s*function (.+)\(/);
    return match ? match[1] : str;
  },

  error: function error(err, options) {
    var originalError = null;
    if (typeof err.message === 'string' && err.message !== '') {
      if (typeof options === 'string' || (options && options.message)) {
        originalError = util.copy(err);
        originalError.message = err.message;
      }
    }
    err.message = err.message || null;

    if (typeof options === 'string') {
      err.message = options;
    } else if (typeof options === 'object' && options !== null) {
      util.update(err, options);
      if (options.message)
        err.message = options.message;
      if (options.code || options.name)
        err.code = options.code || options.name;
      if (options.stack)
        err.stack = options.stack;
    }

    if (typeof Object.defineProperty === 'function') {
      Object.defineProperty(err, 'name', {writable: true, enumerable: false});
      Object.defineProperty(err, 'message', {enumerable: true});
    }

    err.name = options && options.name || err.name || err.code || 'Error';
    err.time = new Date();

    if (originalError) err.originalError = originalError;

    return err;
  },

  /**
   * @api private
   */
  inherit: function inherit(klass, features) {
    var newObject = null;
    if (features === undefined) {
      features = klass;
      klass = Object;
      newObject = {};
    } else {
      var ctor = function ConstructorWrapper() {};
      ctor.prototype = klass.prototype;
      newObject = new ctor();
    }

    // constructor not supplied, create pass-through ctor
    if (features.constructor === Object) {
      features.constructor = function() {
        if (klass !== Object) {
          return klass.apply(this, arguments);
        }
      };
    }

    features.constructor.prototype = newObject;
    util.update(features.constructor.prototype, features);
    features.constructor.__super__ = klass;
    return features.constructor;
  },

  /**
   * @api private
   */
  mixin: function mixin() {
    var klass = arguments[0];
    for (var i = 1; i < arguments.length; i++) {
      // jshint forin:false
      for (var prop in arguments[i].prototype) {
        var fn = arguments[i].prototype[prop];
        if (prop !== 'constructor') {
          klass.prototype[prop] = fn;
        }
      }
    }
    return klass;
  },

  /**
   * @api private
   */
  hideProperties: function hideProperties(obj, props) {
    if (typeof Object.defineProperty !== 'function') return;

    util.arrayEach(props, function (key) {
      Object.defineProperty(obj, key, {
        enumerable: false, writable: true, configurable: true });
    });
  },

  /**
   * @api private
   */
  property: function property(obj, name, value, enumerable, isValue) {
    var opts = {
      configurable: true,
      enumerable: enumerable !== undefined ? enumerable : true
    };
    if (typeof value === 'function' && !isValue) {
      opts.get = value;
    }
    else {
      opts.value = value; opts.writable = true;
    }

    Object.defineProperty(obj, name, opts);
  },

  /**
   * @api private
   */
  memoizedProperty: function memoizedProperty(obj, name, get, enumerable) {
    var cachedValue = null;

    // build enumerable attribute for each value with lazy accessor.
    util.property(obj, name, function() {
      if (cachedValue === null) {
        cachedValue = get();
      }
      return cachedValue;
    }, enumerable);
  },

  /**
   * TODO Remove in major version revision
   * This backfill populates response data without the
   * top-level payload name.
   *
   * @api private
   */
  hoistPayloadMember: function hoistPayloadMember(resp) {
    var req = resp.request;
    var operation = req.operation;
    var output = req.service.api.operations[operation].output;
    if (output.payload) {
      var payloadMember = output.members[output.payload];
      var responsePayload = resp.data[output.payload];
      if (payloadMember.type === 'structure') {
        util.each(responsePayload, function(key, value) {
          util.property(resp.data, key, value, false);
        });
      }
    }
  },

  /**
   * Compute SHA-256 checksums of streams
   *
   * @api private
   */
  computeSha256: function computeSha256(body, done) {
    if (util.isNode()) {
      var Stream = util.stream.Stream;
      var fs = require('fs');
      if (body instanceof Stream) {
        if (typeof body.path === 'string') { // assume file object
          var settings = {};
          if (typeof body.start === 'number') {
            settings.start = body.start;
          }
          if (typeof body.end === 'number') {
            settings.end = body.end;
          }
          body = fs.createReadStream(body.path, settings);
        } else { // TODO support other stream types
          return done(new Error('Non-file stream objects are ' +
                                'not supported with SigV4'));
        }
      }
    }

    util.crypto.sha256(body, 'hex', function(err, sha) {
      if (err) done(err);
      else done(null, sha);
    });
  },

  /**
   * @api private
   */
  isClockSkewed: function isClockSkewed(serverTime) {
    if (serverTime) {
      util.property(AWS.config, 'isClockSkewed',
        Math.abs(new Date().getTime() - serverTime) >= 300000, false);
      return AWS.config.isClockSkewed;
    }
  },

  applyClockOffset: function applyClockOffset(serverTime) {
    if (serverTime)
      AWS.config.systemClockOffset = serverTime - new Date().getTime();
  },

  /**
   * @api private
   */
  extractRequestId: function extractRequestId(resp) {
    var requestId = resp.httpResponse.headers['x-amz-request-id'] ||
                     resp.httpResponse.headers['x-amzn-requestid'];

    if (!requestId && resp.data && resp.data.ResponseMetadata) {
      requestId = resp.data.ResponseMetadata.RequestId;
    }

    if (requestId) {
      resp.requestId = requestId;
    }

    if (resp.error) {
      resp.error.requestId = requestId;
    }
  },

  /**
   * @api private
   */
  addPromises: function addPromises(constructors, PromiseDependency) {
    if (PromiseDependency === undefined && AWS && AWS.config) {
      PromiseDependency = AWS.config.getPromisesDependency();
    }
    if (PromiseDependency === undefined && typeof Promise !== 'undefined') {
      PromiseDependency = Promise;
    }
    if (typeof PromiseDependency !== 'function') var deletePromises = true;
    if (!Array.isArray(constructors)) constructors = [constructors];

    for (var ind = 0; ind < constructors.length; ind++) {
      var constructor = constructors[ind];
      if (deletePromises) {
        if (constructor.deletePromisesFromClass) {
          constructor.deletePromisesFromClass();
        }
      } else if (constructor.addPromisesToClass) {
        constructor.addPromisesToClass(PromiseDependency);
      }
    }
  },

  /**
   * @api private
   */
  promisifyMethod: function promisifyMethod(methodName, PromiseDependency) {
    return function promise() {
      var self = this;
      return new PromiseDependency(function(resolve, reject) {
        self[methodName](function(err, data) {
          if (err) {
            reject(err);
          } else {
            resolve(data);
          }
        });
      });
    };
  },

  /**
   * @api private
   */
  isDualstackAvailable: function isDualstackAvailable(service) {
    if (!service) return false;
    var metadata = require('../apis/metadata.json');
    if (typeof service !== 'string') service = service.serviceIdentifier;
    if (typeof service !== 'string' || !metadata.hasOwnProperty(service)) return false;
    return !!metadata[service].dualstackAvailable;
  },

  /**
   * @api private
   */
  calculateRetryDelay: function calculateRetryDelay(retryCount, retryDelayOptions) {
    if (!retryDelayOptions) retryDelayOptions = {};
    var customBackoff = retryDelayOptions.customBackoff || null;
    if (typeof customBackoff === 'function') {
      return customBackoff(retryCount);
    }
    var base = typeof retryDelayOptions.base === 'number' ? retryDelayOptions.base : 100;
    var delay = Math.random() * (Math.pow(2, retryCount) * base);
    return delay;
  },

  /**
   * @api private
   */
  handleRequestWithRetries: function handleRequestWithRetries(httpRequest, options, cb) {
    if (!options) options = {};
    var http = AWS.HttpClient.getInstance();
    var httpOptions = options.httpOptions || {};
    var retryCount = 0;

    var errCallback = function(err) {
      var maxRetries = options.maxRetries || 0;
      if (err && err.code === 'TimeoutError') err.retryable = true;
      if (err && err.retryable && retryCount < maxRetries) {
        retryCount++;
        var delay = util.calculateRetryDelay(retryCount, options.retryDelayOptions);
        setTimeout(sendRequest, delay + (err.retryAfter || 0));
      } else {
        cb(err);
      }
    };

    var sendRequest = function() {
      var data = '';
      http.handleRequest(httpRequest, httpOptions, function(httpResponse) {
        httpResponse.on('data', function(chunk) { data += chunk.toString(); });
        httpResponse.on('end', function() {
          var statusCode = httpResponse.statusCode;
          if (statusCode < 300) {
            cb(null, data);
          } else {
            var retryAfter = parseInt(httpResponse.headers['retry-after'], 10) * 1000 || 0;
            var err = util.error(new Error(),
              { retryable: statusCode >= 500 || statusCode === 429 }
            );
            if (retryAfter && err.retryable) err.retryAfter = retryAfter;
            errCallback(err);
          }
        });
      }, errCallback);
    };

    AWS.util.defer(sendRequest);
  },

  /**
   * @api private
   */
  uuid: {
    v4: function uuidV4() {
      return require('uuid').v4();
    }
  },

  /**
   * @api private
   */
  convertPayloadToString: function convertPayloadToString(resp) {
    var req = resp.request;
    var operation = req.operation;
    var rules = req.service.api.operations[operation].output || {};
    if (rules.payload && resp.data[rules.payload]) {
      resp.data[rules.payload] = resp.data[rules.payload].toString();
    }
  },

  /**
   * @api private
   */
  defer: function defer(callback) {
    if (typeof process === 'object' && typeof process.nextTick === 'function') {
      process.nextTick(callback);
    } else if (typeof setImmediate === 'function') {
      setImmediate(callback);
    } else {
      setTimeout(callback, 0);
    }
  },

  /**
   * @api private
   */
  defaultProfile: 'default',

  /**
   * @api private
   */
  configOptInEnv: 'AWS_SDK_LOAD_CONFIG',

  /**
   * @api private
   */
  sharedCredentialsFileEnv: 'AWS_SHARED_CREDENTIALS_FILE',

  /**
   * @api private
   */
  sharedConfigFileEnv: 'AWS_CONFIG_FILE'
};

module.exports = util;

}).call(this,require('_process'))
},{"../apis/metadata.json":107,"./core":239,"_process":453,"fs":307,"uuid":465}],304:[function(require,module,exports){
var util = require('../util');
var Shape = require('../model/shape');

function DomXmlParser() { }

DomXmlParser.prototype.parse = function(xml, shape) {
  if (xml.replace(/^\s+/, '') === '') return {};

  var result, error;
  try {
    if (window.DOMParser) {
      try {
        var parser = new DOMParser();
        result = parser.parseFromString(xml, 'text/xml');
      } catch (syntaxError) {
        throw util.error(new Error('Parse error in document'),
          {
            originalError: syntaxError,
            code: 'XMLParserError',
            retryable: true
          });
      }

      if (result.documentElement === null) {
        throw util.error(new Error('Cannot parse empty document.'),
          {
            code: 'XMLParserError',
            retryable: true
          });
      }

      var isError = result.getElementsByTagName('parsererror')[0];
      if (isError && (isError.parentNode === result ||
          isError.parentNode.nodeName === 'body' ||
          isError.parentNode.parentNode === result ||
          isError.parentNode.parentNode.nodeName === 'body')) {
        var errorElement = isError.getElementsByTagName('div')[0] || isError;
        throw util.error(new Error(errorElement.textContent || 'Parser error in document'),
          {
            code: 'XMLParserError',
            retryable: true
          });
      }
    } else if (window.ActiveXObject) {
      result = new window.ActiveXObject('Microsoft.XMLDOM');
      result.async = false;

      if (!result.loadXML(xml)) {
        throw util.error(new Error('Parse error in document'),
          {
            code: 'XMLParserError',
            retryable: true
          });
      }
    } else {
      throw new Error('Cannot load XML parser');
    }
  } catch (e) {
    error = e;
  }

  if (result && result.documentElement && !error) {
    var data = parseXml(result.documentElement, shape);
    var metadata = result.getElementsByTagName('ResponseMetadata')[0];
    if (metadata) {
      data.ResponseMetadata = parseXml(metadata, {});
    }
    return data;
  } else if (error) {
    throw util.error(error || new Error(), {code: 'XMLParserError', retryable: true});
  } else { // empty xml document
    return {};
  }
};

function parseXml(xml, shape) {
  if (!shape) shape = {};
  switch (shape.type) {
    case 'structure': return parseStructure(xml, shape);
    case 'map': return parseMap(xml, shape);
    case 'list': return parseList(xml, shape);
    case undefined: case null: return parseUnknown(xml);
    default: return parseScalar(xml, shape);
  }
}

function parseStructure(xml, shape) {
  var data = {};
  if (xml === null) return data;

  util.each(shape.members, function(memberName, memberShape) {
    if (memberShape.isXmlAttribute) {
      if (Object.prototype.hasOwnProperty.call(xml.attributes, memberShape.name)) {
        var value = xml.attributes[memberShape.name].value;
        data[memberName] = parseXml({textContent: value}, memberShape);
      }
    } else {
      var xmlChild = memberShape.flattened ? xml :
        xml.getElementsByTagName(memberShape.name)[0];
      if (xmlChild) {
        data[memberName] = parseXml(xmlChild, memberShape);
      } else if (!memberShape.flattened && memberShape.type === 'list') {
        data[memberName] = memberShape.defaultValue;
      }
    }
  });

  return data;
}

function parseMap(xml, shape) {
  var data = {};
  var xmlKey = shape.key.name || 'key';
  var xmlValue = shape.value.name || 'value';
  var tagName = shape.flattened ? shape.name : 'entry';

  var child = xml.firstElementChild;
  while (child) {
    if (child.nodeName === tagName) {
      var key = child.getElementsByTagName(xmlKey)[0].textContent;
      var value = child.getElementsByTagName(xmlValue)[0];
      data[key] = parseXml(value, shape.value);
    }
    child = child.nextElementSibling;
  }
  return data;
}

function parseList(xml, shape) {
  var data = [];
  var tagName = shape.flattened ? shape.name : (shape.member.name || 'member');

  var child = xml.firstElementChild;
  while (child) {
    if (child.nodeName === tagName) {
      data.push(parseXml(child, shape.member));
    }
    child = child.nextElementSibling;
  }
  return data;
}

function parseScalar(xml, shape) {
  if (xml.getAttribute) {
    var encoding = xml.getAttribute('encoding');
    if (encoding === 'base64') {
      shape = new Shape.create({type: encoding});
    }
  }

  var text = xml.textContent;
  if (text === '') text = null;
  if (typeof shape.toType === 'function') {
    return shape.toType(text);
  } else {
    return text;
  }
}

function parseUnknown(xml) {
  if (xml === undefined || xml === null) return '';

  // empty object
  if (!xml.firstElementChild) {
    if (xml.parentNode.parentNode === null) return {};
    if (xml.childNodes.length === 0) return '';
    else return xml.textContent;
  }

  // object, parse as structure
  var shape = {type: 'structure', members: {}};
  var child = xml.firstElementChild;
  while (child) {
    var tag = child.nodeName;
    if (Object.prototype.hasOwnProperty.call(shape.members, tag)) {
      // multiple tags of the same name makes it a list
      shape.members[tag].type = 'list';
    } else {
      shape.members[tag] = {name: tag};
    }
    child = child.nextElementSibling;
  }
  return parseStructure(xml, shape);
}

module.exports = DomXmlParser;

},{"../model/shape":262,"../util":303}],305:[function(require,module,exports){
var util = require('../util');
var builder = require('xmlbuilder');

function XmlBuilder() { }

XmlBuilder.prototype.toXML = function(params, shape, rootElement, noEmpty) {
  var xml = builder.create(rootElement);
  applyNamespaces(xml, shape);
  serialize(xml, params, shape);
  return xml.children.length > 0 || noEmpty ? xml.root().toString() : '';
};

function serialize(xml, value, shape) {
  switch (shape.type) {
    case 'structure': return serializeStructure(xml, value, shape);
    case 'map': return serializeMap(xml, value, shape);
    case 'list': return serializeList(xml, value, shape);
    default: return serializeScalar(xml, value, shape);
  }
}

function serializeStructure(xml, params, shape) {
  util.arrayEach(shape.memberNames, function(memberName) {
    var memberShape = shape.members[memberName];
    if (memberShape.location !== 'body') return;

    var value = params[memberName];
    var name = memberShape.name;
    if (value !== undefined && value !== null) {
      if (memberShape.isXmlAttribute) {
        xml.att(name, value);
      } else if (memberShape.flattened) {
        serialize(xml, value, memberShape);
      } else {
        var element = xml.ele(name);
        applyNamespaces(element, memberShape);
        serialize(element, value, memberShape);
      }
    }
  });
}

function serializeMap(xml, map, shape) {
  var xmlKey = shape.key.name || 'key';
  var xmlValue = shape.value.name || 'value';

  util.each(map, function(key, value) {
    var entry = xml.ele(shape.flattened ? shape.name : 'entry');
    serialize(entry.ele(xmlKey), key, shape.key);
    serialize(entry.ele(xmlValue), value, shape.value);
  });
}

function serializeList(xml, list, shape) {
  if (shape.flattened) {
    util.arrayEach(list, function(value) {
      var name = shape.member.name || shape.name;
      var element = xml.ele(name);
      serialize(element, value, shape.member);
    });
  } else {
    util.arrayEach(list, function(value) {
      var name = shape.member.name || 'member';
      var element = xml.ele(name);
      serialize(element, value, shape.member);
    });
  }
}

function serializeScalar(xml, value, shape) {
  xml.txt(shape.toWireFormat(value));
}

function applyNamespaces(xml, shape) {
  var uri, prefix = 'xmlns';
  if (shape.xmlNamespaceUri) {
    uri = shape.xmlNamespaceUri;
    if (shape.xmlNamespacePrefix) prefix += ':' + shape.xmlNamespacePrefix;
  } else if (xml.isRoot && shape.api.xmlNamespaceUri) {
    uri = shape.api.xmlNamespaceUri;
  }

  if (uri) xml.att(prefix, uri);
}

module.exports = XmlBuilder;

},{"../util":303,"xmlbuilder":486}],306:[function(require,module,exports){
'use strict'

exports.byteLength = byteLength
exports.toByteArray = toByteArray
exports.fromByteArray = fromByteArray

var lookup = []
var revLookup = []
var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array

var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
for (var i = 0, len = code.length; i < len; ++i) {
  lookup[i] = code[i]
  revLookup[code.charCodeAt(i)] = i
}

revLookup['-'.charCodeAt(0)] = 62
revLookup['_'.charCodeAt(0)] = 63

function placeHoldersCount (b64) {
  var len = b64.length
  if (len % 4 > 0) {
    throw new Error('Invalid string. Length must be a multiple of 4')
  }

  // the number of equal signs (place holders)
  // if there are two placeholders, than the two characters before it
  // represent one byte
  // if there is only one, then the three characters before it represent 2 bytes
  // this is just a cheap hack to not do indexOf twice
  return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
}

function byteLength (b64) {
  // base64 is 4/3 + up to two characters of the original data
  return (b64.length * 3 / 4) - placeHoldersCount(b64)
}

function toByteArray (b64) {
  var i, l, tmp, placeHolders, arr
  var len = b64.length
  placeHolders = placeHoldersCount(b64)

  arr = new Arr((len * 3 / 4) - placeHolders)

  // if there are placeholders, only get up to the last complete 4 chars
  l = placeHolders > 0 ? len - 4 : len

  var L = 0

  for (i = 0; i < l; i += 4) {
    tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
    arr[L++] = (tmp >> 16) & 0xFF
    arr[L++] = (tmp >> 8) & 0xFF
    arr[L++] = tmp & 0xFF
  }

  if (placeHolders === 2) {
    tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
    arr[L++] = tmp & 0xFF
  } else if (placeHolders === 1) {
    tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
    arr[L++] = (tmp >> 8) & 0xFF
    arr[L++] = tmp & 0xFF
  }

  return arr
}

function tripletToBase64 (num) {
  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
}

function encodeChunk (uint8, start, end) {
  var tmp
  var output = []
  for (var i = start; i < end; i += 3) {
    tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
    output.push(tripletToBase64(tmp))
  }
  return output.join('')
}

function fromByteArray (uint8) {
  var tmp
  var len = uint8.length
  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
  var output = ''
  var parts = []
  var maxChunkLength = 16383 // must be multiple of 3

  // go through the array every three bytes, we'll deal with trailing stuff later
  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
  }

  // pad the end with zeros, but make sure to not forget the extra bytes
  if (extraBytes === 1) {
    tmp = uint8[len - 1]
    output += lookup[tmp >> 2]
    output += lookup[(tmp << 4) & 0x3F]
    output += '=='
  } else if (extraBytes === 2) {
    tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
    output += lookup[tmp >> 10]
    output += lookup[(tmp >> 4) & 0x3F]
    output += lookup[(tmp << 2) & 0x3F]
    output += '='
  }

  parts.push(output)

  return parts.join('')
}

},{}],307:[function(require,module,exports){

},{}],308:[function(require,module,exports){
(function (global){
/*!
 * The buffer module from node.js, for the browser.
 *
 * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
 * @license  MIT
 */
/* eslint-disable no-proto */

'use strict'

var base64 = require('base64-js')
var ieee754 = require('ieee754')
var isArray = require('isarray')

exports.Buffer = Buffer
exports.SlowBuffer = SlowBuffer
exports.INSPECT_MAX_BYTES = 50

/**
 * If `Buffer.TYPED_ARRAY_SUPPORT`:
 *   === true    Use Uint8Array implementation (fastest)
 *   === false   Use Object implementation (most compatible, even IE6)
 *
 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
 * Opera 11.6+, iOS 4.2+.
 *
 * Due to various browser bugs, sometimes the Object implementation will be used even
 * when the browser supports typed arrays.
 *
 * Note:
 *
 *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
 *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
 *
 *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
 *
 *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
 *     incorrect length in some situations.

 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
 * get the Object implementation, which is slower but behaves correctly.
 */
Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
  ? global.TYPED_ARRAY_SUPPORT
  : typedArraySupport()

/*
 * Export kMaxLength after typed array support is determined.
 */
exports.kMaxLength = kMaxLength()

function typedArraySupport () {
  try {
    var arr = new Uint8Array(1)
    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
    return arr.foo() === 42 && // typed array instances can be augmented
        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
  } catch (e) {
    return false
  }
}

function kMaxLength () {
  return Buffer.TYPED_ARRAY_SUPPORT
    ? 0x7fffffff
    : 0x3fffffff
}

function createBuffer (that, length) {
  if (kMaxLength() < length) {
    throw new RangeError('Invalid typed array length')
  }
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    // Return an augmented `Uint8Array` instance, for best performance
    that = new Uint8Array(length)
    that.__proto__ = Buffer.prototype
  } else {
    // Fallback: Return an object instance of the Buffer class
    if (that === null) {
      that = new Buffer(length)
    }
    that.length = length
  }

  return that
}

/**
 * The Buffer constructor returns instances of `Uint8Array` that have their
 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
 * returns a single octet.
 *
 * The `Uint8Array` prototype remains unmodified.
 */

function Buffer (arg, encodingOrOffset, length) {
  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
    return new Buffer(arg, encodingOrOffset, length)
  }

  // Common case.
  if (typeof arg === 'number') {
    if (typeof encodingOrOffset === 'string') {
      throw new Error(
        'If encoding is specified then the first argument must be a string'
      )
    }
    return allocUnsafe(this, arg)
  }
  return from(this, arg, encodingOrOffset, length)
}

Buffer.poolSize = 8192 // not used by this implementation

// TODO: Legacy, not needed anymore. Remove in next major version.
Buffer._augment = function (arr) {
  arr.__proto__ = Buffer.prototype
  return arr
}

function from (that, value, encodingOrOffset, length) {
  if (typeof value === 'number') {
    throw new TypeError('"value" argument must not be a number')
  }

  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
    return fromArrayBuffer(that, value, encodingOrOffset, length)
  }

  if (typeof value === 'string') {
    return fromString(that, value, encodingOrOffset)
  }

  return fromObject(that, value)
}

/**
 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
 * if value is a number.
 * Buffer.from(str[, encoding])
 * Buffer.from(array)
 * Buffer.from(buffer)
 * Buffer.from(arrayBuffer[, byteOffset[, length]])
 **/
Buffer.from = function (value, encodingOrOffset, length) {
  return from(null, value, encodingOrOffset, length)
}

if (Buffer.TYPED_ARRAY_SUPPORT) {
  Buffer.prototype.__proto__ = Uint8Array.prototype
  Buffer.__proto__ = Uint8Array
  if (typeof Symbol !== 'undefined' && Symbol.species &&
      Buffer[Symbol.species] === Buffer) {
    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
    Object.defineProperty(Buffer, Symbol.species, {
      value: null,
      configurable: true
    })
  }
}

function assertSize (size) {
  if (typeof size !== 'number') {
    throw new TypeError('"size" argument must be a number')
  } else if (size < 0) {
    throw new RangeError('"size" argument must not be negative')
  }
}

function alloc (that, size, fill, encoding) {
  assertSize(size)
  if (size <= 0) {
    return createBuffer(that, size)
  }
  if (fill !== undefined) {
    // Only pay attention to encoding if it's a string. This
    // prevents accidentally sending in a number that would
    // be interpretted as a start offset.
    return typeof encoding === 'string'
      ? createBuffer(that, size).fill(fill, encoding)
      : createBuffer(that, size).fill(fill)
  }
  return createBuffer(that, size)
}

/**
 * Creates a new filled Buffer instance.
 * alloc(size[, fill[, encoding]])
 **/
Buffer.alloc = function (size, fill, encoding) {
  return alloc(null, size, fill, encoding)
}

function allocUnsafe (that, size) {
  assertSize(size)
  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)
  if (!Buffer.TYPED_ARRAY_SUPPORT) {
    for (var i = 0; i < size; ++i) {
      that[i] = 0
    }
  }
  return that
}

/**
 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
 * */
Buffer.allocUnsafe = function (size) {
  return allocUnsafe(null, size)
}
/**
 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
 */
Buffer.allocUnsafeSlow = function (size) {
  return allocUnsafe(null, size)
}

function fromString (that, string, encoding) {
  if (typeof encoding !== 'string' || encoding === '') {
    encoding = 'utf8'
  }

  if (!Buffer.isEncoding(encoding)) {
    throw new TypeError('"encoding" must be a valid string encoding')
  }

  var length = byteLength(string, encoding) | 0
  that = createBuffer(that, length)

  var actual = that.write(string, encoding)

  if (actual !== length) {
    // Writing a hex string, for example, that contains invalid characters will
    // cause everything after the first invalid character to be ignored. (e.g.
    // 'abxxcd' will be treated as 'ab')
    that = that.slice(0, actual)
  }

  return that
}

function fromArrayLike (that, array) {
  var length = array.length < 0 ? 0 : checked(array.length) | 0
  that = createBuffer(that, length)
  for (var i = 0; i < length; i += 1) {
    that[i] = array[i] & 255
  }
  return that
}

function fromArrayBuffer (that, array, byteOffset, length) {
  array.byteLength // this throws if `array` is not a valid ArrayBuffer

  if (byteOffset < 0 || array.byteLength < byteOffset) {
    throw new RangeError('\'offset\' is out of bounds')
  }

  if (array.byteLength < byteOffset + (length || 0)) {
    throw new RangeError('\'length\' is out of bounds')
  }

  if (byteOffset === undefined && length === undefined) {
    array = new Uint8Array(array)
  } else if (length === undefined) {
    array = new Uint8Array(array, byteOffset)
  } else {
    array = new Uint8Array(array, byteOffset, length)
  }

  if (Buffer.TYPED_ARRAY_SUPPORT) {
    // Return an augmented `Uint8Array` instance, for best performance
    that = array
    that.__proto__ = Buffer.prototype
  } else {
    // Fallback: Return an object instance of the Buffer class
    that = fromArrayLike(that, array)
  }
  return that
}

function fromObject (that, obj) {
  if (Buffer.isBuffer(obj)) {
    var len = checked(obj.length) | 0
    that = createBuffer(that, len)

    if (that.length === 0) {
      return that
    }

    obj.copy(that, 0, 0, len)
    return that
  }

  if (obj) {
    if ((typeof ArrayBuffer !== 'undefined' &&
        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
      if (typeof obj.length !== 'number' || isnan(obj.length)) {
        return createBuffer(that, 0)
      }
      return fromArrayLike(that, obj)
    }

    if (obj.type === 'Buffer' && isArray(obj.data)) {
      return fromArrayLike(that, obj.data)
    }
  }

  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
}

function checked (length) {
  // Note: cannot use `length < kMaxLength()` here because that fails when
  // length is NaN (which is otherwise coerced to zero.)
  if (length >= kMaxLength()) {
    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
                         'size: 0x' + kMaxLength().toString(16) + ' bytes')
  }
  return length | 0
}

function SlowBuffer (length) {
  if (+length != length) { // eslint-disable-line eqeqeq
    length = 0
  }
  return Buffer.alloc(+length)
}

Buffer.isBuffer = function isBuffer (b) {
  return !!(b != null && b._isBuffer)
}

Buffer.compare = function compare (a, b) {
  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
    throw new TypeError('Arguments must be Buffers')
  }

  if (a === b) return 0

  var x = a.length
  var y = b.length

  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
    if (a[i] !== b[i]) {
      x = a[i]
      y = b[i]
      break
    }
  }

  if (x < y) return -1
  if (y < x) return 1
  return 0
}

Buffer.isEncoding = function isEncoding (encoding) {
  switch (String(encoding).toLowerCase()) {
    case 'hex':
    case 'utf8':
    case 'utf-8':
    case 'ascii':
    case 'latin1':
    case 'binary':
    case 'base64':
    case 'ucs2':
    case 'ucs-2':
    case 'utf16le':
    case 'utf-16le':
      return true
    default:
      return false
  }
}

Buffer.concat = function concat (list, length) {
  if (!isArray(list)) {
    throw new TypeError('"list" argument must be an Array of Buffers')
  }

  if (list.length === 0) {
    return Buffer.alloc(0)
  }

  var i
  if (length === undefined) {
    length = 0
    for (i = 0; i < list.length; ++i) {
      length += list[i].length
    }
  }

  var buffer = Buffer.allocUnsafe(length)
  var pos = 0
  for (i = 0; i < list.length; ++i) {
    var buf = list[i]
    if (!Buffer.isBuffer(buf)) {
      throw new TypeError('"list" argument must be an Array of Buffers')
    }
    buf.copy(buffer, pos)
    pos += buf.length
  }
  return buffer
}

function byteLength (string, encoding) {
  if (Buffer.isBuffer(string)) {
    return string.length
  }
  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
    return string.byteLength
  }
  if (typeof string !== 'string') {
    string = '' + string
  }

  var len = string.length
  if (len === 0) return 0

  // Use a for loop to avoid recursion
  var loweredCase = false
  for (;;) {
    switch (encoding) {
      case 'ascii':
      case 'latin1':
      case 'binary':
        return len
      case 'utf8':
      case 'utf-8':
      case undefined:
        return utf8ToBytes(string).length
      case 'ucs2':
      case 'ucs-2':
      case 'utf16le':
      case 'utf-16le':
        return len * 2
      case 'hex':
        return len >>> 1
      case 'base64':
        return base64ToBytes(string).length
      default:
        if (loweredCase) return utf8ToBytes(string).length // assume utf8
        encoding = ('' + encoding).toLowerCase()
        loweredCase = true
    }
  }
}
Buffer.byteLength = byteLength

function slowToString (encoding, start, end) {
  var loweredCase = false

  // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
  // property of a typed array.

  // This behaves neither like String nor Uint8Array in that we set start/end
  // to their upper/lower bounds if the value passed is out of range.
  // undefined is handled specially as per ECMA-262 6th Edition,
  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
  if (start === undefined || start < 0) {
    start = 0
  }
  // Return early if start > this.length. Done here to prevent potential uint32
  // coercion fail below.
  if (start > this.length) {
    return ''
  }

  if (end === undefined || end > this.length) {
    end = this.length
  }

  if (end <= 0) {
    return ''
  }

  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
  end >>>= 0
  start >>>= 0

  if (end <= start) {
    return ''
  }

  if (!encoding) encoding = 'utf8'

  while (true) {
    switch (encoding) {
      case 'hex':
        return hexSlice(this, start, end)

      case 'utf8':
      case 'utf-8':
        return utf8Slice(this, start, end)

      case 'ascii':
        return asciiSlice(this, start, end)

      case 'latin1':
      case 'binary':
        return latin1Slice(this, start, end)

      case 'base64':
        return base64Slice(this, start, end)

      case 'ucs2':
      case 'ucs-2':
      case 'utf16le':
      case 'utf-16le':
        return utf16leSlice(this, start, end)

      default:
        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
        encoding = (encoding + '').toLowerCase()
        loweredCase = true
    }
  }
}

// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
// Buffer instances.
Buffer.prototype._isBuffer = true

function swap (b, n, m) {
  var i = b[n]
  b[n] = b[m]
  b[m] = i
}

Buffer.prototype.swap16 = function swap16 () {
  var len = this.length
  if (len % 2 !== 0) {
    throw new RangeError('Buffer size must be a multiple of 16-bits')
  }
  for (var i = 0; i < len; i += 2) {
    swap(this, i, i + 1)
  }
  return this
}

Buffer.prototype.swap32 = function swap32 () {
  var len = this.length
  if (len % 4 !== 0) {
    throw new RangeError('Buffer size must be a multiple of 32-bits')
  }
  for (var i = 0; i < len; i += 4) {
    swap(this, i, i + 3)
    swap(this, i + 1, i + 2)
  }
  return this
}

Buffer.prototype.swap64 = function swap64 () {
  var len = this.length
  if (len % 8 !== 0) {
    throw new RangeError('Buffer size must be a multiple of 64-bits')
  }
  for (var i = 0; i < len; i += 8) {
    swap(this, i, i + 7)
    swap(this, i + 1, i + 6)
    swap(this, i + 2, i + 5)
    swap(this, i + 3, i + 4)
  }
  return this
}

Buffer.prototype.toString = function toString () {
  var length = this.length | 0
  if (length === 0) return ''
  if (arguments.length === 0) return utf8Slice(this, 0, length)
  return slowToString.apply(this, arguments)
}

Buffer.prototype.equals = function equals (b) {
  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
  if (this === b) return true
  return Buffer.compare(this, b) === 0
}

Buffer.prototype.inspect = function inspect () {
  var str = ''
  var max = exports.INSPECT_MAX_BYTES
  if (this.length > 0) {
    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
    if (this.length > max) str += ' ... '
  }
  return '<Buffer ' + str + '>'
}

Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
  if (!Buffer.isBuffer(target)) {
    throw new TypeError('Argument must be a Buffer')
  }

  if (start === undefined) {
    start = 0
  }
  if (end === undefined) {
    end = target ? target.length : 0
  }
  if (thisStart === undefined) {
    thisStart = 0
  }
  if (thisEnd === undefined) {
    thisEnd = this.length
  }

  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
    throw new RangeError('out of range index')
  }

  if (thisStart >= thisEnd && start >= end) {
    return 0
  }
  if (thisStart >= thisEnd) {
    return -1
  }
  if (start >= end) {
    return 1
  }

  start >>>= 0
  end >>>= 0
  thisStart >>>= 0
  thisEnd >>>= 0

  if (this === target) return 0

  var x = thisEnd - thisStart
  var y = end - start
  var len = Math.min(x, y)

  var thisCopy = this.slice(thisStart, thisEnd)
  var targetCopy = target.slice(start, end)

  for (var i = 0; i < len; ++i) {
    if (thisCopy[i] !== targetCopy[i]) {
      x = thisCopy[i]
      y = targetCopy[i]
      break
    }
  }

  if (x < y) return -1
  if (y < x) return 1
  return 0
}

// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
//
// Arguments:
// - buffer - a Buffer to search
// - val - a string, Buffer, or number
// - byteOffset - an index into `buffer`; will be clamped to an int32
// - encoding - an optional encoding, relevant is val is a string
// - dir - true for indexOf, false for lastIndexOf
function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
  // Empty buffer means no match
  if (buffer.length === 0) return -1

  // Normalize byteOffset
  if (typeof byteOffset === 'string') {
    encoding = byteOffset
    byteOffset = 0
  } else if (byteOffset > 0x7fffffff) {
    byteOffset = 0x7fffffff
  } else if (byteOffset < -0x80000000) {
    byteOffset = -0x80000000
  }
  byteOffset = +byteOffset  // Coerce to Number.
  if (isNaN(byteOffset)) {
    // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
    byteOffset = dir ? 0 : (buffer.length - 1)
  }

  // Normalize byteOffset: negative offsets start from the end of the buffer
  if (byteOffset < 0) byteOffset = buffer.length + byteOffset
  if (byteOffset >= buffer.length) {
    if (dir) return -1
    else byteOffset = buffer.length - 1
  } else if (byteOffset < 0) {
    if (dir) byteOffset = 0
    else return -1
  }

  // Normalize val
  if (typeof val === 'string') {
    val = Buffer.from(val, encoding)
  }

  // Finally, search either indexOf (if dir is true) or lastIndexOf
  if (Buffer.isBuffer(val)) {
    // Special case: looking for empty string/buffer always fails
    if (val.length === 0) {
      return -1
    }
    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
  } else if (typeof val === 'number') {
    val = val & 0xFF // Search for a byte value [0-255]
    if (Buffer.TYPED_ARRAY_SUPPORT &&
        typeof Uint8Array.prototype.indexOf === 'function') {
      if (dir) {
        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
      } else {
        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
      }
    }
    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
  }

  throw new TypeError('val must be string, number or Buffer')
}

function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
  var indexSize = 1
  var arrLength = arr.length
  var valLength = val.length

  if (encoding !== undefined) {
    encoding = String(encoding).toLowerCase()
    if (encoding === 'ucs2' || encoding === 'ucs-2' ||
        encoding === 'utf16le' || encoding === 'utf-16le') {
      if (arr.length < 2 || val.length < 2) {
        return -1
      }
      indexSize = 2
      arrLength /= 2
      valLength /= 2
      byteOffset /= 2
    }
  }

  function read (buf, i) {
    if (indexSize === 1) {
      return buf[i]
    } else {
      return buf.readUInt16BE(i * indexSize)
    }
  }

  var i
  if (dir) {
    var foundIndex = -1
    for (i = byteOffset; i < arrLength; i++) {
      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
        if (foundIndex === -1) foundIndex = i
        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
      } else {
        if (foundIndex !== -1) i -= i - foundIndex
        foundIndex = -1
      }
    }
  } else {
    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
    for (i = byteOffset; i >= 0; i--) {
      var found = true
      for (var j = 0; j < valLength; j++) {
        if (read(arr, i + j) !== read(val, j)) {
          found = false
          break
        }
      }
      if (found) return i
    }
  }

  return -1
}

Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
  return this.indexOf(val, byteOffset, encoding) !== -1
}

Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
}

Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
}

function hexWrite (buf, string, offset, length) {
  offset = Number(offset) || 0
  var remaining = buf.length - offset
  if (!length) {
    length = remaining
  } else {
    length = Number(length)
    if (length > remaining) {
      length = remaining
    }
  }

  // must be an even number of digits
  var strLen = string.length
  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')

  if (length > strLen / 2) {
    length = strLen / 2
  }
  for (var i = 0; i < length; ++i) {
    var parsed = parseInt(string.substr(i * 2, 2), 16)
    if (isNaN(parsed)) return i
    buf[offset + i] = parsed
  }
  return i
}

function utf8Write (buf, string, offset, length) {
  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
}

function asciiWrite (buf, string, offset, length) {
  return blitBuffer(asciiToBytes(string), buf, offset, length)
}

function latin1Write (buf, string, offset, length) {
  return asciiWrite(buf, string, offset, length)
}

function base64Write (buf, string, offset, length) {
  return blitBuffer(base64ToBytes(string), buf, offset, length)
}

function ucs2Write (buf, string, offset, length) {
  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
}

Buffer.prototype.write = function write (string, offset, length, encoding) {
  // Buffer#write(string)
  if (offset === undefined) {
    encoding = 'utf8'
    length = this.length
    offset = 0
  // Buffer#write(string, encoding)
  } else if (length === undefined && typeof offset === 'string') {
    encoding = offset
    length = this.length
    offset = 0
  // Buffer#write(string, offset[, length][, encoding])
  } else if (isFinite(offset)) {
    offset = offset | 0
    if (isFinite(length)) {
      length = length | 0
      if (encoding === undefined) encoding = 'utf8'
    } else {
      encoding = length
      length = undefined
    }
  // legacy write(string, encoding, offset, length) - remove in v0.13
  } else {
    throw new Error(
      'Buffer.write(string, encoding, offset[, length]) is no longer supported'
    )
  }

  var remaining = this.length - offset
  if (length === undefined || length > remaining) length = remaining

  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
    throw new RangeError('Attempt to write outside buffer bounds')
  }

  if (!encoding) encoding = 'utf8'

  var loweredCase = false
  for (;;) {
    switch (encoding) {
      case 'hex':
        return hexWrite(this, string, offset, length)

      case 'utf8':
      case 'utf-8':
        return utf8Write(this, string, offset, length)

      case 'ascii':
        return asciiWrite(this, string, offset, length)

      case 'latin1':
      case 'binary':
        return latin1Write(this, string, offset, length)

      case 'base64':
        // Warning: maxLength not taken into account in base64Write
        return base64Write(this, string, offset, length)

      case 'ucs2':
      case 'ucs-2':
      case 'utf16le':
      case 'utf-16le':
        return ucs2Write(this, string, offset, length)

      default:
        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
        encoding = ('' + encoding).toLowerCase()
        loweredCase = true
    }
  }
}

Buffer.prototype.toJSON = function toJSON () {
  return {
    type: 'Buffer',
    data: Array.prototype.slice.call(this._arr || this, 0)
  }
}

function base64Slice (buf, start, end) {
  if (start === 0 && end === buf.length) {
    return base64.fromByteArray(buf)
  } else {
    return base64.fromByteArray(buf.slice(start, end))
  }
}

function utf8Slice (buf, start, end) {
  end = Math.min(buf.length, end)
  var res = []

  var i = start
  while (i < end) {
    var firstByte = buf[i]
    var codePoint = null
    var bytesPerSequence = (firstByte > 0xEF) ? 4
      : (firstByte > 0xDF) ? 3
      : (firstByte > 0xBF) ? 2
      : 1

    if (i + bytesPerSequence <= end) {
      var secondByte, thirdByte, fourthByte, tempCodePoint

      switch (bytesPerSequence) {
        case 1:
          if (firstByte < 0x80) {
            codePoint = firstByte
          }
          break
        case 2:
          secondByte = buf[i + 1]
          if ((secondByte & 0xC0) === 0x80) {
            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
            if (tempCodePoint > 0x7F) {
              codePoint = tempCodePoint
            }
          }
          break
        case 3:
          secondByte = buf[i + 1]
          thirdByte = buf[i + 2]
          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
              codePoint = tempCodePoint
            }
          }
          break
        case 4:
          secondByte = buf[i + 1]
          thirdByte = buf[i + 2]
          fourthByte = buf[i + 3]
          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
              codePoint = tempCodePoint
            }
          }
      }
    }

    if (codePoint === null) {
      // we did not generate a valid codePoint so insert a
      // replacement char (U+FFFD) and advance only 1 byte
      codePoint = 0xFFFD
      bytesPerSequence = 1
    } else if (codePoint > 0xFFFF) {
      // encode to utf16 (surrogate pair dance)
      codePoint -= 0x10000
      res.push(codePoint >>> 10 & 0x3FF | 0xD800)
      codePoint = 0xDC00 | codePoint & 0x3FF
    }

    res.push(codePoint)
    i += bytesPerSequence
  }

  return decodeCodePointsArray(res)
}

// Based on http://stackoverflow.com/a/22747272/680742, the browser with
// the lowest limit is Chrome, with 0x10000 args.
// We go 1 magnitude less, for safety
var MAX_ARGUMENTS_LENGTH = 0x1000

function decodeCodePointsArray (codePoints) {
  var len = codePoints.length
  if (len <= MAX_ARGUMENTS_LENGTH) {
    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
  }

  // Decode in chunks to avoid "call stack size exceeded".
  var res = ''
  var i = 0
  while (i < len) {
    res += String.fromCharCode.apply(
      String,
      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
    )
  }
  return res
}

function asciiSlice (buf, start, end) {
  var ret = ''
  end = Math.min(buf.length, end)

  for (var i = start; i < end; ++i) {
    ret += String.fromCharCode(buf[i] & 0x7F)
  }
  return ret
}

function latin1Slice (buf, start, end) {
  var ret = ''
  end = Math.min(buf.length, end)

  for (var i = start; i < end; ++i) {
    ret += String.fromCharCode(buf[i])
  }
  return ret
}

function hexSlice (buf, start, end) {
  var len = buf.length

  if (!start || start < 0) start = 0
  if (!end || end < 0 || end > len) end = len

  var out = ''
  for (var i = start; i < end; ++i) {
    out += toHex(buf[i])
  }
  return out
}

function utf16leSlice (buf, start, end) {
  var bytes = buf.slice(start, end)
  var res = ''
  for (var i = 0; i < bytes.length; i += 2) {
    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
  }
  return res
}

Buffer.prototype.slice = function slice (start, end) {
  var len = this.length
  start = ~~start
  end = end === undefined ? len : ~~end

  if (start < 0) {
    start += len
    if (start < 0) start = 0
  } else if (start > len) {
    start = len
  }

  if (end < 0) {
    end += len
    if (end < 0) end = 0
  } else if (end > len) {
    end = len
  }

  if (end < start) end = start

  var newBuf
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    newBuf = this.subarray(start, end)
    newBuf.__proto__ = Buffer.prototype
  } else {
    var sliceLen = end - start
    newBuf = new Buffer(sliceLen, undefined)
    for (var i = 0; i < sliceLen; ++i) {
      newBuf[i] = this[i + start]
    }
  }

  return newBuf
}

/*
 * Need to make sure that buffer isn't trying to write out of bounds.
 */
function checkOffset (offset, ext, length) {
  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
}

Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
  offset = offset | 0
  byteLength = byteLength | 0
  if (!noAssert) checkOffset(offset, byteLength, this.length)

  var val = this[offset]
  var mul = 1
  var i = 0
  while (++i < byteLength && (mul *= 0x100)) {
    val += this[offset + i] * mul
  }

  return val
}

Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
  offset = offset | 0
  byteLength = byteLength | 0
  if (!noAssert) {
    checkOffset(offset, byteLength, this.length)
  }

  var val = this[offset + --byteLength]
  var mul = 1
  while (byteLength > 0 && (mul *= 0x100)) {
    val += this[offset + --byteLength] * mul
  }

  return val
}

Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 1, this.length)
  return this[offset]
}

Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 2, this.length)
  return this[offset] | (this[offset + 1] << 8)
}

Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 2, this.length)
  return (this[offset] << 8) | this[offset + 1]
}

Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length)

  return ((this[offset]) |
      (this[offset + 1] << 8) |
      (this[offset + 2] << 16)) +
      (this[offset + 3] * 0x1000000)
}

Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length)

  return (this[offset] * 0x1000000) +
    ((this[offset + 1] << 16) |
    (this[offset + 2] << 8) |
    this[offset + 3])
}

Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
  offset = offset | 0
  byteLength = byteLength | 0
  if (!noAssert) checkOffset(offset, byteLength, this.length)

  var val = this[offset]
  var mul = 1
  var i = 0
  while (++i < byteLength && (mul *= 0x100)) {
    val += this[offset + i] * mul
  }
  mul *= 0x80

  if (val >= mul) val -= Math.pow(2, 8 * byteLength)

  return val
}

Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
  offset = offset | 0
  byteLength = byteLength | 0
  if (!noAssert) checkOffset(offset, byteLength, this.length)

  var i = byteLength
  var mul = 1
  var val = this[offset + --i]
  while (i > 0 && (mul *= 0x100)) {
    val += this[offset + --i] * mul
  }
  mul *= 0x80

  if (val >= mul) val -= Math.pow(2, 8 * byteLength)

  return val
}

Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 1, this.length)
  if (!(this[offset] & 0x80)) return (this[offset])
  return ((0xff - this[offset] + 1) * -1)
}

Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 2, this.length)
  var val = this[offset] | (this[offset + 1] << 8)
  return (val & 0x8000) ? val | 0xFFFF0000 : val
}

Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 2, this.length)
  var val = this[offset + 1] | (this[offset] << 8)
  return (val & 0x8000) ? val | 0xFFFF0000 : val
}

Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length)

  return (this[offset]) |
    (this[offset + 1] << 8) |
    (this[offset + 2] << 16) |
    (this[offset + 3] << 24)
}

Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length)

  return (this[offset] << 24) |
    (this[offset + 1] << 16) |
    (this[offset + 2] << 8) |
    (this[offset + 3])
}

Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length)
  return ieee754.read(this, offset, true, 23, 4)
}

Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length)
  return ieee754.read(this, offset, false, 23, 4)
}

Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 8, this.length)
  return ieee754.read(this, offset, true, 52, 8)
}

Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 8, this.length)
  return ieee754.read(this, offset, false, 52, 8)
}

function checkInt (buf, value, offset, ext, max, min) {
  if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
  if (offset + ext > buf.length) throw new RangeError('Index out of range')
}

Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
  value = +value
  offset = offset | 0
  byteLength = byteLength | 0
  if (!noAssert) {
    var maxBytes = Math.pow(2, 8 * byteLength) - 1
    checkInt(this, value, offset, byteLength, maxBytes, 0)
  }

  var mul = 1
  var i = 0
  this[offset] = value & 0xFF
  while (++i < byteLength && (mul *= 0x100)) {
    this[offset + i] = (value / mul) & 0xFF
  }

  return offset + byteLength
}

Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
  value = +value
  offset = offset | 0
  byteLength = byteLength | 0
  if (!noAssert) {
    var maxBytes = Math.pow(2, 8 * byteLength) - 1
    checkInt(this, value, offset, byteLength, maxBytes, 0)
  }

  var i = byteLength - 1
  var mul = 1
  this[offset + i] = value & 0xFF
  while (--i >= 0 && (mul *= 0x100)) {
    this[offset + i] = (value / mul) & 0xFF
  }

  return offset + byteLength
}

Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
  this[offset] = (value & 0xff)
  return offset + 1
}

function objectWriteUInt16 (buf, value, offset, littleEndian) {
  if (value < 0) value = 0xffff + value + 1
  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
      (littleEndian ? i : 1 - i) * 8
  }
}

Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    this[offset] = (value & 0xff)
    this[offset + 1] = (value >>> 8)
  } else {
    objectWriteUInt16(this, value, offset, true)
  }
  return offset + 2
}

Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    this[offset] = (value >>> 8)
    this[offset + 1] = (value & 0xff)
  } else {
    objectWriteUInt16(this, value, offset, false)
  }
  return offset + 2
}

function objectWriteUInt32 (buf, value, offset, littleEndian) {
  if (value < 0) value = 0xffffffff + value + 1
  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
  }
}

Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    this[offset + 3] = (value >>> 24)
    this[offset + 2] = (value >>> 16)
    this[offset + 1] = (value >>> 8)
    this[offset] = (value & 0xff)
  } else {
    objectWriteUInt32(this, value, offset, true)
  }
  return offset + 4
}

Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    this[offset] = (value >>> 24)
    this[offset + 1] = (value >>> 16)
    this[offset + 2] = (value >>> 8)
    this[offset + 3] = (value & 0xff)
  } else {
    objectWriteUInt32(this, value, offset, false)
  }
  return offset + 4
}

Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) {
    var limit = Math.pow(2, 8 * byteLength - 1)

    checkInt(this, value, offset, byteLength, limit - 1, -limit)
  }

  var i = 0
  var mul = 1
  var sub = 0
  this[offset] = value & 0xFF
  while (++i < byteLength && (mul *= 0x100)) {
    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
      sub = 1
    }
    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
  }

  return offset + byteLength
}

Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) {
    var limit = Math.pow(2, 8 * byteLength - 1)

    checkInt(this, value, offset, byteLength, limit - 1, -limit)
  }

  var i = byteLength - 1
  var mul = 1
  var sub = 0
  this[offset + i] = value & 0xFF
  while (--i >= 0 && (mul *= 0x100)) {
    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
      sub = 1
    }
    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
  }

  return offset + byteLength
}

Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
  if (value < 0) value = 0xff + value + 1
  this[offset] = (value & 0xff)
  return offset + 1
}

Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    this[offset] = (value & 0xff)
    this[offset + 1] = (value >>> 8)
  } else {
    objectWriteUInt16(this, value, offset, true)
  }
  return offset + 2
}

Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    this[offset] = (value >>> 8)
    this[offset + 1] = (value & 0xff)
  } else {
    objectWriteUInt16(this, value, offset, false)
  }
  return offset + 2
}

Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    this[offset] = (value & 0xff)
    this[offset + 1] = (value >>> 8)
    this[offset + 2] = (value >>> 16)
    this[offset + 3] = (value >>> 24)
  } else {
    objectWriteUInt32(this, value, offset, true)
  }
  return offset + 4
}

Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
  if (value < 0) value = 0xffffffff + value + 1
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    this[offset] = (value >>> 24)
    this[offset + 1] = (value >>> 16)
    this[offset + 2] = (value >>> 8)
    this[offset + 3] = (value & 0xff)
  } else {
    objectWriteUInt32(this, value, offset, false)
  }
  return offset + 4
}

function checkIEEE754 (buf, value, offset, ext, max, min) {
  if (offset + ext > buf.length) throw new RangeError('Index out of range')
  if (offset < 0) throw new RangeError('Index out of range')
}

function writeFloat (buf, value, offset, littleEndian, noAssert) {
  if (!noAssert) {
    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
  }
  ieee754.write(buf, value, offset, littleEndian, 23, 4)
  return offset + 4
}

Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
  return writeFloat(this, value, offset, true, noAssert)
}

Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
  return writeFloat(this, value, offset, false, noAssert)
}

function writeDouble (buf, value, offset, littleEndian, noAssert) {
  if (!noAssert) {
    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
  }
  ieee754.write(buf, value, offset, littleEndian, 52, 8)
  return offset + 8
}

Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
  return writeDouble(this, value, offset, true, noAssert)
}

Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
  return writeDouble(this, value, offset, false, noAssert)
}

// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
Buffer.prototype.copy = function copy (target, targetStart, start, end) {
  if (!start) start = 0
  if (!end && end !== 0) end = this.length
  if (targetStart >= target.length) targetStart = target.length
  if (!targetStart) targetStart = 0
  if (end > 0 && end < start) end = start

  // Copy 0 bytes; we're done
  if (end === start) return 0
  if (target.length === 0 || this.length === 0) return 0

  // Fatal error conditions
  if (targetStart < 0) {
    throw new RangeError('targetStart out of bounds')
  }
  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
  if (end < 0) throw new RangeError('sourceEnd out of bounds')

  // Are we oob?
  if (end > this.length) end = this.length
  if (target.length - targetStart < end - start) {
    end = target.length - targetStart + start
  }

  var len = end - start
  var i

  if (this === target && start < targetStart && targetStart < end) {
    // descending copy from end
    for (i = len - 1; i >= 0; --i) {
      target[i + targetStart] = this[i + start]
    }
  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
    // ascending copy from start
    for (i = 0; i < len; ++i) {
      target[i + targetStart] = this[i + start]
    }
  } else {
    Uint8Array.prototype.set.call(
      target,
      this.subarray(start, start + len),
      targetStart
    )
  }

  return len
}

// Usage:
//    buffer.fill(number[, offset[, end]])
//    buffer.fill(buffer[, offset[, end]])
//    buffer.fill(string[, offset[, end]][, encoding])
Buffer.prototype.fill = function fill (val, start, end, encoding) {
  // Handle string cases:
  if (typeof val === 'string') {
    if (typeof start === 'string') {
      encoding = start
      start = 0
      end = this.length
    } else if (typeof end === 'string') {
      encoding = end
      end = this.length
    }
    if (val.length === 1) {
      var code = val.charCodeAt(0)
      if (code < 256) {
        val = code
      }
    }
    if (encoding !== undefined && typeof encoding !== 'string') {
      throw new TypeError('encoding must be a string')
    }
    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
      throw new TypeError('Unknown encoding: ' + encoding)
    }
  } else if (typeof val === 'number') {
    val = val & 255
  }

  // Invalid ranges are not set to a default, so can range check early.
  if (start < 0 || this.length < start || this.length < end) {
    throw new RangeError('Out of range index')
  }

  if (end <= start) {
    return this
  }

  start = start >>> 0
  end = end === undefined ? this.length : end >>> 0

  if (!val) val = 0

  var i
  if (typeof val === 'number') {
    for (i = start; i < end; ++i) {
      this[i] = val
    }
  } else {
    var bytes = Buffer.isBuffer(val)
      ? val
      : utf8ToBytes(new Buffer(val, encoding).toString())
    var len = bytes.length
    for (i = 0; i < end - start; ++i) {
      this[i + start] = bytes[i % len]
    }
  }

  return this
}

// HELPER FUNCTIONS
// ================

var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g

function base64clean (str) {
  // Node strips out invalid characters like \n and \t from the string, base64-js does not
  str = stringtrim(str).replace(INVALID_BASE64_RE, '')
  // Node converts strings with length < 2 to ''
  if (str.length < 2) return ''
  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
  while (str.length % 4 !== 0) {
    str = str + '='
  }
  return str
}

function stringtrim (str) {
  if (str.trim) return str.trim()
  return str.replace(/^\s+|\s+$/g, '')
}

function toHex (n) {
  if (n < 16) return '0' + n.toString(16)
  return n.toString(16)
}

function utf8ToBytes (string, units) {
  units = units || Infinity
  var codePoint
  var length = string.length
  var leadSurrogate = null
  var bytes = []

  for (var i = 0; i < length; ++i) {
    codePoint = string.charCodeAt(i)

    // is surrogate component
    if (codePoint > 0xD7FF && codePoint < 0xE000) {
      // last char was a lead
      if (!leadSurrogate) {
        // no lead yet
        if (codePoint > 0xDBFF) {
          // unexpected trail
          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
          continue
        } else if (i + 1 === length) {
          // unpaired lead
          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
          continue
        }

        // valid lead
        leadSurrogate = codePoint

        continue
      }

      // 2 leads in a row
      if (codePoint < 0xDC00) {
        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
        leadSurrogate = codePoint
        continue
      }

      // valid surrogate pair
      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
    } else if (leadSurrogate) {
      // valid bmp char, but last char was a lead
      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
    }

    leadSurrogate = null

    // encode utf8
    if (codePoint < 0x80) {
      if ((units -= 1) < 0) break
      bytes.push(codePoint)
    } else if (codePoint < 0x800) {
      if ((units -= 2) < 0) break
      bytes.push(
        codePoint >> 0x6 | 0xC0,
        codePoint & 0x3F | 0x80
      )
    } else if (codePoint < 0x10000) {
      if ((units -= 3) < 0) break
      bytes.push(
        codePoint >> 0xC | 0xE0,
        codePoint >> 0x6 & 0x3F | 0x80,
        codePoint & 0x3F | 0x80
      )
    } else if (codePoint < 0x110000) {
      if ((units -= 4) < 0) break
      bytes.push(
        codePoint >> 0x12 | 0xF0,
        codePoint >> 0xC & 0x3F | 0x80,
        codePoint >> 0x6 & 0x3F | 0x80,
        codePoint & 0x3F | 0x80
      )
    } else {
      throw new Error('Invalid code point')
    }
  }

  return bytes
}

function asciiToBytes (str) {
  var byteArray = []
  for (var i = 0; i < str.length; ++i) {
    // Node's code seems to be doing this and not & 0x7F..
    byteArray.push(str.charCodeAt(i) & 0xFF)
  }
  return byteArray
}

function utf16leToBytes (str, units) {
  var c, hi, lo
  var byteArray = []
  for (var i = 0; i < str.length; ++i) {
    if ((units -= 2) < 0) break

    c = str.charCodeAt(i)
    hi = c >> 8
    lo = c % 256
    byteArray.push(lo)
    byteArray.push(hi)
  }

  return byteArray
}

function base64ToBytes (str) {
  return base64.toByteArray(base64clean(str))
}

function blitBuffer (src, dst, offset, length) {
  for (var i = 0; i < length; ++i) {
    if ((i + offset >= dst.length) || (i >= src.length)) break
    dst[i + offset] = src[i]
  }
  return i
}

function isnan (val) {
  return val !== val // eslint-disable-line no-self-compare
}

}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{"base64-js":306,"ieee754":310,"isarray":311}],309:[function(require,module,exports){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

function EventEmitter() {
  this._events = this._events || {};
  this._maxListeners = this._maxListeners || undefined;
}
module.exports = EventEmitter;

// Backwards-compat with node 0.10.x
EventEmitter.EventEmitter = EventEmitter;

EventEmitter.prototype._events = undefined;
EventEmitter.prototype._maxListeners = undefined;

// By default EventEmitters will print a warning if more than 10 listeners are
// added to it. This is a useful default which helps finding memory leaks.
EventEmitter.defaultMaxListeners = 10;

// Obviously not all Emitters should be limited to 10. This function allows
// that to be increased. Set to zero for unlimited.
EventEmitter.prototype.setMaxListeners = function(n) {
  if (!isNumber(n) || n < 0 || isNaN(n))
    throw TypeError('n must be a positive number');
  this._maxListeners = n;
  return this;
};

EventEmitter.prototype.emit = function(type) {
  var er, handler, len, args, i, listeners;

  if (!this._events)
    this._events = {};

  // If there is no 'error' event listener then throw.
  if (type === 'error') {
    if (!this._events.error ||
        (isObject(this._events.error) && !this._events.error.length)) {
      er = arguments[1];
      if (er instanceof Error) {
        throw er; // Unhandled 'error' event
      } else {
        // At least give some kind of context to the user
        var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
        err.context = er;
        throw err;
      }
    }
  }

  handler = this._events[type];

  if (isUndefined(handler))
    return false;

  if (isFunction(handler)) {
    switch (arguments.length) {
      // fast cases
      case 1:
        handler.call(this);
        break;
      case 2:
        handler.call(this, arguments[1]);
        break;
      case 3:
        handler.call(this, arguments[1], arguments[2]);
        break;
      // slower
      default:
        args = Array.prototype.slice.call(arguments, 1);
        handler.apply(this, args);
    }
  } else if (isObject(handler)) {
    args = Array.prototype.slice.call(arguments, 1);
    listeners = handler.slice();
    len = listeners.length;
    for (i = 0; i < len; i++)
      listeners[i].apply(this, args);
  }

  return true;
};

EventEmitter.prototype.addListener = function(type, listener) {
  var m;

  if (!isFunction(listener))
    throw TypeError('listener must be a function');

  if (!this._events)
    this._events = {};

  // To avoid recursion in the case that type === "newListener"! Before
  // adding it to the listeners, first emit "newListener".
  if (this._events.newListener)
    this.emit('newListener', type,
              isFunction(listener.listener) ?
              listener.listener : listener);

  if (!this._events[type])
    // Optimize the case of one listener. Don't need the extra array object.
    this._events[type] = listener;
  else if (isObject(this._events[type]))
    // If we've already got an array, just append.
    this._events[type].push(listener);
  else
    // Adding the second element, need to change to array.
    this._events[type] = [this._events[type], listener];

  // Check for listener leak
  if (isObject(this._events[type]) && !this._events[type].warned) {
    if (!isUndefined(this._maxListeners)) {
      m = this._maxListeners;
    } else {
      m = EventEmitter.defaultMaxListeners;
    }

    if (m && m > 0 && this._events[type].length > m) {
      this._events[type].warned = true;
      console.error('(node) warning: possible EventEmitter memory ' +
                    'leak detected. %d listeners added. ' +
                    'Use emitter.setMaxListeners() to increase limit.',
                    this._events[type].length);
      if (typeof console.trace === 'function') {
        // not supported in IE 10
        console.trace();
      }
    }
  }

  return this;
};

EventEmitter.prototype.on = EventEmitter.prototype.addListener;

EventEmitter.prototype.once = function(type, listener) {
  if (!isFunction(listener))
    throw TypeError('listener must be a function');

  var fired = false;

  function g() {
    this.removeListener(type, g);

    if (!fired) {
      fired = true;
      listener.apply(this, arguments);
    }
  }

  g.listener = listener;
  this.on(type, g);

  return this;
};

// emits a 'removeListener' event iff the listener was removed
EventEmitter.prototype.removeListener = function(type, listener) {
  var list, position, length, i;

  if (!isFunction(listener))
    throw TypeError('listener must be a function');

  if (!this._events || !this._events[type])
    return this;

  list = this._events[type];
  length = list.length;
  position = -1;

  if (list === listener ||
      (isFunction(list.listener) && list.listener === listener)) {
    delete this._events[type];
    if (this._events.removeListener)
      this.emit('removeListener', type, listener);

  } else if (isObject(list)) {
    for (i = length; i-- > 0;) {
      if (list[i] === listener ||
          (list[i].listener && list[i].listener === listener)) {
        position = i;
        break;
      }
    }

    if (position < 0)
      return this;

    if (list.length === 1) {
      list.length = 0;
      delete this._events[type];
    } else {
      list.splice(position, 1);
    }

    if (this._events.removeListener)
      this.emit('removeListener', type, listener);
  }

  return this;
};

EventEmitter.prototype.removeAllListeners = function(type) {
  var key, listeners;

  if (!this._events)
    return this;

  // not listening for removeListener, no need to emit
  if (!this._events.removeListener) {
    if (arguments.length === 0)
      this._events = {};
    else if (this._events[type])
      delete this._events[type];
    return this;
  }

  // emit removeListener for all listeners on all events
  if (arguments.length === 0) {
    for (key in this._events) {
      if (key === 'removeListener') continue;
      this.removeAllListeners(key);
    }
    this.removeAllListeners('removeListener');
    this._events = {};
    return this;
  }

  listeners = this._events[type];

  if (isFunction(listeners)) {
    this.removeListener(type, listeners);
  } else if (listeners) {
    // LIFO order
    while (listeners.length)
      this.removeListener(type, listeners[listeners.length - 1]);
  }
  delete this._events[type];

  return this;
};

EventEmitter.prototype.listeners = function(type) {
  var ret;
  if (!this._events || !this._events[type])
    ret = [];
  else if (isFunction(this._events[type]))
    ret = [this._events[type]];
  else
    ret = this._events[type].slice();
  return ret;
};

EventEmitter.prototype.listenerCount = function(type) {
  if (this._events) {
    var evlistener = this._events[type];

    if (isFunction(evlistener))
      return 1;
    else if (evlistener)
      return evlistener.length;
  }
  return 0;
};

EventEmitter.listenerCount = function(emitter, type) {
  return emitter.listenerCount(type);
};

function isFunction(arg) {
  return typeof arg === 'function';
}

function isNumber(arg) {
  return typeof arg === 'number';
}

function isObject(arg) {
  return typeof arg === 'object' && arg !== null;
}

function isUndefined(arg) {
  return arg === void 0;
}

},{}],310:[function(require,module,exports){
exports.read = function (buffer, offset, isLE, mLen, nBytes) {
  var e, m
  var eLen = nBytes * 8 - mLen - 1
  var eMax = (1 << eLen) - 1
  var eBias = eMax >> 1
  var nBits = -7
  var i = isLE ? (nBytes - 1) : 0
  var d = isLE ? -1 : 1
  var s = buffer[offset + i]

  i += d

  e = s & ((1 << (-nBits)) - 1)
  s >>= (-nBits)
  nBits += eLen
  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}

  m = e & ((1 << (-nBits)) - 1)
  e >>= (-nBits)
  nBits += mLen
  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}

  if (e === 0) {
    e = 1 - eBias
  } else if (e === eMax) {
    return m ? NaN : ((s ? -1 : 1) * Infinity)
  } else {
    m = m + Math.pow(2, mLen)
    e = e - eBias
  }
  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
}

exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
  var e, m, c
  var eLen = nBytes * 8 - mLen - 1
  var eMax = (1 << eLen) - 1
  var eBias = eMax >> 1
  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
  var i = isLE ? 0 : (nBytes - 1)
  var d = isLE ? 1 : -1
  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0

  value = Math.abs(value)

  if (isNaN(value) || value === Infinity) {
    m = isNaN(value) ? 1 : 0
    e = eMax
  } else {
    e = Math.floor(Math.log(value) / Math.LN2)
    if (value * (c = Math.pow(2, -e)) < 1) {
      e--
      c *= 2
    }
    if (e + eBias >= 1) {
      value += rt / c
    } else {
      value += rt * Math.pow(2, 1 - eBias)
    }
    if (value * c >= 2) {
      e++
      c /= 2
    }

    if (e + eBias >= eMax) {
      m = 0
      e = eMax
    } else if (e + eBias >= 1) {
      m = (value * c - 1) * Math.pow(2, mLen)
      e = e + eBias
    } else {
      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
      e = 0
    }
  }

  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}

  e = (e << mLen) | m
  eLen += mLen
  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}

  buffer[offset + i - d] |= s * 128
}

},{}],311:[function(require,module,exports){
var toString = {}.toString;

module.exports = Array.isArray || function (arr) {
  return toString.call(arr) == '[object Array]';
};

},{}],312:[function(require,module,exports){
(function(exports) {
  "use strict";

  function isArray(obj) {
    if (obj !== null) {
      return Object.prototype.toString.call(obj) === "[object Array]";
    } else {
      return false;
    }
  }

  function isObject(obj) {
    if (obj !== null) {
      return Object.prototype.toString.call(obj) === "[object Object]";
    } else {
      return false;
    }
  }

  function strictDeepEqual(first, second) {
    // Check the scalar case first.
    if (first === second) {
      return true;
    }

    // Check if they are the same type.
    var firstType = Object.prototype.toString.call(first);
    if (firstType !== Object.prototype.toString.call(second)) {
      return false;
    }
    // We know that first and second have the same type so we can just check the
    // first type from now on.
    if (isArray(first) === true) {
      // Short circuit if they're not the same length;
      if (first.length !== second.length) {
        return false;
      }
      for (var i = 0; i < first.length; i++) {
        if (strictDeepEqual(first[i], second[i]) === false) {
          return false;
        }
      }
      return true;
    }
    if (isObject(first) === true) {
      // An object is equal if it has the same key/value pairs.
      var keysSeen = {};
      for (var key in first) {
        if (hasOwnProperty.call(first, key)) {
          if (strictDeepEqual(first[key], second[key]) === false) {
            return false;
          }
          keysSeen[key] = true;
        }
      }
      // Now check that there aren't any keys in second that weren't
      // in first.
      for (var key2 in second) {
        if (hasOwnProperty.call(second, key2)) {
          if (keysSeen[key2] !== true) {
            return false;
          }
        }
      }
      return true;
    }
    return false;
  }

  function isFalse(obj) {
    // From the spec:
    // A false value corresponds to the following values:
    // Empty list
    // Empty object
    // Empty string
    // False boolean
    // null value

    // First check the scalar values.
    if (obj === "" || obj === false || obj === null) {
        return true;
    } else if (isArray(obj) && obj.length === 0) {
        // Check for an empty array.
        return true;
    } else if (isObject(obj)) {
        // Check for an empty object.
        for (var key in obj) {
            // If there are any keys, then
            // the object is not empty so the object
            // is not false.
            if (obj.hasOwnProperty(key)) {
              return false;
            }
        }
        return true;
    } else {
        return false;
    }
  }

  function objValues(obj) {
    var keys = Object.keys(obj);
    var values = [];
    for (var i = 0; i < keys.length; i++) {
      values.push(obj[keys[i]]);
    }
    return values;
  }

  function merge(a, b) {
      var merged = {};
      for (var key in a) {
          merged[key] = a[key];
      }
      for (var key2 in b) {
          merged[key2] = b[key2];
      }
      return merged;
  }

  var trimLeft;
  if (typeof String.prototype.trimLeft === "function") {
    trimLeft = function(str) {
      return str.trimLeft();
    };
  } else {
    trimLeft = function(str) {
      return str.match(/^\s*(.*)/)[1];
    };
  }

  // Type constants used to define functions.
  var TYPE_NUMBER = 0;
  var TYPE_ANY = 1;
  var TYPE_STRING = 2;
  var TYPE_ARRAY = 3;
  var TYPE_OBJECT = 4;
  var TYPE_BOOLEAN = 5;
  var TYPE_EXPREF = 6;
  var TYPE_NULL = 7;
  var TYPE_ARRAY_NUMBER = 8;
  var TYPE_ARRAY_STRING = 9;

  var TOK_EOF = "EOF";
  var TOK_UNQUOTEDIDENTIFIER = "UnquotedIdentifier";
  var TOK_QUOTEDIDENTIFIER = "QuotedIdentifier";
  var TOK_RBRACKET = "Rbracket";
  var TOK_RPAREN = "Rparen";
  var TOK_COMMA = "Comma";
  var TOK_COLON = "Colon";
  var TOK_RBRACE = "Rbrace";
  var TOK_NUMBER = "Number";
  var TOK_CURRENT = "Current";
  var TOK_EXPREF = "Expref";
  var TOK_PIPE = "Pipe";
  var TOK_OR = "Or";
  var TOK_AND = "And";
  var TOK_EQ = "EQ";
  var TOK_GT = "GT";
  var TOK_LT = "LT";
  var TOK_GTE = "GTE";
  var TOK_LTE = "LTE";
  var TOK_NE = "NE";
  var TOK_FLATTEN = "Flatten";
  var TOK_STAR = "Star";
  var TOK_FILTER = "Filter";
  var TOK_DOT = "Dot";
  var TOK_NOT = "Not";
  var TOK_LBRACE = "Lbrace";
  var TOK_LBRACKET = "Lbracket";
  var TOK_LPAREN= "Lparen";
  var TOK_LITERAL= "Literal";

  // The "&", "[", "<", ">" tokens
  // are not in basicToken because
  // there are two token variants
  // ("&&", "[?", "<=", ">=").  This is specially handled
  // below.

  var basicTokens = {
    ".": TOK_DOT,
    "*": TOK_STAR,
    ",": TOK_COMMA,
    ":": TOK_COLON,
    "{": TOK_LBRACE,
    "}": TOK_RBRACE,
    "]": TOK_RBRACKET,
    "(": TOK_LPAREN,
    ")": TOK_RPAREN,
    "@": TOK_CURRENT
  };

  var operatorStartToken = {
      "<": true,
      ">": true,
      "=": true,
      "!": true
  };

  var skipChars = {
      " ": true,
      "\t": true,
      "\n": true
  };


  function isAlpha(ch) {
      return (ch >= "a" && ch <= "z") ||
             (ch >= "A" && ch <= "Z") ||
             ch === "_";
  }

  function isNum(ch) {
      return (ch >= "0" && ch <= "9") ||
             ch === "-";
  }
  function isAlphaNum(ch) {
      return (ch >= "a" && ch <= "z") ||
             (ch >= "A" && ch <= "Z") ||
             (ch >= "0" && ch <= "9") ||
             ch === "_";
  }

  function Lexer() {
  }
  Lexer.prototype = {
      tokenize: function(stream) {
          var tokens = [];
          this._current = 0;
          var start;
          var identifier;
          var token;
          while (this._current < stream.length) {
              if (isAlpha(stream[this._current])) {
                  start = this._current;
                  identifier = this._consumeUnquotedIdentifier(stream);
                  tokens.push({type: TOK_UNQUOTEDIDENTIFIER,
                               value: identifier,
                               start: start});
              } else if (basicTokens[stream[this._current]] !== undefined) {
                  tokens.push({type: basicTokens[stream[this._current]],
                              value: stream[this._current],
                              start: this._current});
                  this._current++;
              } else if (isNum(stream[this._current])) {
                  token = this._consumeNumber(stream);
                  tokens.push(token);
              } else if (stream[this._current] === "[") {
                  // No need to increment this._current.  This happens
                  // in _consumeLBracket
                  token = this._consumeLBracket(stream);
                  tokens.push(token);
              } else if (stream[this._current] === "\"") {
                  start = this._current;
                  identifier = this._consumeQuotedIdentifier(stream);
                  tokens.push({type: TOK_QUOTEDIDENTIFIER,
                               value: identifier,
                               start: start});
              } else if (stream[this._current] === "'") {
                  start = this._current;
                  identifier = this._consumeRawStringLiteral(stream);
                  tokens.push({type: TOK_LITERAL,
                               value: identifier,
                               start: start});
              } else if (stream[this._current] === "`") {
                  start = this._current;
                  var literal = this._consumeLiteral(stream);
                  tokens.push({type: TOK_LITERAL,
                               value: literal,
                               start: start});
              } else if (operatorStartToken[stream[this._current]] !== undefined) {
                  tokens.push(this._consumeOperator(stream));
              } else if (skipChars[stream[this._current]] !== undefined) {
                  // Ignore whitespace.
                  this._current++;
              } else if (stream[this._current] === "&") {
                  start = this._current;
                  this._current++;
                  if (stream[this._current] === "&") {
                      this._current++;
                      tokens.push({type: TOK_AND, value: "&&", start: start});
                  } else {
                      tokens.push({type: TOK_EXPREF, value: "&", start: start});
                  }
              } else if (stream[this._current] === "|") {
                  start = this._current;
                  this._current++;
                  if (stream[this._current] === "|") {
                      this._current++;
                      tokens.push({type: TOK_OR, value: "||", start: start});
                  } else {
                      tokens.push({type: TOK_PIPE, value: "|", start: start});
                  }
              } else {
                  var error = new Error("Unknown character:" + stream[this._current]);
                  error.name = "LexerError";
                  throw error;
              }
          }
          return tokens;
      },

      _consumeUnquotedIdentifier: function(stream) {
          var start = this._current;
          this._current++;
          while (this._current < stream.length && isAlphaNum(stream[this._current])) {
              this._current++;
          }
          return stream.slice(start, this._current);
      },

      _consumeQuotedIdentifier: function(stream) {
          var start = this._current;
          this._current++;
          var maxLength = stream.length;
          while (stream[this._current] !== "\"" && this._current < maxLength) {
              // You can escape a double quote and you can escape an escape.
              var current = this._current;
              if (stream[current] === "\\" && (stream[current + 1] === "\\" ||
                                               stream[current + 1] === "\"")) {
                  current += 2;
              } else {
                  current++;
              }
              this._current = current;
          }
          this._current++;
          return JSON.parse(stream.slice(start, this._current));
      },

      _consumeRawStringLiteral: function(stream) {
          var start = this._current;
          this._current++;
          var maxLength = stream.length;
          while (stream[this._current] !== "'" && this._current < maxLength) {
              // You can escape a single quote and you can escape an escape.
              var current = this._current;
              if (stream[current] === "\\" && (stream[current + 1] === "\\" ||
                                               stream[current + 1] === "'")) {
                  current += 2;
              } else {
                  current++;
              }
              this._current = current;
          }
          this._current++;
          var literal = stream.slice(start + 1, this._current - 1);
          return literal.replace("\\'", "'");
      },

      _consumeNumber: function(stream) {
          var start = this._current;
          this._current++;
          var maxLength = stream.length;
          while (isNum(stream[this._current]) && this._current < maxLength) {
              this._current++;
          }
          var value = parseInt(stream.slice(start, this._current));
          return {type: TOK_NUMBER, value: value, start: start};
      },

      _consumeLBracket: function(stream) {
          var start = this._current;
          this._current++;
          if (stream[this._current] === "?") {
              this._current++;
              return {type: TOK_FILTER, value: "[?", start: start};
          } else if (stream[this._current] === "]") {
              this._current++;
              return {type: TOK_FLATTEN, value: "[]", start: start};
          } else {
              return {type: TOK_LBRACKET, value: "[", start: start};
          }
      },

      _consumeOperator: function(stream) {
          var start = this._current;
          var startingChar = stream[start];
          this._current++;
          if (startingChar === "!") {
              if (stream[this._current] === "=") {
                  this._current++;
                  return {type: TOK_NE, value: "!=", start: start};
              } else {
                return {type: TOK_NOT, value: "!", start: start};
              }
          } else if (startingChar === "<") {
              if (stream[this._current] === "=") {
                  this._current++;
                  return {type: TOK_LTE, value: "<=", start: start};
              } else {
                  return {type: TOK_LT, value: "<", start: start};
              }
          } else if (startingChar === ">") {
              if (stream[this._current] === "=") {
                  this._current++;
                  return {type: TOK_GTE, value: ">=", start: start};
              } else {
                  return {type: TOK_GT, value: ">", start: start};
              }
          } else if (startingChar === "=") {
              if (stream[this._current] === "=") {
                  this._current++;
                  return {type: TOK_EQ, value: "==", start: start};
              }
          }
      },

      _consumeLiteral: function(stream) {
          this._current++;
          var start = this._current;
          var maxLength = stream.length;
          var literal;
          while(stream[this._current] !== "`" && this._current < maxLength) {
              // You can escape a literal char or you can escape the escape.
              var current = this._current;
              if (stream[current] === "\\" && (stream[current + 1] === "\\" ||
                                               stream[current + 1] === "`")) {
                  current += 2;
              } else {
                  current++;
              }
              this._current = current;
          }
          var literalString = trimLeft(stream.slice(start, this._current));
          literalString = literalString.replace("\\`", "`");
          if (this._looksLikeJSON(literalString)) {
              literal = JSON.parse(literalString);
          } else {
              // Try to JSON parse it as "<literal>"
              literal = JSON.parse("\"" + literalString + "\"");
          }
          // +1 gets us to the ending "`", +1 to move on to the next char.
          this._current++;
          return literal;
      },

      _looksLikeJSON: function(literalString) {
          var startingChars = "[{\"";
          var jsonLiterals = ["true", "false", "null"];
          var numberLooking = "-0123456789";

          if (literalString === "") {
              return false;
          } else if (startingChars.indexOf(literalString[0]) >= 0) {
              return true;
          } else if (jsonLiterals.indexOf(literalString) >= 0) {
              return true;
          } else if (numberLooking.indexOf(literalString[0]) >= 0) {
              try {
                  JSON.parse(literalString);
                  return true;
              } catch (ex) {
                  return false;
              }
          } else {
              return false;
          }
      }
  };

      var bindingPower = {};
      bindingPower[TOK_EOF] = 0;
      bindingPower[TOK_UNQUOTEDIDENTIFIER] = 0;
      bindingPower[TOK_QUOTEDIDENTIFIER] = 0;
      bindingPower[TOK_RBRACKET] = 0;
      bindingPower[TOK_RPAREN] = 0;
      bindingPower[TOK_COMMA] = 0;
      bindingPower[TOK_RBRACE] = 0;
      bindingPower[TOK_NUMBER] = 0;
      bindingPower[TOK_CURRENT] = 0;
      bindingPower[TOK_EXPREF] = 0;
      bindingPower[TOK_PIPE] = 1;
      bindingPower[TOK_OR] = 2;
      bindingPower[TOK_AND] = 3;
      bindingPower[TOK_EQ] = 5;
      bindingPower[TOK_GT] = 5;
      bindingPower[TOK_LT] = 5;
      bindingPower[TOK_GTE] = 5;
      bindingPower[TOK_LTE] = 5;
      bindingPower[TOK_NE] = 5;
      bindingPower[TOK_FLATTEN] = 9;
      bindingPower[TOK_STAR] = 20;
      bindingPower[TOK_FILTER] = 21;
      bindingPower[TOK_DOT] = 40;
      bindingPower[TOK_NOT] = 45;
      bindingPower[TOK_LBRACE] = 50;
      bindingPower[TOK_LBRACKET] = 55;
      bindingPower[TOK_LPAREN] = 60;

  function Parser() {
  }

  Parser.prototype = {
      parse: function(expression) {
          this._loadTokens(expression);
          this.index = 0;
          var ast = this.expression(0);
          if (this._lookahead(0) !== TOK_EOF) {
              var t = this._lookaheadToken(0);
              var error = new Error(
                  "Unexpected token type: " + t.type + ", value: " + t.value);
              error.name = "ParserError";
              throw error;
          }
          return ast;
      },

      _loadTokens: function(expression) {
          var lexer = new Lexer();
          var tokens = lexer.tokenize(expression);
          tokens.push({type: TOK_EOF, value: "", start: expression.length});
          this.tokens = tokens;
      },

      expression: function(rbp) {
          var leftToken = this._lookaheadToken(0);
          this._advance();
          var left = this.nud(leftToken);
          var currentToken = this._lookahead(0);
          while (rbp < bindingPower[currentToken]) {
              this._advance();
              left = this.led(currentToken, left);
              currentToken = this._lookahead(0);
          }
          return left;
      },

      _lookahead: function(number) {
          return this.tokens[this.index + number].type;
      },

      _lookaheadToken: function(number) {
          return this.tokens[this.index + number];
      },

      _advance: function() {
          this.index++;
      },

      nud: function(token) {
        var left;
        var right;
        var expression;
        switch (token.type) {
          case TOK_LITERAL:
            return {type: "Literal", value: token.value};
          case TOK_UNQUOTEDIDENTIFIER:
            return {type: "Field", name: token.value};
          case TOK_QUOTEDIDENTIFIER:
            var node = {type: "Field", name: token.value};
            if (this._lookahead(0) === TOK_LPAREN) {
                throw new Error("Quoted identifier not allowed for function names.");
            } else {
                return node;
            }
            break;
          case TOK_NOT:
            right = this.expression(bindingPower.Not);
            return {type: "NotExpression", children: [right]};
          case TOK_STAR:
            left = {type: "Identity"};
            right = null;
            if (this._lookahead(0) === TOK_RBRACKET) {
                // This can happen in a multiselect,
                // [a, b, *]
                right = {type: "Identity"};
            } else {
                right = this._parseProjectionRHS(bindingPower.Star);
            }
            return {type: "ValueProjection", children: [left, right]};
          case TOK_FILTER:
            return this.led(token.type, {type: "Identity"});
          case TOK_LBRACE:
            return this._parseMultiselectHash();
          case TOK_FLATTEN:
            left = {type: TOK_FLATTEN, children: [{type: "Identity"}]};
            right = this._parseProjectionRHS(bindingPower.Flatten);
            return {type: "Projection", children: [left, right]};
          case TOK_LBRACKET:
            if (this._lookahead(0) === TOK_NUMBER || this._lookahead(0) === TOK_COLON) {
                right = this._parseIndexExpression();
                return this._projectIfSlice({type: "Identity"}, right);
            } else if (this._lookahead(0) === TOK_STAR &&
                       this._lookahead(1) === TOK_RBRACKET) {
                this._advance();
                this._advance();
                right = this._parseProjectionRHS(bindingPower.Star);
                return {type: "Projection",
                        children: [{type: "Identity"}, right]};
            } else {
                return this._parseMultiselectList();
            }
            break;
          case TOK_CURRENT:
            return {type: TOK_CURRENT};
          case TOK_EXPREF:
            expression = this.expression(bindingPower.Expref);
            return {type: "ExpressionReference", children: [expression]};
          case TOK_LPAREN:
            var args = [];
            while (this._lookahead(0) !== TOK_RPAREN) {
              if (this._lookahead(0) === TOK_CURRENT) {
                expression = {type: TOK_CURRENT};
                this._advance();
              } else {
                expression = this.expression(0);
              }
              args.push(expression);
            }
            this._match(TOK_RPAREN);
            return args[0];
          default:
            this._errorToken(token);
        }
      },

      led: function(tokenName, left) {
        var right;
        switch(tokenName) {
          case TOK_DOT:
            var rbp = bindingPower.Dot;
            if (this._lookahead(0) !== TOK_STAR) {
                right = this._parseDotRHS(rbp);
                return {type: "Subexpression", children: [left, right]};
            } else {
                // Creating a projection.
                this._advance();
                right = this._parseProjectionRHS(rbp);
                return {type: "ValueProjection", children: [left, right]};
            }
            break;
          case TOK_PIPE:
            right = this.expression(bindingPower.Pipe);
            return {type: TOK_PIPE, children: [left, right]};
          case TOK_OR:
            right = this.expression(bindingPower.Or);
            return {type: "OrExpression", children: [left, right]};
          case TOK_AND:
            right = this.expression(bindingPower.And);
            return {type: "AndExpression", children: [left, right]};
          case TOK_LPAREN:
            var name = left.name;
            var args = [];
            var expression, node;
            while (this._lookahead(0) !== TOK_RPAREN) {
              if (this._lookahead(0) === TOK_CURRENT) {
                expression = {type: TOK_CURRENT};
                this._advance();
              } else {
                expression = this.expression(0);
              }
              if (this._lookahead(0) === TOK_COMMA) {
                this._match(TOK_COMMA);
              }
              args.push(expression);
            }
            this._match(TOK_RPAREN);
            node = {type: "Function", name: name, children: args};
            return node;
          case TOK_FILTER:
            var condition = this.expression(0);
            this._match(TOK_RBRACKET);
            if (this._lookahead(0) === TOK_FLATTEN) {
              right = {type: "Identity"};
            } else {
              right = this._parseProjectionRHS(bindingPower.Filter);
            }
            return {type: "FilterProjection", children: [left, right, condition]};
          case TOK_FLATTEN:
            var leftNode = {type: TOK_FLATTEN, children: [left]};
            var rightNode = this._parseProjectionRHS(bindingPower.Flatten);
            return {type: "Projection", children: [leftNode, rightNode]};
          case TOK_EQ:
          case TOK_NE:
          case TOK_GT:
          case TOK_GTE:
          case TOK_LT:
          case TOK_LTE:
            return this._parseComparator(left, tokenName);
          case TOK_LBRACKET:
            var token = this._lookaheadToken(0);
            if (token.type === TOK_NUMBER || token.type === TOK_COLON) {
                right = this._parseIndexExpression();
                return this._projectIfSlice(left, right);
            } else {
                this._match(TOK_STAR);
                this._match(TOK_RBRACKET);
                right = this._parseProjectionRHS(bindingPower.Star);
                return {type: "Projection", children: [left, right]};
            }
            break;
          default:
            this._errorToken(this._lookaheadToken(0));
        }
      },

      _match: function(tokenType) {
          if (this._lookahead(0) === tokenType) {
              this._advance();
          } else {
              var t = this._lookaheadToken(0);
              var error = new Error("Expected " + tokenType + ", got: " + t.type);
              error.name = "ParserError";
              throw error;
          }
      },

      _errorToken: function(token) {
          var error = new Error("Invalid token (" +
                                token.type + "): \"" +
                                token.value + "\"");
          error.name = "ParserError";
          throw error;
      },


      _parseIndexExpression: function() {
          if (this._lookahead(0) === TOK_COLON || this._lookahead(1) === TOK_COLON) {
              return this._parseSliceExpression();
          } else {
              var node = {
                  type: "Index",
                  value: this._lookaheadToken(0).value};
              this._advance();
              this._match(TOK_RBRACKET);
              return node;
          }
      },

      _projectIfSlice: function(left, right) {
          var indexExpr = {type: "IndexExpression", children: [left, right]};
          if (right.type === "Slice") {
              return {
                  type: "Projection",
                  children: [indexExpr, this._parseProjectionRHS(bindingPower.Star)]
              };
          } else {
              return indexExpr;
          }
      },

      _parseSliceExpression: function() {
          // [start:end:step] where each part is optional, as well as the last
          // colon.
          var parts = [null, null, null];
          var index = 0;
          var currentToken = this._lookahead(0);
          while (currentToken !== TOK_RBRACKET && index < 3) {
              if (currentToken === TOK_COLON) {
                  index++;
                  this._advance();
              } else if (currentToken === TOK_NUMBER) {
                  parts[index] = this._lookaheadToken(0).value;
                  this._advance();
              } else {
                  var t = this._lookahead(0);
                  var error = new Error("Syntax error, unexpected token: " +
                                        t.value + "(" + t.type + ")");
                  error.name = "Parsererror";
                  throw error;
              }
              currentToken = this._lookahead(0);
          }
          this._match(TOK_RBRACKET);
          return {
              type: "Slice",
              children: parts
          };
      },

      _parseComparator: function(left, comparator) {
        var right = this.expression(bindingPower[comparator]);
        return {type: "Comparator", name: comparator, children: [left, right]};
      },

      _parseDotRHS: function(rbp) {
          var lookahead = this._lookahead(0);
          var exprTokens = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER, TOK_STAR];
          if (exprTokens.indexOf(lookahead) >= 0) {
              return this.expression(rbp);
          } else if (lookahead === TOK_LBRACKET) {
              this._match(TOK_LBRACKET);
              return this._parseMultiselectList();
          } else if (lookahead === TOK_LBRACE) {
              this._match(TOK_LBRACE);
              return this._parseMultiselectHash();
          }
      },

      _parseProjectionRHS: function(rbp) {
          var right;
          if (bindingPower[this._lookahead(0)] < 10) {
              right = {type: "Identity"};
          } else if (this._lookahead(0) === TOK_LBRACKET) {
              right = this.expression(rbp);
          } else if (this._lookahead(0) === TOK_FILTER) {
              right = this.expression(rbp);
          } else if (this._lookahead(0) === TOK_DOT) {
              this._match(TOK_DOT);
              right = this._parseDotRHS(rbp);
          } else {
              var t = this._lookaheadToken(0);
              var error = new Error("Sytanx error, unexpected token: " +
                                    t.value + "(" + t.type + ")");
              error.name = "ParserError";
              throw error;
          }
          return right;
      },

      _parseMultiselectList: function() {
          var expressions = [];
          while (this._lookahead(0) !== TOK_RBRACKET) {
              var expression = this.expression(0);
              expressions.push(expression);
              if (this._lookahead(0) === TOK_COMMA) {
                  this._match(TOK_COMMA);
                  if (this._lookahead(0) === TOK_RBRACKET) {
                    throw new Error("Unexpected token Rbracket");
                  }
              }
          }
          this._match(TOK_RBRACKET);
          return {type: "MultiSelectList", children: expressions};
      },

      _parseMultiselectHash: function() {
        var pairs = [];
        var identifierTypes = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER];
        var keyToken, keyName, value, node;
        for (;;) {
          keyToken = this._lookaheadToken(0);
          if (identifierTypes.indexOf(keyToken.type) < 0) {
            throw new Error("Expecting an identifier token, got: " +
                            keyToken.type);
          }
          keyName = keyToken.value;
          this._advance();
          this._match(TOK_COLON);
          value = this.expression(0);
          node = {type: "KeyValuePair", name: keyName, value: value};
          pairs.push(node);
          if (this._lookahead(0) === TOK_COMMA) {
            this._match(TOK_COMMA);
          } else if (this._lookahead(0) === TOK_RBRACE) {
            this._match(TOK_RBRACE);
            break;
          }
        }
        return {type: "MultiSelectHash", children: pairs};
      }
  };


  function TreeInterpreter(runtime) {
    this.runtime = runtime;
  }

  TreeInterpreter.prototype = {
      search: function(node, value) {
          return this.visit(node, value);
      },

      visit: function(node, value) {
          var matched, current, result, first, second, field, left, right, collected, i;
          switch (node.type) {
            case "Field":
              if (value === null ) {
                  return null;
              } else if (isObject(value)) {
                  field = value[node.name];
                  if (field === undefined) {
                      return null;
                  } else {
                      return field;
                  }
              } else {
                return null;
              }
              break;
            case "Subexpression":
              result = this.visit(node.children[0], value);
              for (i = 1; i < node.children.length; i++) {
                  result = this.visit(node.children[1], result);
                  if (result === null) {
                      return null;
                  }
              }
              return result;
            case "IndexExpression":
              left = this.visit(node.children[0], value);
              right = this.visit(node.children[1], left);
              return right;
            case "Index":
              if (!isArray(value)) {
                return null;
              }
              var index = node.value;
              if (index < 0) {
                index = value.length + index;
              }
              result = value[index];
              if (result === undefined) {
                result = null;
              }
              return result;
            case "Slice":
              if (!isArray(value)) {
                return null;
              }
              var sliceParams = node.children.slice(0);
              var computed = this.computeSliceParams(value.length, sliceParams);
              var start = computed[0];
              var stop = computed[1];
              var step = computed[2];
              result = [];
              if (step > 0) {
                  for (i = start; i < stop; i += step) {
                      result.push(value[i]);
                  }
              } else {
                  for (i = start; i > stop; i += step) {
                      result.push(value[i]);
                  }
              }
              return result;
            case "Projection":
              // Evaluate left child.
              var base = this.visit(node.children[0], value);
              if (!isArray(base)) {
                return null;
              }
              collected = [];
              for (i = 0; i < base.length; i++) {
                current = this.visit(node.children[1], base[i]);
                if (current !== null) {
                  collected.push(current);
                }
              }
              return collected;
            case "ValueProjection":
              // Evaluate left child.
              base = this.visit(node.children[0], value);
              if (!isObject(base)) {
                return null;
              }
              collected = [];
              var values = objValues(base);
              for (i = 0; i < values.length; i++) {
                current = this.visit(node.children[1], values[i]);
                if (current !== null) {
                  collected.push(current);
                }
              }
              return collected;
            case "FilterProjection":
              base = this.visit(node.children[0], value);
              if (!isArray(base)) {
                return null;
              }
              var filtered = [];
              var finalResults = [];
              for (i = 0; i < base.length; i++) {
                matched = this.visit(node.children[2], base[i]);
                if (!isFalse(matched)) {
                  filtered.push(base[i]);
                }
              }
              for (var j = 0; j < filtered.length; j++) {
                current = this.visit(node.children[1], filtered[j]);
                if (current !== null) {
                  finalResults.push(current);
                }
              }
              return finalResults;
            case "Comparator":
              first = this.visit(node.children[0], value);
              second = this.visit(node.children[1], value);
              switch(node.name) {
                case TOK_EQ:
                  result = strictDeepEqual(first, second);
                  break;
                case TOK_NE:
                  result = !strictDeepEqual(first, second);
                  break;
                case TOK_GT:
                  result = first > second;
                  break;
                case TOK_GTE:
                  result = first >= second;
                  break;
                case TOK_LT:
                  result = first < second;
                  break;
                case TOK_LTE:
                  result = first <= second;
                  break;
                default:
                  throw new Error("Unknown comparator: " + node.name);
              }
              return result;
            case TOK_FLATTEN:
              var original = this.visit(node.children[0], value);
              if (!isArray(original)) {
                return null;
              }
              var merged = [];
              for (i = 0; i < original.length; i++) {
                current = original[i];
                if (isArray(current)) {
                  merged.push.apply(merged, current);
                } else {
                  merged.push(current);
                }
              }
              return merged;
            case "Identity":
              return value;
            case "MultiSelectList":
              if (value === null) {
                return null;
              }
              collected = [];
              for (i = 0; i < node.children.length; i++) {
                  collected.push(this.visit(node.children[i], value));
              }
              return collected;
            case "MultiSelectHash":
              if (value === null) {
                return null;
              }
              collected = {};
              var child;
              for (i = 0; i < node.children.length; i++) {
                child = node.children[i];
                collected[child.name] = this.visit(child.value, value);
              }
              return collected;
            case "OrExpression":
              matched = this.visit(node.children[0], value);
              if (isFalse(matched)) {
                  matched = this.visit(node.children[1], value);
              }
              return matched;
            case "AndExpression":
              first = this.visit(node.children[0], value);

              if (isFalse(first) === true) {
                return first;
              }
              return this.visit(node.children[1], value);
            case "NotExpression":
              first = this.visit(node.children[0], value);
              return isFalse(first);
            case "Literal":
              return node.value;
            case TOK_PIPE:
              left = this.visit(node.children[0], value);
              return this.visit(node.children[1], left);
            case TOK_CURRENT:
              return value;
            case "Function":
              var resolvedArgs = [];
              for (i = 0; i < node.children.length; i++) {
                  resolvedArgs.push(this.visit(node.children[i], value));
              }
              return this.runtime.callFunction(node.name, resolvedArgs);
            case "ExpressionReference":
              var refNode = node.children[0];
              // Tag the node with a specific attribute so the type
              // checker verify the type.
              refNode.jmespathType = TOK_EXPREF;
              return refNode;
            default:
              throw new Error("Unknown node type: " + node.type);
          }
      },

      computeSliceParams: function(arrayLength, sliceParams) {
        var start = sliceParams[0];
        var stop = sliceParams[1];
        var step = sliceParams[2];
        var computed = [null, null, null];
        if (step === null) {
          step = 1;
        } else if (step === 0) {
          var error = new Error("Invalid slice, step cannot be 0");
          error.name = "RuntimeError";
          throw error;
        }
        var stepValueNegative = step < 0 ? true : false;

        if (start === null) {
            start = stepValueNegative ? arrayLength - 1 : 0;
        } else {
            start = this.capSliceRange(arrayLength, start, step);
        }

        if (stop === null) {
            stop = stepValueNegative ? -1 : arrayLength;
        } else {
            stop = this.capSliceRange(arrayLength, stop, step);
        }
        computed[0] = start;
        computed[1] = stop;
        computed[2] = step;
        return computed;
      },

      capSliceRange: function(arrayLength, actualValue, step) {
          if (actualValue < 0) {
              actualValue += arrayLength;
              if (actualValue < 0) {
                  actualValue = step < 0 ? -1 : 0;
              }
          } else if (actualValue >= arrayLength) {
              actualValue = step < 0 ? arrayLength - 1 : arrayLength;
          }
          return actualValue;
      }

  };

  function Runtime(interpreter) {
    this._interpreter = interpreter;
    this.functionTable = {
        // name: [function, <signature>]
        // The <signature> can be:
        //
        // {
        //   args: [[type1, type2], [type1, type2]],
        //   variadic: true|false
        // }
        //
        // Each arg in the arg list is a list of valid types
        // (if the function is overloaded and supports multiple
        // types.  If the type is "any" then no type checking
        // occurs on the argument.  Variadic is optional
        // and if not provided is assumed to be false.
        abs: {_func: this._functionAbs, _signature: [{types: [TYPE_NUMBER]}]},
        avg: {_func: this._functionAvg, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},
        ceil: {_func: this._functionCeil, _signature: [{types: [TYPE_NUMBER]}]},
        contains: {
            _func: this._functionContains,
            _signature: [{types: [TYPE_STRING, TYPE_ARRAY]},
                        {types: [TYPE_ANY]}]},
        "ends_with": {
            _func: this._functionEndsWith,
            _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},
        floor: {_func: this._functionFloor, _signature: [{types: [TYPE_NUMBER]}]},
        length: {
            _func: this._functionLength,
            _signature: [{types: [TYPE_STRING, TYPE_ARRAY, TYPE_OBJECT]}]},
        map: {
            _func: this._functionMap,
            _signature: [{types: [TYPE_EXPREF]}, {types: [TYPE_ARRAY]}]},
        max: {
            _func: this._functionMax,
            _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},
        "merge": {
            _func: this._functionMerge,
            _signature: [{types: [TYPE_OBJECT], variadic: true}]
        },
        "max_by": {
          _func: this._functionMaxBy,
          _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]
        },
        sum: {_func: this._functionSum, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},
        "starts_with": {
            _func: this._functionStartsWith,
            _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},
        min: {
            _func: this._functionMin,
            _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},
        "min_by": {
          _func: this._functionMinBy,
          _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]
        },
        type: {_func: this._functionType, _signature: [{types: [TYPE_ANY]}]},
        keys: {_func: this._functionKeys, _signature: [{types: [TYPE_OBJECT]}]},
        values: {_func: this._functionValues, _signature: [{types: [TYPE_OBJECT]}]},
        sort: {_func: this._functionSort, _signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]},
        "sort_by": {
          _func: this._functionSortBy,
          _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]
        },
        join: {
            _func: this._functionJoin,
            _signature: [
                {types: [TYPE_STRING]},
                {types: [TYPE_ARRAY_STRING]}
            ]
        },
        reverse: {
            _func: this._functionReverse,
            _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}]},
        "to_array": {_func: this._functionToArray, _signature: [{types: [TYPE_ANY]}]},
        "to_string": {_func: this._functionToString, _signature: [{types: [TYPE_ANY]}]},
        "to_number": {_func: this._functionToNumber, _signature: [{types: [TYPE_ANY]}]},
        "not_null": {
            _func: this._functionNotNull,
            _signature: [{types: [TYPE_ANY], variadic: true}]
        }
    };
  }

  Runtime.prototype = {
    callFunction: function(name, resolvedArgs) {
      var functionEntry = this.functionTable[name];
      if (functionEntry === undefined) {
          throw new Error("Unknown function: " + name + "()");
      }
      this._validateArgs(name, resolvedArgs, functionEntry._signature);
      return functionEntry._func.call(this, resolvedArgs);
    },

    _validateArgs: function(name, args, signature) {
        // Validating the args requires validating
        // the correct arity and the correct type of each arg.
        // If the last argument is declared as variadic, then we need
        // a minimum number of args to be required.  Otherwise it has to
        // be an exact amount.
        var pluralized;
        if (signature[signature.length - 1].variadic) {
            if (args.length < signature.length) {
                pluralized = signature.length === 1 ? " argument" : " arguments";
                throw new Error("ArgumentError: " + name + "() " +
                                "takes at least" + signature.length + pluralized +
                                " but received " + args.length);
            }
        } else if (args.length !== signature.length) {
            pluralized = signature.length === 1 ? " argument" : " arguments";
            throw new Error("ArgumentError: " + name + "() " +
                            "takes " + signature.length + pluralized +
                            " but received " + args.length);
        }
        var currentSpec;
        var actualType;
        var typeMatched;
        for (var i = 0; i < signature.length; i++) {
            typeMatched = false;
            currentSpec = signature[i].types;
            actualType = this._getTypeName(args[i]);
            for (var j = 0; j < currentSpec.length; j++) {
                if (this._typeMatches(actualType, currentSpec[j], args[i])) {
                    typeMatched = true;
                    break;
                }
            }
            if (!typeMatched) {
                throw new Error("TypeError: " + name + "() " +
                                "expected argument " + (i + 1) +
                                " to be type " + currentSpec +
                                " but received type " + actualType +
                                " instead.");
            }
        }
    },

    _typeMatches: function(actual, expected, argValue) {
        if (expected === TYPE_ANY) {
            return true;
        }
        if (expected === TYPE_ARRAY_STRING ||
            expected === TYPE_ARRAY_NUMBER ||
            expected === TYPE_ARRAY) {
            // The expected type can either just be array,
            // or it can require a specific subtype (array of numbers).
            //
            // The simplest case is if "array" with no subtype is specified.
            if (expected === TYPE_ARRAY) {
                return actual === TYPE_ARRAY;
            } else if (actual === TYPE_ARRAY) {
                // Otherwise we need to check subtypes.
                // I think this has potential to be improved.
                var subtype;
                if (expected === TYPE_ARRAY_NUMBER) {
                  subtype = TYPE_NUMBER;
                } else if (expected === TYPE_ARRAY_STRING) {
                  subtype = TYPE_STRING;
                }
                for (var i = 0; i < argValue.length; i++) {
                    if (!this._typeMatches(
                            this._getTypeName(argValue[i]), subtype,
                                             argValue[i])) {
                        return false;
                    }
                }
                return true;
            }
        } else {
            return actual === expected;
        }
    },
    _getTypeName: function(obj) {
        switch (Object.prototype.toString.call(obj)) {
            case "[object String]":
              return TYPE_STRING;
            case "[object Number]":
              return TYPE_NUMBER;
            case "[object Array]":
              return TYPE_ARRAY;
            case "[object Boolean]":
              return TYPE_BOOLEAN;
            case "[object Null]":
              return TYPE_NULL;
            case "[object Object]":
              // Check if it's an expref.  If it has, it's been
              // tagged with a jmespathType attr of 'Expref';
              if (obj.jmespathType === TOK_EXPREF) {
                return TYPE_EXPREF;
              } else {
                return TYPE_OBJECT;
              }
        }
    },

    _functionStartsWith: function(resolvedArgs) {
        return resolvedArgs[0].lastIndexOf(resolvedArgs[1]) === 0;
    },

    _functionEndsWith: function(resolvedArgs) {
        var searchStr = resolvedArgs[0];
        var suffix = resolvedArgs[1];
        return searchStr.indexOf(suffix, searchStr.length - suffix.length) !== -1;
    },

    _functionReverse: function(resolvedArgs) {
        var typeName = this._getTypeName(resolvedArgs[0]);
        if (typeName === TYPE_STRING) {
          var originalStr = resolvedArgs[0];
          var reversedStr = "";
          for (var i = originalStr.length - 1; i >= 0; i--) {
              reversedStr += originalStr[i];
          }
          return reversedStr;
        } else {
          var reversedArray = resolvedArgs[0].slice(0);
          reversedArray.reverse();
          return reversedArray;
        }
    },

    _functionAbs: function(resolvedArgs) {
      return Math.abs(resolvedArgs[0]);
    },

    _functionCeil: function(resolvedArgs) {
        return Math.ceil(resolvedArgs[0]);
    },

    _functionAvg: function(resolvedArgs) {
        var sum = 0;
        var inputArray = resolvedArgs[0];
        for (var i = 0; i < inputArray.length; i++) {
            sum += inputArray[i];
        }
        return sum / inputArray.length;
    },

    _functionContains: function(resolvedArgs) {
        return resolvedArgs[0].indexOf(resolvedArgs[1]) >= 0;
    },

    _functionFloor: function(resolvedArgs) {
        return Math.floor(resolvedArgs[0]);
    },

    _functionLength: function(resolvedArgs) {
       if (!isObject(resolvedArgs[0])) {
         return resolvedArgs[0].length;
       } else {
         // As far as I can tell, there's no way to get the length
         // of an object without O(n) iteration through the object.
         return Object.keys(resolvedArgs[0]).length;
       }
    },

    _functionMap: function(resolvedArgs) {
      var mapped = [];
      var interpreter = this._interpreter;
      var exprefNode = resolvedArgs[0];
      var elements = resolvedArgs[1];
      for (var i = 0; i < elements.length; i++) {
          mapped.push(interpreter.visit(exprefNode, elements[i]));
      }
      return mapped;
    },

    _functionMerge: function(resolvedArgs) {
      var merged = {};
      for (var i = 0; i < resolvedArgs.length; i++) {
        var current = resolvedArgs[i];
        for (var key in current) {
          merged[key] = current[key];
        }
      }
      return merged;
    },

    _functionMax: function(resolvedArgs) {
      if (resolvedArgs[0].length > 0) {
        var typeName = this._getTypeName(resolvedArgs[0][0]);
        if (typeName === TYPE_NUMBER) {
          return Math.max.apply(Math, resolvedArgs[0]);
        } else {
          var elements = resolvedArgs[0];
          var maxElement = elements[0];
          for (var i = 1; i < elements.length; i++) {
              if (maxElement.localeCompare(elements[i]) < 0) {
                  maxElement = elements[i];
              }
          }
          return maxElement;
        }
      } else {
          return null;
      }
    },

    _functionMin: function(resolvedArgs) {
      if (resolvedArgs[0].length > 0) {
        var typeName = this._getTypeName(resolvedArgs[0][0]);
        if (typeName === TYPE_NUMBER) {
          return Math.min.apply(Math, resolvedArgs[0]);
        } else {
          var elements = resolvedArgs[0];
          var minElement = elements[0];
          for (var i = 1; i < elements.length; i++) {
              if (elements[i].localeCompare(minElement) < 0) {
                  minElement = elements[i];
              }
          }
          return minElement;
        }
      } else {
        return null;
      }
    },

    _functionSum: function(resolvedArgs) {
      var sum = 0;
      var listToSum = resolvedArgs[0];
      for (var i = 0; i < listToSum.length; i++) {
        sum += listToSum[i];
      }
      return sum;
    },

    _functionType: function(resolvedArgs) {
        switch (this._getTypeName(resolvedArgs[0])) {
          case TYPE_NUMBER:
            return "number";
          case TYPE_STRING:
            return "string";
          case TYPE_ARRAY:
            return "array";
          case TYPE_OBJECT:
            return "object";
          case TYPE_BOOLEAN:
            return "boolean";
          case TYPE_EXPREF:
            return "expref";
          case TYPE_NULL:
            return "null";
        }
    },

    _functionKeys: function(resolvedArgs) {
        return Object.keys(resolvedArgs[0]);
    },

    _functionValues: function(resolvedArgs) {
        var obj = resolvedArgs[0];
        var keys = Object.keys(obj);
        var values = [];
        for (var i = 0; i < keys.length; i++) {
            values.push(obj[keys[i]]);
        }
        return values;
    },

    _functionJoin: function(resolvedArgs) {
        var joinChar = resolvedArgs[0];
        var listJoin = resolvedArgs[1];
        return listJoin.join(joinChar);
    },

    _functionToArray: function(resolvedArgs) {
        if (this._getTypeName(resolvedArgs[0]) === TYPE_ARRAY) {
            return resolvedArgs[0];
        } else {
            return [resolvedArgs[0]];
        }
    },

    _functionToString: function(resolvedArgs) {
        if (this._getTypeName(resolvedArgs[0]) === TYPE_STRING) {
            return resolvedArgs[0];
        } else {
            return JSON.stringify(resolvedArgs[0]);
        }
    },

    _functionToNumber: function(resolvedArgs) {
        var typeName = this._getTypeName(resolvedArgs[0]);
        var convertedValue;
        if (typeName === TYPE_NUMBER) {
            return resolvedArgs[0];
        } else if (typeName === TYPE_STRING) {
            convertedValue = +resolvedArgs[0];
            if (!isNaN(convertedValue)) {
                return convertedValue;
            }
        }
        return null;
    },

    _functionNotNull: function(resolvedArgs) {
        for (var i = 0; i < resolvedArgs.length; i++) {
            if (this._getTypeName(resolvedArgs[i]) !== TYPE_NULL) {
                return resolvedArgs[i];
            }
        }
        return null;
    },

    _functionSort: function(resolvedArgs) {
        var sortedArray = resolvedArgs[0].slice(0);
        sortedArray.sort();
        return sortedArray;
    },

    _functionSortBy: function(resolvedArgs) {
        var sortedArray = resolvedArgs[0].slice(0);
        if (sortedArray.length === 0) {
            return sortedArray;
        }
        var interpreter = this._interpreter;
        var exprefNode = resolvedArgs[1];
        var requiredType = this._getTypeName(
            interpreter.visit(exprefNode, sortedArray[0]));
        if ([TYPE_NUMBER, TYPE_STRING].indexOf(requiredType) < 0) {
            throw new Error("TypeError");
        }
        var that = this;
        // In order to get a stable sort out of an unstable
        // sort algorithm, we decorate/sort/undecorate (DSU)
        // by creating a new list of [index, element] pairs.
        // In the cmp function, if the evaluated elements are
        // equal, then the index will be used as the tiebreaker.
        // After the decorated list has been sorted, it will be
        // undecorated to extract the original elements.
        var decorated = [];
        for (var i = 0; i < sortedArray.length; i++) {
          decorated.push([i, sortedArray[i]]);
        }
        decorated.sort(function(a, b) {
          var exprA = interpreter.visit(exprefNode, a[1]);
          var exprB = interpreter.visit(exprefNode, b[1]);
          if (that._getTypeName(exprA) !== requiredType) {
              throw new Error(
                  "TypeError: expected " + requiredType + ", received " +
                  that._getTypeName(exprA));
          } else if (that._getTypeName(exprB) !== requiredType) {
              throw new Error(
                  "TypeError: expected " + requiredType + ", received " +
                  that._getTypeName(exprB));
          }
          if (exprA > exprB) {
            return 1;
          } else if (exprA < exprB) {
            return -1;
          } else {
            // If they're equal compare the items by their
            // order to maintain relative order of equal keys
            // (i.e. to get a stable sort).
            return a[0] - b[0];
          }
        });
        // Undecorate: extract out the original list elements.
        for (var j = 0; j < decorated.length; j++) {
          sortedArray[j] = decorated[j][1];
        }
        return sortedArray;
    },

    _functionMaxBy: function(resolvedArgs) {
      var exprefNode = resolvedArgs[1];
      var resolvedArray = resolvedArgs[0];
      var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);
      var maxNumber = -Infinity;
      var maxRecord;
      var current;
      for (var i = 0; i < resolvedArray.length; i++) {
        current = keyFunction(resolvedArray[i]);
        if (current > maxNumber) {
          maxNumber = current;
          maxRecord = resolvedArray[i];
        }
      }
      return maxRecord;
    },

    _functionMinBy: function(resolvedArgs) {
      var exprefNode = resolvedArgs[1];
      var resolvedArray = resolvedArgs[0];
      var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);
      var minNumber = Infinity;
      var minRecord;
      var current;
      for (var i = 0; i < resolvedArray.length; i++) {
        current = keyFunction(resolvedArray[i]);
        if (current < minNumber) {
          minNumber = current;
          minRecord = resolvedArray[i];
        }
      }
      return minRecord;
    },

    createKeyFunction: function(exprefNode, allowedTypes) {
      var that = this;
      var interpreter = this._interpreter;
      var keyFunc = function(x) {
        var current = interpreter.visit(exprefNode, x);
        if (allowedTypes.indexOf(that._getTypeName(current)) < 0) {
          var msg = "TypeError: expected one of " + allowedTypes +
                    ", received " + that._getTypeName(current);
          throw new Error(msg);
        }
        return current;
      };
      return keyFunc;
    }

  };

  function compile(stream) {
    var parser = new Parser();
    var ast = parser.parse(stream);
    return ast;
  }

  function tokenize(stream) {
      var lexer = new Lexer();
      return lexer.tokenize(stream);
  }

  function search(data, expression) {
      var parser = new Parser();
      // This needs to be improved.  Both the interpreter and runtime depend on
      // each other.  The runtime needs the interpreter to support exprefs.
      // There's likely a clean way to avoid the cyclic dependency.
      var runtime = new Runtime();
      var interpreter = new TreeInterpreter(runtime);
      runtime._interpreter = interpreter;
      var node = parser.parse(expression);
      return interpreter.search(node, data);
  }

  exports.tokenize = tokenize;
  exports.compile = compile;
  exports.search = search;
  exports.strictDeepEqual = strictDeepEqual;
})(typeof exports === "undefined" ? this.jmespath = {} : exports);

},{}],313:[function(require,module,exports){
var getNative = require('./_getNative'),
    root = require('./_root');

/* Built-in method references that are verified to be native. */
var DataView = getNative(root, 'DataView');

module.exports = DataView;

},{"./_getNative":377,"./_root":414}],314:[function(require,module,exports){
var hashClear = require('./_hashClear'),
    hashDelete = require('./_hashDelete'),
    hashGet = require('./_hashGet'),
    hashHas = require('./_hashHas'),
    hashSet = require('./_hashSet');

/**
 * Creates a hash object.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */
function Hash(entries) {
  var index = -1,
      length = entries == null ? 0 : entries.length;

  this.clear();
  while (++index < length) {
    var entry = entries[index];
    this.set(entry[0], entry[1]);
  }
}

// Add methods to `Hash`.
Hash.prototype.clear = hashClear;
Hash.prototype['delete'] = hashDelete;
Hash.prototype.get = hashGet;
Hash.prototype.has = hashHas;
Hash.prototype.set = hashSet;

module.exports = Hash;

},{"./_hashClear":383,"./_hashDelete":384,"./_hashGet":385,"./_hashHas":386,"./_hashSet":387}],315:[function(require,module,exports){
var listCacheClear = require('./_listCacheClear'),
    listCacheDelete = require('./_listCacheDelete'),
    listCacheGet = require('./_listCacheGet'),
    listCacheHas = require('./_listCacheHas'),
    listCacheSet = require('./_listCacheSet');

/**
 * Creates an list cache object.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */
function ListCache(entries) {
  var index = -1,
      length = entries == null ? 0 : entries.length;

  this.clear();
  while (++index < length) {
    var entry = entries[index];
    this.set(entry[0], entry[1]);
  }
}

// Add methods to `ListCache`.
ListCache.prototype.clear = listCacheClear;
ListCache.prototype['delete'] = listCacheDelete;
ListCache.prototype.get = listCacheGet;
ListCache.prototype.has = listCacheHas;
ListCache.prototype.set = listCacheSet;

module.exports = ListCache;

},{"./_listCacheClear":395,"./_listCacheDelete":396,"./_listCacheGet":397,"./_listCacheHas":398,"./_listCacheSet":399}],316:[function(require,module,exports){
var getNative = require('./_getNative'),
    root = require('./_root');

/* Built-in method references that are verified to be native. */
var Map = getNative(root, 'Map');

module.exports = Map;

},{"./_getNative":377,"./_root":414}],317:[function(require,module,exports){
var mapCacheClear = require('./_mapCacheClear'),
    mapCacheDelete = require('./_mapCacheDelete'),
    mapCacheGet = require('./_mapCacheGet'),
    mapCacheHas = require('./_mapCacheHas'),
    mapCacheSet = require('./_mapCacheSet');

/**
 * Creates a map cache object to store key-value pairs.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */
function MapCache(entries) {
  var index = -1,
      length = entries == null ? 0 : entries.length;

  this.clear();
  while (++index < length) {
    var entry = entries[index];
    this.set(entry[0], entry[1]);
  }
}

// Add methods to `MapCache`.
MapCache.prototype.clear = mapCacheClear;
MapCache.prototype['delete'] = mapCacheDelete;
MapCache.prototype.get = mapCacheGet;
MapCache.prototype.has = mapCacheHas;
MapCache.prototype.set = mapCacheSet;

module.exports = MapCache;

},{"./_mapCacheClear":400,"./_mapCacheDelete":401,"./_mapCacheGet":402,"./_mapCacheHas":403,"./_mapCacheSet":404}],318:[function(require,module,exports){
var getNative = require('./_getNative'),
    root = require('./_root');

/* Built-in method references that are verified to be native. */
var Promise = getNative(root, 'Promise');

module.exports = Promise;

},{"./_getNative":377,"./_root":414}],319:[function(require,module,exports){
var getNative = require('./_getNative'),
    root = require('./_root');

/* Built-in method references that are verified to be native. */
var Set = getNative(root, 'Set');

module.exports = Set;

},{"./_getNative":377,"./_root":414}],320:[function(require,module,exports){
var MapCache = require('./_MapCache'),
    setCacheAdd = require('./_setCacheAdd'),
    setCacheHas = require('./_setCacheHas');

/**
 *
 * Creates an array cache object to store unique values.
 *
 * @private
 * @constructor
 * @param {Array} [values] The values to cache.
 */
function SetCache(values) {
  var index = -1,
      length = values == null ? 0 : values.length;

  this.__data__ = new MapCache;
  while (++index < length) {
    this.add(values[index]);
  }
}

// Add methods to `SetCache`.
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
SetCache.prototype.has = setCacheHas;

module.exports = SetCache;

},{"./_MapCache":317,"./_setCacheAdd":415,"./_setCacheHas":416}],321:[function(require,module,exports){
var ListCache = require('./_ListCache'),
    stackClear = require('./_stackClear'),
    stackDelete = require('./_stackDelete'),
    stackGet = require('./_stackGet'),
    stackHas = require('./_stackHas'),
    stackSet = require('./_stackSet');

/**
 * Creates a stack cache object to store key-value pairs.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */
function Stack(entries) {
  var data = this.__data__ = new ListCache(entries);
  this.size = data.size;
}

// Add methods to `Stack`.
Stack.prototype.clear = stackClear;
Stack.prototype['delete'] = stackDelete;
Stack.prototype.get = stackGet;
Stack.prototype.has = stackHas;
Stack.prototype.set = stackSet;

module.exports = Stack;

},{"./_ListCache":315,"./_stackClear":420,"./_stackDelete":421,"./_stackGet":422,"./_stackHas":423,"./_stackSet":424}],322:[function(require,module,exports){
var root = require('./_root');

/** Built-in value references. */
var Symbol = root.Symbol;

module.exports = Symbol;

},{"./_root":414}],323:[function(require,module,exports){
var root = require('./_root');

/** Built-in value references. */
var Uint8Array = root.Uint8Array;

module.exports = Uint8Array;

},{"./_root":414}],324:[function(require,module,exports){
var getNative = require('./_getNative'),
    root = require('./_root');

/* Built-in method references that are verified to be native. */
var WeakMap = getNative(root, 'WeakMap');

module.exports = WeakMap;

},{"./_getNative":377,"./_root":414}],325:[function(require,module,exports){
/**
 * A faster alternative to `Function#apply`, this function invokes `func`
 * with the `this` binding of `thisArg` and the arguments of `args`.
 *
 * @private
 * @param {Function} func The function to invoke.
 * @param {*} thisArg The `this` binding of `func`.
 * @param {Array} args The arguments to invoke `func` with.
 * @returns {*} Returns the result of `func`.
 */
function apply(func, thisArg, args) {
  switch (args.length) {
    case 0: return func.call(thisArg);
    case 1: return func.call(thisArg, args[0]);
    case 2: return func.call(thisArg, args[0], args[1]);
    case 3: return func.call(thisArg, args[0], args[1], args[2]);
  }
  return func.apply(thisArg, args);
}

module.exports = apply;

},{}],326:[function(require,module,exports){
/**
 * A specialized version of `_.every` for arrays without support for
 * iteratee shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} predicate The function invoked per iteration.
 * @returns {boolean} Returns `true` if all elements pass the predicate check,
 *  else `false`.
 */
function arrayEvery(array, predicate) {
  var index = -1,
      length = array == null ? 0 : array.length;

  while (++index < length) {
    if (!predicate(array[index], index, array)) {
      return false;
    }
  }
  return true;
}

module.exports = arrayEvery;

},{}],327:[function(require,module,exports){
/**
 * A specialized version of `_.filter` for arrays without support for
 * iteratee shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} predicate The function invoked per iteration.
 * @returns {Array} Returns the new filtered array.
 */
function arrayFilter(array, predicate) {
  var index = -1,
      length = array == null ? 0 : array.length,
      resIndex = 0,
      result = [];

  while (++index < length) {
    var value = array[index];
    if (predicate(value, index, array)) {
      result[resIndex++] = value;
    }
  }
  return result;
}

module.exports = arrayFilter;

},{}],328:[function(require,module,exports){
var baseTimes = require('./_baseTimes'),
    isArguments = require('./isArguments'),
    isArray = require('./isArray'),
    isBuffer = require('./isBuffer'),
    isIndex = require('./_isIndex'),
    isTypedArray = require('./isTypedArray');

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
 * Creates an array of the enumerable property names of the array-like `value`.
 *
 * @private
 * @param {*} value The value to query.
 * @param {boolean} inherited Specify returning inherited property names.
 * @returns {Array} Returns the array of property names.
 */
function arrayLikeKeys(value, inherited) {
  var isArr = isArray(value),
      isArg = !isArr && isArguments(value),
      isBuff = !isArr && !isArg && isBuffer(value),
      isType = !isArr && !isArg && !isBuff && isTypedArray(value),
      skipIndexes = isArr || isArg || isBuff || isType,
      result = skipIndexes ? baseTimes(value.length, String) : [],
      length = result.length;

  for (var key in value) {
    if ((inherited || hasOwnProperty.call(value, key)) &&
        !(skipIndexes && (
           // Safari 9 has enumerable `arguments.length` in strict mode.
           key == 'length' ||
           // Node.js 0.10 has enumerable non-index properties on buffers.
           (isBuff && (key == 'offset' || key == 'parent')) ||
           // PhantomJS 2 has enumerable non-index properties on typed arrays.
           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
           // Skip index properties.
           isIndex(key, length)
        ))) {
      result.push(key);
    }
  }
  return result;
}

module.exports = arrayLikeKeys;

},{"./_baseTimes":359,"./_isIndex":388,"./isArguments":436,"./isArray":437,"./isBuffer":439,"./isTypedArray":446}],329:[function(require,module,exports){
/**
 * A specialized version of `_.map` for arrays without support for iteratee
 * shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Array} Returns the new mapped array.
 */
function arrayMap(array, iteratee) {
  var index = -1,
      length = array == null ? 0 : array.length,
      result = Array(length);

  while (++index < length) {
    result[index] = iteratee(array[index], index, array);
  }
  return result;
}

module.exports = arrayMap;

},{}],330:[function(require,module,exports){
/**
 * Appends the elements of `values` to `array`.
 *
 * @private
 * @param {Array} array The array to modify.
 * @param {Array} values The values to append.
 * @returns {Array} Returns `array`.
 */
function arrayPush(array, values) {
  var index = -1,
      length = values.length,
      offset = array.length;

  while (++index < length) {
    array[offset + index] = values[index];
  }
  return array;
}

module.exports = arrayPush;

},{}],331:[function(require,module,exports){
/**
 * A specialized version of `_.some` for arrays without support for iteratee
 * shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} predicate The function invoked per iteration.
 * @returns {boolean} Returns `true` if any element passes the predicate check,
 *  else `false`.
 */
function arraySome(array, predicate) {
  var index = -1,
      length = array == null ? 0 : array.length;

  while (++index < length) {
    if (predicate(array[index], index, array)) {
      return true;
    }
  }
  return false;
}

module.exports = arraySome;

},{}],332:[function(require,module,exports){
var baseAssignValue = require('./_baseAssignValue'),
    eq = require('./eq');

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
 * Assigns `value` to `key` of `object` if the existing value is not equivalent
 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 * for equality comparisons.
 *
 * @private
 * @param {Object} object The object to modify.
 * @param {string} key The key of the property to assign.
 * @param {*} value The value to assign.
 */
function assignValue(object, key, value) {
  var objValue = object[key];
  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
      (value === undefined && !(key in object))) {
    baseAssignValue(object, key, value);
  }
}

module.exports = assignValue;

},{"./_baseAssignValue":335,"./eq":431}],333:[function(require,module,exports){
var eq = require('./eq');

/**
 * Gets the index at which the `key` is found in `array` of key-value pairs.
 *
 * @private
 * @param {Array} array The array to inspect.
 * @param {*} key The key to search for.
 * @returns {number} Returns the index of the matched value, else `-1`.
 */
function assocIndexOf(array, key) {
  var length = array.length;
  while (length--) {
    if (eq(array[length][0], key)) {
      return length;
    }
  }
  return -1;
}

module.exports = assocIndexOf;

},{"./eq":431}],334:[function(require,module,exports){
var copyObject = require('./_copyObject'),
    keys = require('./keys');

/**
 * The base implementation of `_.assign` without support for multiple sources
 * or `customizer` functions.
 *
 * @private
 * @param {Object} object The destination object.
 * @param {Object} source The source object.
 * @returns {Object} Returns `object`.
 */
function baseAssign(object, source) {
  return object && copyObject(source, keys(source), object);
}

module.exports = baseAssign;

},{"./_copyObject":364,"./keys":447}],335:[function(require,module,exports){
var defineProperty = require('./_defineProperty');

/**
 * The base implementation of `assignValue` and `assignMergeValue` without
 * value checks.
 *
 * @private
 * @param {Object} object The object to modify.
 * @param {string} key The key of the property to assign.
 * @param {*} value The value to assign.
 */
function baseAssignValue(object, key, value) {
  if (key == '__proto__' && defineProperty) {
    defineProperty(object, key, {
      'configurable': true,
      'enumerable': true,
      'value': value,
      'writable': true
    });
  } else {
    object[key] = value;
  }
}

module.exports = baseAssignValue;

},{"./_defineProperty":369}],336:[function(require,module,exports){
var isObject = require('./isObject');

/** Built-in value references. */
var objectCreate = Object.create;

/**
 * The base implementation of `_.create` without support for assigning
 * properties to the created object.
 *
 * @private
 * @param {Object} proto The object to inherit from.
 * @returns {Object} Returns the new object.
 */
var baseCreate = (function() {
  function object() {}
  return function(proto) {
    if (!isObject(proto)) {
      return {};
    }
    if (objectCreate) {
      return objectCreate(proto);
    }
    object.prototype = proto;
    var result = new object;
    object.prototype = undefined;
    return result;
  };
}());

module.exports = baseCreate;

},{"./isObject":443}],337:[function(require,module,exports){
var baseForOwn = require('./_baseForOwn'),
    createBaseEach = require('./_createBaseEach');

/**
 * The base implementation of `_.forEach` without support for iteratee shorthands.
 *
 * @private
 * @param {Array|Object} collection The collection to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Array|Object} Returns `collection`.
 */
var baseEach = createBaseEach(baseForOwn);

module.exports = baseEach;

},{"./_baseForOwn":340,"./_createBaseEach":367}],338:[function(require,module,exports){
var baseEach = require('./_baseEach');

/**
 * The base implementation of `_.every` without support for iteratee shorthands.
 *
 * @private
 * @param {Array|Object} collection The collection to iterate over.
 * @param {Function} predicate The function invoked per iteration.
 * @returns {boolean} Returns `true` if all elements pass the predicate check,
 *  else `false`
 */
function baseEvery(collection, predicate) {
  var result = true;
  baseEach(collection, function(value, index, collection) {
    result = !!predicate(value, index, collection);
    return result;
  });
  return result;
}

module.exports = baseEvery;

},{"./_baseEach":337}],339:[function(require,module,exports){
var createBaseFor = require('./_createBaseFor');

/**
 * The base implementation of `baseForOwn` which iterates over `object`
 * properties returned by `keysFunc` and invokes `iteratee` for each property.
 * Iteratee functions may exit iteration early by explicitly returning `false`.
 *
 * @private
 * @param {Object} object The object to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @param {Function} keysFunc The function to get the keys of `object`.
 * @returns {Object} Returns `object`.
 */
var baseFor = createBaseFor();

module.exports = baseFor;

},{"./_createBaseFor":368}],340:[function(require,module,exports){
var baseFor = require('./_baseFor'),
    keys = require('./keys');

/**
 * The base implementation of `_.forOwn` without support for iteratee shorthands.
 *
 * @private
 * @param {Object} object The object to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Object} Returns `object`.
 */
function baseForOwn(object, iteratee) {
  return object && baseFor(object, iteratee, keys);
}

module.exports = baseForOwn;

},{"./_baseFor":339,"./keys":447}],341:[function(require,module,exports){
var castPath = require('./_castPath'),
    toKey = require('./_toKey');

/**
 * The base implementation of `_.get` without support for default values.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {Array|string} path The path of the property to get.
 * @returns {*} Returns the resolved value.
 */
function baseGet(object, path) {
  path = castPath(path, object);

  var index = 0,
      length = path.length;

  while (object != null && index < length) {
    object = object[toKey(path[index++])];
  }
  return (index && index == length) ? object : undefined;
}

module.exports = baseGet;

},{"./_castPath":363,"./_toKey":426}],342:[function(require,module,exports){
var arrayPush = require('./_arrayPush'),
    isArray = require('./isArray');

/**
 * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
 * `keysFunc` and `symbolsFunc` to get the enumerable property names and
 * symbols of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {Function} keysFunc The function to get the keys of `object`.
 * @param {Function} symbolsFunc The function to get the symbols of `object`.
 * @returns {Array} Returns the array of property names and symbols.
 */
function baseGetAllKeys(object, keysFunc, symbolsFunc) {
  var result = keysFunc(object);
  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
}

module.exports = baseGetAllKeys;

},{"./_arrayPush":330,"./isArray":437}],343:[function(require,module,exports){
var Symbol = require('./_Symbol'),
    getRawTag = require('./_getRawTag'),
    objectToString = require('./_objectToString');

/** `Object#toString` result references. */
var nullTag = '[object Null]',
    undefinedTag = '[object Undefined]';

/** Built-in value references. */
var symToStringTag = Symbol ? Symbol.toStringTag : undefined;

/**
 * The base implementation of `getTag` without fallbacks for buggy environments.
 *
 * @private
 * @param {*} value The value to query.
 * @returns {string} Returns the `toStringTag`.
 */
function baseGetTag(value) {
  if (value == null) {
    return value === undefined ? undefinedTag : nullTag;
  }
  return (symToStringTag && symToStringTag in Object(value))
    ? getRawTag(value)
    : objectToString(value);
}

module.exports = baseGetTag;

},{"./_Symbol":322,"./_getRawTag":378,"./_objectToString":411}],344:[function(require,module,exports){
/**
 * The base implementation of `_.hasIn` without support for deep paths.
 *
 * @private
 * @param {Object} [object] The object to query.
 * @param {Array|string} key The key to check.
 * @returns {boolean} Returns `true` if `key` exists, else `false`.
 */
function baseHasIn(object, key) {
  return object != null && key in Object(object);
}

module.exports = baseHasIn;

},{}],345:[function(require,module,exports){
var baseGetTag = require('./_baseGetTag'),
    isObjectLike = require('./isObjectLike');

/** `Object#toString` result references. */
var argsTag = '[object Arguments]';

/**
 * The base implementation of `_.isArguments`.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
 */
function baseIsArguments(value) {
  return isObjectLike(value) && baseGetTag(value) == argsTag;
}

module.exports = baseIsArguments;

},{"./_baseGetTag":343,"./isObjectLike":444}],346:[function(require,module,exports){
var baseIsEqualDeep = require('./_baseIsEqualDeep'),
    isObjectLike = require('./isObjectLike');

/**
 * The base implementation of `_.isEqual` which supports partial comparisons
 * and tracks traversed objects.
 *
 * @private
 * @param {*} value The value to compare.
 * @param {*} other The other value to compare.
 * @param {boolean} bitmask The bitmask flags.
 *  1 - Unordered comparison
 *  2 - Partial comparison
 * @param {Function} [customizer] The function to customize comparisons.
 * @param {Object} [stack] Tracks traversed `value` and `other` objects.
 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 */
function baseIsEqual(value, other, bitmask, customizer, stack) {
  if (value === other) {
    return true;
  }
  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
    return value !== value && other !== other;
  }
  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
}

module.exports = baseIsEqual;

},{"./_baseIsEqualDeep":347,"./isObjectLike":444}],347:[function(require,module,exports){
var Stack = require('./_Stack'),
    equalArrays = require('./_equalArrays'),
    equalByTag = require('./_equalByTag'),
    equalObjects = require('./_equalObjects'),
    getTag = require('./_getTag'),
    isArray = require('./isArray'),
    isBuffer = require('./isBuffer'),
    isTypedArray = require('./isTypedArray');

/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG = 1;

/** `Object#toString` result references. */
var argsTag = '[object Arguments]',
    arrayTag = '[object Array]',
    objectTag = '[object Object]';

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
 * A specialized version of `baseIsEqual` for arrays and objects which performs
 * deep comparisons and tracks traversed objects enabling objects with circular
 * references to be compared.
 *
 * @private
 * @param {Object} object The object to compare.
 * @param {Object} other The other object to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} [stack] Tracks traversed `object` and `other` objects.
 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 */
function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
  var objIsArr = isArray(object),
      othIsArr = isArray(other),
      objTag = objIsArr ? arrayTag : getTag(object),
      othTag = othIsArr ? arrayTag : getTag(other);

  objTag = objTag == argsTag ? objectTag : objTag;
  othTag = othTag == argsTag ? objectTag : othTag;

  var objIsObj = objTag == objectTag,
      othIsObj = othTag == objectTag,
      isSameTag = objTag == othTag;

  if (isSameTag && isBuffer(object)) {
    if (!isBuffer(other)) {
      return false;
    }
    objIsArr = true;
    objIsObj = false;
  }
  if (isSameTag && !objIsObj) {
    stack || (stack = new Stack);
    return (objIsArr || isTypedArray(object))
      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
  }
  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');

    if (objIsWrapped || othIsWrapped) {
      var objUnwrapped = objIsWrapped ? object.value() : object,
          othUnwrapped = othIsWrapped ? other.value() : other;

      stack || (stack = new Stack);
      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
    }
  }
  if (!isSameTag) {
    return false;
  }
  stack || (stack = new Stack);
  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
}

module.exports = baseIsEqualDeep;

},{"./_Stack":321,"./_equalArrays":370,"./_equalByTag":371,"./_equalObjects":372,"./_getTag":380,"./isArray":437,"./isBuffer":439,"./isTypedArray":446}],348:[function(require,module,exports){
var Stack = require('./_Stack'),
    baseIsEqual = require('./_baseIsEqual');

/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG = 1,
    COMPARE_UNORDERED_FLAG = 2;

/**
 * The base implementation of `_.isMatch` without support for iteratee shorthands.
 *
 * @private
 * @param {Object} object The object to inspect.
 * @param {Object} source The object of property values to match.
 * @param {Array} matchData The property names, values, and compare flags to match.
 * @param {Function} [customizer] The function to customize comparisons.
 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
 */
function baseIsMatch(object, source, matchData, customizer) {
  var index = matchData.length,
      length = index,
      noCustomizer = !customizer;

  if (object == null) {
    return !length;
  }
  object = Object(object);
  while (index--) {
    var data = matchData[index];
    if ((noCustomizer && data[2])
          ? data[1] !== object[data[0]]
          : !(data[0] in object)
        ) {
      return false;
    }
  }
  while (++index < length) {
    data = matchData[index];
    var key = data[0],
        objValue = object[key],
        srcValue = data[1];

    if (noCustomizer && data[2]) {
      if (objValue === undefined && !(key in object)) {
        return false;
      }
    } else {
      var stack = new Stack;
      if (customizer) {
        var result = customizer(objValue, srcValue, key, object, source, stack);
      }
      if (!(result === undefined
            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
            : result
          )) {
        return false;
      }
    }
  }
  return true;
}

module.exports = baseIsMatch;

},{"./_Stack":321,"./_baseIsEqual":346}],349:[function(require,module,exports){
var isFunction = require('./isFunction'),
    isMasked = require('./_isMasked'),
    isObject = require('./isObject'),
    toSource = require('./_toSource');

/**
 * Used to match `RegExp`
 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
 */
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;

/** Used to detect host constructors (Safari). */
var reIsHostCtor = /^\[object .+?Constructor\]$/;

/** Used for built-in method references. */
var funcProto = Function.prototype,
    objectProto = Object.prototype;

/** Used to resolve the decompiled source of functions. */
var funcToString = funcProto.toString;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/** Used to detect if a method is native. */
var reIsNative = RegExp('^' +
  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
);

/**
 * The base implementation of `_.isNative` without bad shim checks.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a native function,
 *  else `false`.
 */
function baseIsNative(value) {
  if (!isObject(value) || isMasked(value)) {
    return false;
  }
  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
  return pattern.test(toSource(value));
}

module.exports = baseIsNative;

},{"./_isMasked":392,"./_toSource":427,"./isFunction":441,"./isObject":443}],350:[function(require,module,exports){
var baseGetTag = require('./_baseGetTag'),
    isLength = require('./isLength'),
    isObjectLike = require('./isObjectLike');

/** `Object#toString` result references. */
var argsTag = '[object Arguments]',
    arrayTag = '[object Array]',
    boolTag = '[object Boolean]',
    dateTag = '[object Date]',
    errorTag = '[object Error]',
    funcTag = '[object Function]',
    mapTag = '[object Map]',
    numberTag = '[object Number]',
    objectTag = '[object Object]',
    regexpTag = '[object RegExp]',
    setTag = '[object Set]',
    stringTag = '[object String]',
    weakMapTag = '[object WeakMap]';

var arrayBufferTag = '[object ArrayBuffer]',
    dataViewTag = '[object DataView]',
    float32Tag = '[object Float32Array]',
    float64Tag = '[object Float64Array]',
    int8Tag = '[object Int8Array]',
    int16Tag = '[object Int16Array]',
    int32Tag = '[object Int32Array]',
    uint8Tag = '[object Uint8Array]',
    uint8ClampedTag = '[object Uint8ClampedArray]',
    uint16Tag = '[object Uint16Array]',
    uint32Tag = '[object Uint32Array]';

/** Used to identify `toStringTag` values of typed arrays. */
var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
typedArrayTags[errorTag] = typedArrayTags[funcTag] =
typedArrayTags[mapTag] = typedArrayTags[numberTag] =
typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
typedArrayTags[setTag] = typedArrayTags[stringTag] =
typedArrayTags[weakMapTag] = false;

/**
 * The base implementation of `_.isTypedArray` without Node.js optimizations.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
 */
function baseIsTypedArray(value) {
  return isObjectLike(value) &&
    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
}

module.exports = baseIsTypedArray;

},{"./_baseGetTag":343,"./isLength":442,"./isObjectLike":444}],351:[function(require,module,exports){
var baseMatches = require('./_baseMatches'),
    baseMatchesProperty = require('./_baseMatchesProperty'),
    identity = require('./identity'),
    isArray = require('./isArray'),
    property = require('./property');

/**
 * The base implementation of `_.iteratee`.
 *
 * @private
 * @param {*} [value=_.identity] The value to convert to an iteratee.
 * @returns {Function} Returns the iteratee.
 */
function baseIteratee(value) {
  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
  if (typeof value == 'function') {
    return value;
  }
  if (value == null) {
    return identity;
  }
  if (typeof value == 'object') {
    return isArray(value)
      ? baseMatchesProperty(value[0], value[1])
      : baseMatches(value);
  }
  return property(value);
}

module.exports = baseIteratee;

},{"./_baseMatches":353,"./_baseMatchesProperty":354,"./identity":435,"./isArray":437,"./property":449}],352:[function(require,module,exports){
var isPrototype = require('./_isPrototype'),
    nativeKeys = require('./_nativeKeys');

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
 *
 * @private
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of property names.
 */
function baseKeys(object) {
  if (!isPrototype(object)) {
    return nativeKeys(object);
  }
  var result = [];
  for (var key in Object(object)) {
    if (hasOwnProperty.call(object, key) && key != 'constructor') {
      result.push(key);
    }
  }
  return result;
}

module.exports = baseKeys;

},{"./_isPrototype":393,"./_nativeKeys":409}],353:[function(require,module,exports){
var baseIsMatch = require('./_baseIsMatch'),
    getMatchData = require('./_getMatchData'),
    matchesStrictComparable = require('./_matchesStrictComparable');

/**
 * The base implementation of `_.matches` which doesn't clone `source`.
 *
 * @private
 * @param {Object} source The object of property values to match.
 * @returns {Function} Returns the new spec function.
 */
function baseMatches(source) {
  var matchData = getMatchData(source);
  if (matchData.length == 1 && matchData[0][2]) {
    return matchesStrictComparable(matchData[0][0], matchData[0][1]);
  }
  return function(object) {
    return object === source || baseIsMatch(object, source, matchData);
  };
}

module.exports = baseMatches;

},{"./_baseIsMatch":348,"./_getMatchData":376,"./_matchesStrictComparable":406}],354:[function(require,module,exports){
var baseIsEqual = require('./_baseIsEqual'),
    get = require('./get'),
    hasIn = require('./hasIn'),
    isKey = require('./_isKey'),
    isStrictComparable = require('./_isStrictComparable'),
    matchesStrictComparable = require('./_matchesStrictComparable'),
    toKey = require('./_toKey');

/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG = 1,
    COMPARE_UNORDERED_FLAG = 2;

/**
 * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
 *
 * @private
 * @param {string} path The path of the property to get.
 * @param {*} srcValue The value to match.
 * @returns {Function} Returns the new spec function.
 */
function baseMatchesProperty(path, srcValue) {
  if (isKey(path) && isStrictComparable(srcValue)) {
    return matchesStrictComparable(toKey(path), srcValue);
  }
  return function(object) {
    var objValue = get(object, path);
    return (objValue === undefined && objValue === srcValue)
      ? hasIn(object, path)
      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
  };
}

module.exports = baseMatchesProperty;

},{"./_baseIsEqual":346,"./_isKey":390,"./_isStrictComparable":394,"./_matchesStrictComparable":406,"./_toKey":426,"./get":433,"./hasIn":434}],355:[function(require,module,exports){
/**
 * The base implementation of `_.property` without support for deep paths.
 *
 * @private
 * @param {string} key The key of the property to get.
 * @returns {Function} Returns the new accessor function.
 */
function baseProperty(key) {
  return function(object) {
    return object == null ? undefined : object[key];
  };
}

module.exports = baseProperty;

},{}],356:[function(require,module,exports){
var baseGet = require('./_baseGet');

/**
 * A specialized version of `baseProperty` which supports deep paths.
 *
 * @private
 * @param {Array|string} path The path of the property to get.
 * @returns {Function} Returns the new accessor function.
 */
function basePropertyDeep(path) {
  return function(object) {
    return baseGet(object, path);
  };
}

module.exports = basePropertyDeep;

},{"./_baseGet":341}],357:[function(require,module,exports){
var identity = require('./identity'),
    overRest = require('./_overRest'),
    setToString = require('./_setToString');

/**
 * The base implementation of `_.rest` which doesn't validate or coerce arguments.
 *
 * @private
 * @param {Function} func The function to apply a rest parameter to.
 * @param {number} [start=func.length-1] The start position of the rest parameter.
 * @returns {Function} Returns the new function.
 */
function baseRest(func, start) {
  return setToString(overRest(func, start, identity), func + '');
}

module.exports = baseRest;

},{"./_overRest":413,"./_setToString":418,"./identity":435}],358:[function(require,module,exports){
var constant = require('./constant'),
    defineProperty = require('./_defineProperty'),
    identity = require('./identity');

/**
 * The base implementation of `setToString` without support for hot loop shorting.
 *
 * @private
 * @param {Function} func The function to modify.
 * @param {Function} string The `toString` result.
 * @returns {Function} Returns `func`.
 */
var baseSetToString = !defineProperty ? identity : function(func, string) {
  return defineProperty(func, 'toString', {
    'configurable': true,
    'enumerable': false,
    'value': constant(string),
    'writable': true
  });
};

module.exports = baseSetToString;

},{"./_defineProperty":369,"./constant":429,"./identity":435}],359:[function(require,module,exports){
/**
 * The base implementation of `_.times` without support for iteratee shorthands
 * or max array length checks.
 *
 * @private
 * @param {number} n The number of times to invoke `iteratee`.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Array} Returns the array of results.
 */
function baseTimes(n, iteratee) {
  var index = -1,
      result = Array(n);

  while (++index < n) {
    result[index] = iteratee(index);
  }
  return result;
}

module.exports = baseTimes;

},{}],360:[function(require,module,exports){
var Symbol = require('./_Symbol'),
    arrayMap = require('./_arrayMap'),
    isArray = require('./isArray'),
    isSymbol = require('./isSymbol');

/** Used as references for various `Number` constants. */
var INFINITY = 1 / 0;

/** Used to convert symbols to primitives and strings. */
var symbolProto = Symbol ? Symbol.prototype : undefined,
    symbolToString = symbolProto ? symbolProto.toString : undefined;

/**
 * The base implementation of `_.toString` which doesn't convert nullish
 * values to empty strings.
 *
 * @private
 * @param {*} value The value to process.
 * @returns {string} Returns the string.
 */
function baseToString(value) {
  // Exit early for strings to avoid a performance hit in some environments.
  if (typeof value == 'string') {
    return value;
  }
  if (isArray(value)) {
    // Recursively convert values (susceptible to call stack limits).
    return arrayMap(value, baseToString) + '';
  }
  if (isSymbol(value)) {
    return symbolToString ? symbolToString.call(value) : '';
  }
  var result = (value + '');
  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
}

module.exports = baseToString;

},{"./_Symbol":322,"./_arrayMap":329,"./isArray":437,"./isSymbol":445}],361:[function(require,module,exports){
/**
 * The base implementation of `_.unary` without support for storing metadata.
 *
 * @private
 * @param {Function} func The function to cap arguments for.
 * @returns {Function} Returns the new capped function.
 */
function baseUnary(func) {
  return function(value) {
    return func(value);
  };
}

module.exports = baseUnary;

},{}],362:[function(require,module,exports){
/**
 * Checks if a `cache` value for `key` exists.
 *
 * @private
 * @param {Object} cache The cache to query.
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */
function cacheHas(cache, key) {
  return cache.has(key);
}

module.exports = cacheHas;

},{}],363:[function(require,module,exports){
var isArray = require('./isArray'),
    isKey = require('./_isKey'),
    stringToPath = require('./_stringToPath'),
    toString = require('./toString');

/**
 * Casts `value` to a path array if it's not one.
 *
 * @private
 * @param {*} value The value to inspect.
 * @param {Object} [object] The object to query keys on.
 * @returns {Array} Returns the cast property path array.
 */
function castPath(value, object) {
  if (isArray(value)) {
    return value;
  }
  return isKey(value, object) ? [value] : stringToPath(toString(value));
}

module.exports = castPath;

},{"./_isKey":390,"./_stringToPath":425,"./isArray":437,"./toString":452}],364:[function(require,module,exports){
var assignValue = require('./_assignValue'),
    baseAssignValue = require('./_baseAssignValue');

/**
 * Copies properties of `source` to `object`.
 *
 * @private
 * @param {Object} source The object to copy properties from.
 * @param {Array} props The property identifiers to copy.
 * @param {Object} [object={}] The object to copy properties to.
 * @param {Function} [customizer] The function to customize copied values.
 * @returns {Object} Returns `object`.
 */
function copyObject(source, props, object, customizer) {
  var isNew = !object;
  object || (object = {});

  var index = -1,
      length = props.length;

  while (++index < length) {
    var key = props[index];

    var newValue = customizer
      ? customizer(object[key], source[key], key, object, source)
      : undefined;

    if (newValue === undefined) {
      newValue = source[key];
    }
    if (isNew) {
      baseAssignValue(object, key, newValue);
    } else {
      assignValue(object, key, newValue);
    }
  }
  return object;
}

module.exports = copyObject;

},{"./_assignValue":332,"./_baseAssignValue":335}],365:[function(require,module,exports){
var root = require('./_root');

/** Used to detect overreaching core-js shims. */
var coreJsData = root['__core-js_shared__'];

module.exports = coreJsData;

},{"./_root":414}],366:[function(require,module,exports){
var baseRest = require('./_baseRest'),
    isIterateeCall = require('./_isIterateeCall');

/**
 * Creates a function like `_.assign`.
 *
 * @private
 * @param {Function} assigner The function to assign values.
 * @returns {Function} Returns the new assigner function.
 */
function createAssigner(assigner) {
  return baseRest(function(object, sources) {
    var index = -1,
        length = sources.length,
        customizer = length > 1 ? sources[length - 1] : undefined,
        guard = length > 2 ? sources[2] : undefined;

    customizer = (assigner.length > 3 && typeof customizer == 'function')
      ? (length--, customizer)
      : undefined;

    if (guard && isIterateeCall(sources[0], sources[1], guard)) {
      customizer = length < 3 ? undefined : customizer;
      length = 1;
    }
    object = Object(object);
    while (++index < length) {
      var source = sources[index];
      if (source) {
        assigner(object, source, index, customizer);
      }
    }
    return object;
  });
}

module.exports = createAssigner;

},{"./_baseRest":357,"./_isIterateeCall":389}],367:[function(require,module,exports){
var isArrayLike = require('./isArrayLike');

/**
 * Creates a `baseEach` or `baseEachRight` function.
 *
 * @private
 * @param {Function} eachFunc The function to iterate over a collection.
 * @param {boolean} [fromRight] Specify iterating from right to left.
 * @returns {Function} Returns the new base function.
 */
function createBaseEach(eachFunc, fromRight) {
  return function(collection, iteratee) {
    if (collection == null) {
      return collection;
    }
    if (!isArrayLike(collection)) {
      return eachFunc(collection, iteratee);
    }
    var length = collection.length,
        index = fromRight ? length : -1,
        iterable = Object(collection);

    while ((fromRight ? index-- : ++index < length)) {
      if (iteratee(iterable[index], index, iterable) === false) {
        break;
      }
    }
    return collection;
  };
}

module.exports = createBaseEach;

},{"./isArrayLike":438}],368:[function(require,module,exports){
/**
 * Creates a base function for methods like `_.forIn` and `_.forOwn`.
 *
 * @private
 * @param {boolean} [fromRight] Specify iterating from right to left.
 * @returns {Function} Returns the new base function.
 */
function createBaseFor(fromRight) {
  return function(object, iteratee, keysFunc) {
    var index = -1,
        iterable = Object(object),
        props = keysFunc(object),
        length = props.length;

    while (length--) {
      var key = props[fromRight ? length : ++index];
      if (iteratee(iterable[key], key, iterable) === false) {
        break;
      }
    }
    return object;
  };
}

module.exports = createBaseFor;

},{}],369:[function(require,module,exports){
var getNative = require('./_getNative');

var defineProperty = (function() {
  try {
    var func = getNative(Object, 'defineProperty');
    func({}, '', {});
    return func;
  } catch (e) {}
}());

module.exports = defineProperty;

},{"./_getNative":377}],370:[function(require,module,exports){
var SetCache = require('./_SetCache'),
    arraySome = require('./_arraySome'),
    cacheHas = require('./_cacheHas');

/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG = 1,
    COMPARE_UNORDERED_FLAG = 2;

/**
 * A specialized version of `baseIsEqualDeep` for arrays with support for
 * partial deep comparisons.
 *
 * @private
 * @param {Array} array The array to compare.
 * @param {Array} other The other array to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} stack Tracks traversed `array` and `other` objects.
 * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
 */
function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
      arrLength = array.length,
      othLength = other.length;

  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
    return false;
  }
  // Assume cyclic values are equal.
  var stacked = stack.get(array);
  if (stacked && stack.get(other)) {
    return stacked == other;
  }
  var index = -1,
      result = true,
      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;

  stack.set(array, other);
  stack.set(other, array);

  // Ignore non-index properties.
  while (++index < arrLength) {
    var arrValue = array[index],
        othValue = other[index];

    if (customizer) {
      var compared = isPartial
        ? customizer(othValue, arrValue, index, other, array, stack)
        : customizer(arrValue, othValue, index, array, other, stack);
    }
    if (compared !== undefined) {
      if (compared) {
        continue;
      }
      result = false;
      break;
    }
    // Recursively compare arrays (susceptible to call stack limits).
    if (seen) {
      if (!arraySome(other, function(othValue, othIndex) {
            if (!cacheHas(seen, othIndex) &&
                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
              return seen.push(othIndex);
            }
          })) {
        result = false;
        break;
      }
    } else if (!(
          arrValue === othValue ||
            equalFunc(arrValue, othValue, bitmask, customizer, stack)
        )) {
      result = false;
      break;
    }
  }
  stack['delete'](array);
  stack['delete'](other);
  return result;
}

module.exports = equalArrays;

},{"./_SetCache":320,"./_arraySome":331,"./_cacheHas":362}],371:[function(require,module,exports){
var Symbol = require('./_Symbol'),
    Uint8Array = require('./_Uint8Array'),
    eq = require('./eq'),
    equalArrays = require('./_equalArrays'),
    mapToArray = require('./_mapToArray'),
    setToArray = require('./_setToArray');

/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG = 1,
    COMPARE_UNORDERED_FLAG = 2;

/** `Object#toString` result references. */
var boolTag = '[object Boolean]',
    dateTag = '[object Date]',
    errorTag = '[object Error]',
    mapTag = '[object Map]',
    numberTag = '[object Number]',
    regexpTag = '[object RegExp]',
    setTag = '[object Set]',
    stringTag = '[object String]',
    symbolTag = '[object Symbol]';

var arrayBufferTag = '[object ArrayBuffer]',
    dataViewTag = '[object DataView]';

/** Used to convert symbols to primitives and strings. */
var symbolProto = Symbol ? Symbol.prototype : undefined,
    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;

/**
 * A specialized version of `baseIsEqualDeep` for comparing objects of
 * the same `toStringTag`.
 *
 * **Note:** This function only supports comparing values with tags of
 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
 *
 * @private
 * @param {Object} object The object to compare.
 * @param {Object} other The other object to compare.
 * @param {string} tag The `toStringTag` of the objects to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} stack Tracks traversed `object` and `other` objects.
 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 */
function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
  switch (tag) {
    case dataViewTag:
      if ((object.byteLength != other.byteLength) ||
          (object.byteOffset != other.byteOffset)) {
        return false;
      }
      object = object.buffer;
      other = other.buffer;

    case arrayBufferTag:
      if ((object.byteLength != other.byteLength) ||
          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
        return false;
      }
      return true;

    case boolTag:
    case dateTag:
    case numberTag:
      // Coerce booleans to `1` or `0` and dates to milliseconds.
      // Invalid dates are coerced to `NaN`.
      return eq(+object, +other);

    case errorTag:
      return object.name == other.name && object.message == other.message;

    case regexpTag:
    case stringTag:
      // Coerce regexes to strings and treat strings, primitives and objects,
      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
      // for more details.
      return object == (other + '');

    case mapTag:
      var convert = mapToArray;

    case setTag:
      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
      convert || (convert = setToArray);

      if (object.size != other.size && !isPartial) {
        return false;
      }
      // Assume cyclic values are equal.
      var stacked = stack.get(object);
      if (stacked) {
        return stacked == other;
      }
      bitmask |= COMPARE_UNORDERED_FLAG;

      // Recursively compare objects (susceptible to call stack limits).
      stack.set(object, other);
      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
      stack['delete'](object);
      return result;

    case symbolTag:
      if (symbolValueOf) {
        return symbolValueOf.call(object) == symbolValueOf.call(other);
      }
  }
  return false;
}

module.exports = equalByTag;

},{"./_Symbol":322,"./_Uint8Array":323,"./_equalArrays":370,"./_mapToArray":405,"./_setToArray":417,"./eq":431}],372:[function(require,module,exports){
var getAllKeys = require('./_getAllKeys');

/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG = 1;

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
 * A specialized version of `baseIsEqualDeep` for objects with support for
 * partial deep comparisons.
 *
 * @private
 * @param {Object} object The object to compare.
 * @param {Object} other The other object to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} stack Tracks traversed `object` and `other` objects.
 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 */
function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
      objProps = getAllKeys(object),
      objLength = objProps.length,
      othProps = getAllKeys(other),
      othLength = othProps.length;

  if (objLength != othLength && !isPartial) {
    return false;
  }
  var index = objLength;
  while (index--) {
    var key = objProps[index];
    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
      return false;
    }
  }
  // Assume cyclic values are equal.
  var stacked = stack.get(object);
  if (stacked && stack.get(other)) {
    return stacked == other;
  }
  var result = true;
  stack.set(object, other);
  stack.set(other, object);

  var skipCtor = isPartial;
  while (++index < objLength) {
    key = objProps[index];
    var objValue = object[key],
        othValue = other[key];

    if (customizer) {
      var compared = isPartial
        ? customizer(othValue, objValue, key, other, object, stack)
        : customizer(objValue, othValue, key, object, other, stack);
    }
    // Recursively compare objects (susceptible to call stack limits).
    if (!(compared === undefined
          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
          : compared
        )) {
      result = false;
      break;
    }
    skipCtor || (skipCtor = key == 'constructor');
  }
  if (result && !skipCtor) {
    var objCtor = object.constructor,
        othCtor = other.constructor;

    // Non `Object` object instances with different constructors are not equal.
    if (objCtor != othCtor &&
        ('constructor' in object && 'constructor' in other) &&
        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
          typeof othCtor == 'function' && othCtor instanceof othCtor)) {
      result = false;
    }
  }
  stack['delete'](object);
  stack['delete'](other);
  return result;
}

module.exports = equalObjects;

},{"./_getAllKeys":374}],373:[function(require,module,exports){
(function (global){
/** Detect free variable `global` from Node.js. */
var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;

module.exports = freeGlobal;

}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{}],374:[function(require,module,exports){
var baseGetAllKeys = require('./_baseGetAllKeys'),
    getSymbols = require('./_getSymbols'),
    keys = require('./keys');

/**
 * Creates an array of own enumerable property names and symbols of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of property names and symbols.
 */
function getAllKeys(object) {
  return baseGetAllKeys(object, keys, getSymbols);
}

module.exports = getAllKeys;

},{"./_baseGetAllKeys":342,"./_getSymbols":379,"./keys":447}],375:[function(require,module,exports){
var isKeyable = require('./_isKeyable');

/**
 * Gets the data for `map`.
 *
 * @private
 * @param {Object} map The map to query.
 * @param {string} key The reference key.
 * @returns {*} Returns the map data.
 */
function getMapData(map, key) {
  var data = map.__data__;
  return isKeyable(key)
    ? data[typeof key == 'string' ? 'string' : 'hash']
    : data.map;
}

module.exports = getMapData;

},{"./_isKeyable":391}],376:[function(require,module,exports){
var isStrictComparable = require('./_isStrictComparable'),
    keys = require('./keys');

/**
 * Gets the property names, values, and compare flags of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @returns {Array} Returns the match data of `object`.
 */
function getMatchData(object) {
  var result = keys(object),
      length = result.length;

  while (length--) {
    var key = result[length],
        value = object[key];

    result[length] = [key, value, isStrictComparable(value)];
  }
  return result;
}

module.exports = getMatchData;

},{"./_isStrictComparable":394,"./keys":447}],377:[function(require,module,exports){
var baseIsNative = require('./_baseIsNative'),
    getValue = require('./_getValue');

/**
 * Gets the native function at `key` of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {string} key The key of the method to get.
 * @returns {*} Returns the function if it's native, else `undefined`.
 */
function getNative(object, key) {
  var value = getValue(object, key);
  return baseIsNative(value) ? value : undefined;
}

module.exports = getNative;

},{"./_baseIsNative":349,"./_getValue":381}],378:[function(require,module,exports){
var Symbol = require('./_Symbol');

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
 * Used to resolve the
 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
 * of values.
 */
var nativeObjectToString = objectProto.toString;

/** Built-in value references. */
var symToStringTag = Symbol ? Symbol.toStringTag : undefined;

/**
 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
 *
 * @private
 * @param {*} value The value to query.
 * @returns {string} Returns the raw `toStringTag`.
 */
function getRawTag(value) {
  var isOwn = hasOwnProperty.call(value, symToStringTag),
      tag = value[symToStringTag];

  try {
    value[symToStringTag] = undefined;
    var unmasked = true;
  } catch (e) {}

  var result = nativeObjectToString.call(value);
  if (unmasked) {
    if (isOwn) {
      value[symToStringTag] = tag;
    } else {
      delete value[symToStringTag];
    }
  }
  return result;
}

module.exports = getRawTag;

},{"./_Symbol":322}],379:[function(require,module,exports){
var arrayFilter = require('./_arrayFilter'),
    stubArray = require('./stubArray');

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Built-in value references. */
var propertyIsEnumerable = objectProto.propertyIsEnumerable;

/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeGetSymbols = Object.getOwnPropertySymbols;

/**
 * Creates an array of the own enumerable symbols of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of symbols.
 */
var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
  if (object == null) {
    return [];
  }
  object = Object(object);
  return arrayFilter(nativeGetSymbols(object), function(symbol) {
    return propertyIsEnumerable.call(object, symbol);
  });
};

module.exports = getSymbols;

},{"./_arrayFilter":327,"./stubArray":450}],380:[function(require,module,exports){
var DataView = require('./_DataView'),
    Map = require('./_Map'),
    Promise = require('./_Promise'),
    Set = require('./_Set'),
    WeakMap = require('./_WeakMap'),
    baseGetTag = require('./_baseGetTag'),
    toSource = require('./_toSource');

/** `Object#toString` result references. */
var mapTag = '[object Map]',
    objectTag = '[object Object]',
    promiseTag = '[object Promise]',
    setTag = '[object Set]',
    weakMapTag = '[object WeakMap]';

var dataViewTag = '[object DataView]';

/** Used to detect maps, sets, and weakmaps. */
var dataViewCtorString = toSource(DataView),
    mapCtorString = toSource(Map),
    promiseCtorString = toSource(Promise),
    setCtorString = toSource(Set),
    weakMapCtorString = toSource(WeakMap);

/**
 * Gets the `toStringTag` of `value`.
 *
 * @private
 * @param {*} value The value to query.
 * @returns {string} Returns the `toStringTag`.
 */
var getTag = baseGetTag;

// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
    (Map && getTag(new Map) != mapTag) ||
    (Promise && getTag(Promise.resolve()) != promiseTag) ||
    (Set && getTag(new Set) != setTag) ||
    (WeakMap && getTag(new WeakMap) != weakMapTag)) {
  getTag = function(value) {
    var result = baseGetTag(value),
        Ctor = result == objectTag ? value.constructor : undefined,
        ctorString = Ctor ? toSource(Ctor) : '';

    if (ctorString) {
      switch (ctorString) {
        case dataViewCtorString: return dataViewTag;
        case mapCtorString: return mapTag;
        case promiseCtorString: return promiseTag;
        case setCtorString: return setTag;
        case weakMapCtorString: return weakMapTag;
      }
    }
    return result;
  };
}

module.exports = getTag;

},{"./_DataView":313,"./_Map":316,"./_Promise":318,"./_Set":319,"./_WeakMap":324,"./_baseGetTag":343,"./_toSource":427}],381:[function(require,module,exports){
/**
 * Gets the value at `key` of `object`.
 *
 * @private
 * @param {Object} [object] The object to query.
 * @param {string} key The key of the property to get.
 * @returns {*} Returns the property value.
 */
function getValue(object, key) {
  return object == null ? undefined : object[key];
}

module.exports = getValue;

},{}],382:[function(require,module,exports){
var castPath = require('./_castPath'),
    isArguments = require('./isArguments'),
    isArray = require('./isArray'),
    isIndex = require('./_isIndex'),
    isLength = require('./isLength'),
    toKey = require('./_toKey');

/**
 * Checks if `path` exists on `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {Array|string} path The path to check.
 * @param {Function} hasFunc The function to check properties.
 * @returns {boolean} Returns `true` if `path` exists, else `false`.
 */
function hasPath(object, path, hasFunc) {
  path = castPath(path, object);

  var index = -1,
      length = path.length,
      result = false;

  while (++index < length) {
    var key = toKey(path[index]);
    if (!(result = object != null && hasFunc(object, key))) {
      break;
    }
    object = object[key];
  }
  if (result || ++index != length) {
    return result;
  }
  length = object == null ? 0 : object.length;
  return !!length && isLength(length) && isIndex(key, length) &&
    (isArray(object) || isArguments(object));
}

module.exports = hasPath;

},{"./_castPath":363,"./_isIndex":388,"./_toKey":426,"./isArguments":436,"./isArray":437,"./isLength":442}],383:[function(require,module,exports){
var nativeCreate = require('./_nativeCreate');

/**
 * Removes all key-value entries from the hash.
 *
 * @private
 * @name clear
 * @memberOf Hash
 */
function hashClear() {
  this.__data__ = nativeCreate ? nativeCreate(null) : {};
  this.size = 0;
}

module.exports = hashClear;

},{"./_nativeCreate":408}],384:[function(require,module,exports){
/**
 * Removes `key` and its value from the hash.
 *
 * @private
 * @name delete
 * @memberOf Hash
 * @param {Object} hash The hash to modify.
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */
function hashDelete(key) {
  var result = this.has(key) && delete this.__data__[key];
  this.size -= result ? 1 : 0;
  return result;
}

module.exports = hashDelete;

},{}],385:[function(require,module,exports){
var nativeCreate = require('./_nativeCreate');

/** Used to stand-in for `undefined` hash values. */
var HASH_UNDEFINED = '__lodash_hash_undefined__';

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
 * Gets the hash value for `key`.
 *
 * @private
 * @name get
 * @memberOf Hash
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */
function hashGet(key) {
  var data = this.__data__;
  if (nativeCreate) {
    var result = data[key];
    return result === HASH_UNDEFINED ? undefined : result;
  }
  return hasOwnProperty.call(data, key) ? data[key] : undefined;
}

module.exports = hashGet;

},{"./_nativeCreate":408}],386:[function(require,module,exports){
var nativeCreate = require('./_nativeCreate');

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
 * Checks if a hash value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf Hash
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */
function hashHas(key) {
  var data = this.__data__;
  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
}

module.exports = hashHas;

},{"./_nativeCreate":408}],387:[function(require,module,exports){
var nativeCreate = require('./_nativeCreate');

/** Used to stand-in for `undefined` hash values. */
var HASH_UNDEFINED = '__lodash_hash_undefined__';

/**
 * Sets the hash `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf Hash
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the hash instance.
 */
function hashSet(key, value) {
  var data = this.__data__;
  this.size += this.has(key) ? 0 : 1;
  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
  return this;
}

module.exports = hashSet;

},{"./_nativeCreate":408}],388:[function(require,module,exports){
/** Used as references for various `Number` constants. */
var MAX_SAFE_INTEGER = 9007199254740991;

/** Used to detect unsigned integer values. */
var reIsUint = /^(?:0|[1-9]\d*)$/;

/**
 * Checks if `value` is a valid array-like index.
 *
 * @private
 * @param {*} value The value to check.
 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
 */
function isIndex(value, length) {
  length = length == null ? MAX_SAFE_INTEGER : length;
  return !!length &&
    (typeof value == 'number' || reIsUint.test(value)) &&
    (value > -1 && value % 1 == 0 && value < length);
}

module.exports = isIndex;

},{}],389:[function(require,module,exports){
var eq = require('./eq'),
    isArrayLike = require('./isArrayLike'),
    isIndex = require('./_isIndex'),
    isObject = require('./isObject');

/**
 * Checks if the given arguments are from an iteratee call.
 *
 * @private
 * @param {*} value The potential iteratee value argument.
 * @param {*} index The potential iteratee index or key argument.
 * @param {*} object The potential iteratee object argument.
 * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
 *  else `false`.
 */
function isIterateeCall(value, index, object) {
  if (!isObject(object)) {
    return false;
  }
  var type = typeof index;
  if (type == 'number'
        ? (isArrayLike(object) && isIndex(index, object.length))
        : (type == 'string' && index in object)
      ) {
    return eq(object[index], value);
  }
  return false;
}

module.exports = isIterateeCall;

},{"./_isIndex":388,"./eq":431,"./isArrayLike":438,"./isObject":443}],390:[function(require,module,exports){
var isArray = require('./isArray'),
    isSymbol = require('./isSymbol');

/** Used to match property names within property paths. */
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
    reIsPlainProp = /^\w*$/;

/**
 * Checks if `value` is a property name and not a property path.
 *
 * @private
 * @param {*} value The value to check.
 * @param {Object} [object] The object to query keys on.
 * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
 */
function isKey(value, object) {
  if (isArray(value)) {
    return false;
  }
  var type = typeof value;
  if (type == 'number' || type == 'symbol' || type == 'boolean' ||
      value == null || isSymbol(value)) {
    return true;
  }
  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
    (object != null && value in Object(object));
}

module.exports = isKey;

},{"./isArray":437,"./isSymbol":445}],391:[function(require,module,exports){
/**
 * Checks if `value` is suitable for use as unique object key.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
 */
function isKeyable(value) {
  var type = typeof value;
  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
    ? (value !== '__proto__')
    : (value === null);
}

module.exports = isKeyable;

},{}],392:[function(require,module,exports){
var coreJsData = require('./_coreJsData');

/** Used to detect methods masquerading as native. */
var maskSrcKey = (function() {
  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
  return uid ? ('Symbol(src)_1.' + uid) : '';
}());

/**
 * Checks if `func` has its source masked.
 *
 * @private
 * @param {Function} func The function to check.
 * @returns {boolean} Returns `true` if `func` is masked, else `false`.
 */
function isMasked(func) {
  return !!maskSrcKey && (maskSrcKey in func);
}

module.exports = isMasked;

},{"./_coreJsData":365}],393:[function(require,module,exports){
/** Used for built-in method references. */
var objectProto = Object.prototype;

/**
 * Checks if `value` is likely a prototype object.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
 */
function isPrototype(value) {
  var Ctor = value && value.constructor,
      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;

  return value === proto;
}

module.exports = isPrototype;

},{}],394:[function(require,module,exports){
var isObject = require('./isObject');

/**
 * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` if suitable for strict
 *  equality comparisons, else `false`.
 */
function isStrictComparable(value) {
  return value === value && !isObject(value);
}

module.exports = isStrictComparable;

},{"./isObject":443}],395:[function(require,module,exports){
/**
 * Removes all key-value entries from the list cache.
 *
 * @private
 * @name clear
 * @memberOf ListCache
 */
function listCacheClear() {
  this.__data__ = [];
  this.size = 0;
}

module.exports = listCacheClear;

},{}],396:[function(require,module,exports){
var assocIndexOf = require('./_assocIndexOf');

/** Used for built-in method references. */
var arrayProto = Array.prototype;

/** Built-in value references. */
var splice = arrayProto.splice;

/**
 * Removes `key` and its value from the list cache.
 *
 * @private
 * @name delete
 * @memberOf ListCache
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */
function listCacheDelete(key) {
  var data = this.__data__,
      index = assocIndexOf(data, key);

  if (index < 0) {
    return false;
  }
  var lastIndex = data.length - 1;
  if (index == lastIndex) {
    data.pop();
  } else {
    splice.call(data, index, 1);
  }
  --this.size;
  return true;
}

module.exports = listCacheDelete;

},{"./_assocIndexOf":333}],397:[function(require,module,exports){
var assocIndexOf = require('./_assocIndexOf');

/**
 * Gets the list cache value for `key`.
 *
 * @private
 * @name get
 * @memberOf ListCache
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */
function listCacheGet(key) {
  var data = this.__data__,
      index = assocIndexOf(data, key);

  return index < 0 ? undefined : data[index][1];
}

module.exports = listCacheGet;

},{"./_assocIndexOf":333}],398:[function(require,module,exports){
var assocIndexOf = require('./_assocIndexOf');

/**
 * Checks if a list cache value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf ListCache
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */
function listCacheHas(key) {
  return assocIndexOf(this.__data__, key) > -1;
}

module.exports = listCacheHas;

},{"./_assocIndexOf":333}],399:[function(require,module,exports){
var assocIndexOf = require('./_assocIndexOf');

/**
 * Sets the list cache `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf ListCache
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the list cache instance.
 */
function listCacheSet(key, value) {
  var data = this.__data__,
      index = assocIndexOf(data, key);

  if (index < 0) {
    ++this.size;
    data.push([key, value]);
  } else {
    data[index][1] = value;
  }
  return this;
}

module.exports = listCacheSet;

},{"./_assocIndexOf":333}],400:[function(require,module,exports){
var Hash = require('./_Hash'),
    ListCache = require('./_ListCache'),
    Map = require('./_Map');

/**
 * Removes all key-value entries from the map.
 *
 * @private
 * @name clear
 * @memberOf MapCache
 */
function mapCacheClear() {
  this.size = 0;
  this.__data__ = {
    'hash': new Hash,
    'map': new (Map || ListCache),
    'string': new Hash
  };
}

module.exports = mapCacheClear;

},{"./_Hash":314,"./_ListCache":315,"./_Map":316}],401:[function(require,module,exports){
var getMapData = require('./_getMapData');

/**
 * Removes `key` and its value from the map.
 *
 * @private
 * @name delete
 * @memberOf MapCache
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */
function mapCacheDelete(key) {
  var result = getMapData(this, key)['delete'](key);
  this.size -= result ? 1 : 0;
  return result;
}

module.exports = mapCacheDelete;

},{"./_getMapData":375}],402:[function(require,module,exports){
var getMapData = require('./_getMapData');

/**
 * Gets the map value for `key`.
 *
 * @private
 * @name get
 * @memberOf MapCache
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */
function mapCacheGet(key) {
  return getMapData(this, key).get(key);
}

module.exports = mapCacheGet;

},{"./_getMapData":375}],403:[function(require,module,exports){
var getMapData = require('./_getMapData');

/**
 * Checks if a map value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf MapCache
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */
function mapCacheHas(key) {
  return getMapData(this, key).has(key);
}

module.exports = mapCacheHas;

},{"./_getMapData":375}],404:[function(require,module,exports){
var getMapData = require('./_getMapData');

/**
 * Sets the map `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf MapCache
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the map cache instance.
 */
function mapCacheSet(key, value) {
  var data = getMapData(this, key),
      size = data.size;

  data.set(key, value);
  this.size += data.size == size ? 0 : 1;
  return this;
}

module.exports = mapCacheSet;

},{"./_getMapData":375}],405:[function(require,module,exports){
/**
 * Converts `map` to its key-value pairs.
 *
 * @private
 * @param {Object} map The map to convert.
 * @returns {Array} Returns the key-value pairs.
 */
function mapToArray(map) {
  var index = -1,
      result = Array(map.size);

  map.forEach(function(value, key) {
    result[++index] = [key, value];
  });
  return result;
}

module.exports = mapToArray;

},{}],406:[function(require,module,exports){
/**
 * A specialized version of `matchesProperty` for source values suitable
 * for strict equality comparisons, i.e. `===`.
 *
 * @private
 * @param {string} key The key of the property to get.
 * @param {*} srcValue The value to match.
 * @returns {Function} Returns the new spec function.
 */
function matchesStrictComparable(key, srcValue) {
  return function(object) {
    if (object == null) {
      return false;
    }
    return object[key] === srcValue &&
      (srcValue !== undefined || (key in Object(object)));
  };
}

module.exports = matchesStrictComparable;

},{}],407:[function(require,module,exports){
var memoize = require('./memoize');

/** Used as the maximum memoize cache size. */
var MAX_MEMOIZE_SIZE = 500;

/**
 * A specialized version of `_.memoize` which clears the memoized function's
 * cache when it exceeds `MAX_MEMOIZE_SIZE`.
 *
 * @private
 * @param {Function} func The function to have its output memoized.
 * @returns {Function} Returns the new memoized function.
 */
function memoizeCapped(func) {
  var result = memoize(func, function(key) {
    if (cache.size === MAX_MEMOIZE_SIZE) {
      cache.clear();
    }
    return key;
  });

  var cache = result.cache;
  return result;
}

module.exports = memoizeCapped;

},{"./memoize":448}],408:[function(require,module,exports){
var getNative = require('./_getNative');

/* Built-in method references that are verified to be native. */
var nativeCreate = getNative(Object, 'create');

module.exports = nativeCreate;

},{"./_getNative":377}],409:[function(require,module,exports){
var overArg = require('./_overArg');

/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeKeys = overArg(Object.keys, Object);

module.exports = nativeKeys;

},{"./_overArg":412}],410:[function(require,module,exports){
var freeGlobal = require('./_freeGlobal');

/** Detect free variable `exports`. */
var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;

/** Detect free variable `module`. */
var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;

/** Detect the popular CommonJS extension `module.exports`. */
var moduleExports = freeModule && freeModule.exports === freeExports;

/** Detect free variable `process` from Node.js. */
var freeProcess = moduleExports && freeGlobal.process;

/** Used to access faster Node.js helpers. */
var nodeUtil = (function() {
  try {
    return freeProcess && freeProcess.binding && freeProcess.binding('util');
  } catch (e) {}
}());

module.exports = nodeUtil;

},{"./_freeGlobal":373}],411:[function(require,module,exports){
/** Used for built-in method references. */
var objectProto = Object.prototype;

/**
 * Used to resolve the
 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
 * of values.
 */
var nativeObjectToString = objectProto.toString;

/**
 * Converts `value` to a string using `Object.prototype.toString`.
 *
 * @private
 * @param {*} value The value to convert.
 * @returns {string} Returns the converted string.
 */
function objectToString(value) {
  return nativeObjectToString.call(value);
}

module.exports = objectToString;

},{}],412:[function(require,module,exports){
/**
 * Creates a unary function that invokes `func` with its argument transformed.
 *
 * @private
 * @param {Function} func The function to wrap.
 * @param {Function} transform The argument transform.
 * @returns {Function} Returns the new function.
 */
function overArg(func, transform) {
  return function(arg) {
    return func(transform(arg));
  };
}

module.exports = overArg;

},{}],413:[function(require,module,exports){
var apply = require('./_apply');

/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeMax = Math.max;

/**
 * A specialized version of `baseRest` which transforms the rest array.
 *
 * @private
 * @param {Function} func The function to apply a rest parameter to.
 * @param {number} [start=func.length-1] The start position of the rest parameter.
 * @param {Function} transform The rest array transform.
 * @returns {Function} Returns the new function.
 */
function overRest(func, start, transform) {
  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
  return function() {
    var args = arguments,
        index = -1,
        length = nativeMax(args.length - start, 0),
        array = Array(length);

    while (++index < length) {
      array[index] = args[start + index];
    }
    index = -1;
    var otherArgs = Array(start + 1);
    while (++index < start) {
      otherArgs[index] = args[index];
    }
    otherArgs[start] = transform(array);
    return apply(func, this, otherArgs);
  };
}

module.exports = overRest;

},{"./_apply":325}],414:[function(require,module,exports){
var freeGlobal = require('./_freeGlobal');

/** Detect free variable `self`. */
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;

/** Used as a reference to the global object. */
var root = freeGlobal || freeSelf || Function('return this')();

module.exports = root;

},{"./_freeGlobal":373}],415:[function(require,module,exports){
/** Used to stand-in for `undefined` hash values. */
var HASH_UNDEFINED = '__lodash_hash_undefined__';

/**
 * Adds `value` to the array cache.
 *
 * @private
 * @name add
 * @memberOf SetCache
 * @alias push
 * @param {*} value The value to cache.
 * @returns {Object} Returns the cache instance.
 */
function setCacheAdd(value) {
  this.__data__.set(value, HASH_UNDEFINED);
  return this;
}

module.exports = setCacheAdd;

},{}],416:[function(require,module,exports){
/**
 * Checks if `value` is in the array cache.
 *
 * @private
 * @name has
 * @memberOf SetCache
 * @param {*} value The value to search for.
 * @returns {number} Returns `true` if `value` is found, else `false`.
 */
function setCacheHas(value) {
  return this.__data__.has(value);
}

module.exports = setCacheHas;

},{}],417:[function(require,module,exports){
/**
 * Converts `set` to an array of its values.
 *
 * @private
 * @param {Object} set The set to convert.
 * @returns {Array} Returns the values.
 */
function setToArray(set) {
  var index = -1,
      result = Array(set.size);

  set.forEach(function(value) {
    result[++index] = value;
  });
  return result;
}

module.exports = setToArray;

},{}],418:[function(require,module,exports){
var baseSetToString = require('./_baseSetToString'),
    shortOut = require('./_shortOut');

/**
 * Sets the `toString` method of `func` to return `string`.
 *
 * @private
 * @param {Function} func The function to modify.
 * @param {Function} string The `toString` result.
 * @returns {Function} Returns `func`.
 */
var setToString = shortOut(baseSetToString);

module.exports = setToString;

},{"./_baseSetToString":358,"./_shortOut":419}],419:[function(require,module,exports){
/** Used to detect hot functions by number of calls within a span of milliseconds. */
var HOT_COUNT = 800,
    HOT_SPAN = 16;

/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeNow = Date.now;

/**
 * Creates a function that'll short out and invoke `identity` instead
 * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
 * milliseconds.
 *
 * @private
 * @param {Function} func The function to restrict.
 * @returns {Function} Returns the new shortable function.
 */
function shortOut(func) {
  var count = 0,
      lastCalled = 0;

  return function() {
    var stamp = nativeNow(),
        remaining = HOT_SPAN - (stamp - lastCalled);

    lastCalled = stamp;
    if (remaining > 0) {
      if (++count >= HOT_COUNT) {
        return arguments[0];
      }
    } else {
      count = 0;
    }
    return func.apply(undefined, arguments);
  };
}

module.exports = shortOut;

},{}],420:[function(require,module,exports){
var ListCache = require('./_ListCache');

/**
 * Removes all key-value entries from the stack.
 *
 * @private
 * @name clear
 * @memberOf Stack
 */
function stackClear() {
  this.__data__ = new ListCache;
  this.size = 0;
}

module.exports = stackClear;

},{"./_ListCache":315}],421:[function(require,module,exports){
/**
 * Removes `key` and its value from the stack.
 *
 * @private
 * @name delete
 * @memberOf Stack
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */
function stackDelete(key) {
  var data = this.__data__,
      result = data['delete'](key);

  this.size = data.size;
  return result;
}

module.exports = stackDelete;

},{}],422:[function(require,module,exports){
/**
 * Gets the stack value for `key`.
 *
 * @private
 * @name get
 * @memberOf Stack
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */
function stackGet(key) {
  return this.__data__.get(key);
}

module.exports = stackGet;

},{}],423:[function(require,module,exports){
/**
 * Checks if a stack value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf Stack
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */
function stackHas(key) {
  return this.__data__.has(key);
}

module.exports = stackHas;

},{}],424:[function(require,module,exports){
var ListCache = require('./_ListCache'),
    Map = require('./_Map'),
    MapCache = require('./_MapCache');

/** Used as the size to enable large array optimizations. */
var LARGE_ARRAY_SIZE = 200;

/**
 * Sets the stack `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf Stack
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the stack cache instance.
 */
function stackSet(key, value) {
  var data = this.__data__;
  if (data instanceof ListCache) {
    var pairs = data.__data__;
    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
      pairs.push([key, value]);
      this.size = ++data.size;
      return this;
    }
    data = this.__data__ = new MapCache(pairs);
  }
  data.set(key, value);
  this.size = data.size;
  return this;
}

module.exports = stackSet;

},{"./_ListCache":315,"./_Map":316,"./_MapCache":317}],425:[function(require,module,exports){
var memoizeCapped = require('./_memoizeCapped');

/** Used to match property names within property paths. */
var reLeadingDot = /^\./,
    rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;

/** Used to match backslashes in property paths. */
var reEscapeChar = /\\(\\)?/g;

/**
 * Converts `string` to a property path array.
 *
 * @private
 * @param {string} string The string to convert.
 * @returns {Array} Returns the property path array.
 */
var stringToPath = memoizeCapped(function(string) {
  var result = [];
  if (reLeadingDot.test(string)) {
    result.push('');
  }
  string.replace(rePropName, function(match, number, quote, string) {
    result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
  });
  return result;
});

module.exports = stringToPath;

},{"./_memoizeCapped":407}],426:[function(require,module,exports){
var isSymbol = require('./isSymbol');

/** Used as references for various `Number` constants. */
var INFINITY = 1 / 0;

/**
 * Converts `value` to a string key if it's not a string or symbol.
 *
 * @private
 * @param {*} value The value to inspect.
 * @returns {string|symbol} Returns the key.
 */
function toKey(value) {
  if (typeof value == 'string' || isSymbol(value)) {
    return value;
  }
  var result = (value + '');
  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
}

module.exports = toKey;

},{"./isSymbol":445}],427:[function(require,module,exports){
/** Used for built-in method references. */
var funcProto = Function.prototype;

/** Used to resolve the decompiled source of functions. */
var funcToString = funcProto.toString;

/**
 * Converts `func` to its source code.
 *
 * @private
 * @param {Function} func The function to convert.
 * @returns {string} Returns the source code.
 */
function toSource(func) {
  if (func != null) {
    try {
      return funcToString.call(func);
    } catch (e) {}
    try {
      return (func + '');
    } catch (e) {}
  }
  return '';
}

module.exports = toSource;

},{}],428:[function(require,module,exports){
var assignValue = require('./_assignValue'),
    copyObject = require('./_copyObject'),
    createAssigner = require('./_createAssigner'),
    isArrayLike = require('./isArrayLike'),
    isPrototype = require('./_isPrototype'),
    keys = require('./keys');

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
 * Assigns own enumerable string keyed properties of source objects to the
 * destination object. Source objects are applied from left to right.
 * Subsequent sources overwrite property assignments of previous sources.
 *
 * **Note:** This method mutates `object` and is loosely based on
 * [`Object.assign`](https://mdn.io/Object/assign).
 *
 * @static
 * @memberOf _
 * @since 0.10.0
 * @category Object
 * @param {Object} object The destination object.
 * @param {...Object} [sources] The source objects.
 * @returns {Object} Returns `object`.
 * @see _.assignIn
 * @example
 *
 * function Foo() {
 *   this.a = 1;
 * }
 *
 * function Bar() {
 *   this.c = 3;
 * }
 *
 * Foo.prototype.b = 2;
 * Bar.prototype.d = 4;
 *
 * _.assign({ 'a': 0 }, new Foo, new Bar);
 * // => { 'a': 1, 'c': 3 }
 */
var assign = createAssigner(function(object, source) {
  if (isPrototype(source) || isArrayLike(source)) {
    copyObject(source, keys(source), object);
    return;
  }
  for (var key in source) {
    if (hasOwnProperty.call(source, key)) {
      assignValue(object, key, source[key]);
    }
  }
});

module.exports = assign;

},{"./_assignValue":332,"./_copyObject":364,"./_createAssigner":366,"./_isPrototype":393,"./isArrayLike":438,"./keys":447}],429:[function(require,module,exports){
/**
 * Creates a function that returns `value`.
 *
 * @static
 * @memberOf _
 * @since 2.4.0
 * @category Util
 * @param {*} value The value to return from the new function.
 * @returns {Function} Returns the new constant function.
 * @example
 *
 * var objects = _.times(2, _.constant({ 'a': 1 }));
 *
 * console.log(objects);
 * // => [{ 'a': 1 }, { 'a': 1 }]
 *
 * console.log(objects[0] === objects[1]);
 * // => true
 */
function constant(value) {
  return function() {
    return value;
  };
}

module.exports = constant;

},{}],430:[function(require,module,exports){
var baseAssign = require('./_baseAssign'),
    baseCreate = require('./_baseCreate');

/**
 * Creates an object that inherits from the `prototype` object. If a
 * `properties` object is given, its own enumerable string keyed properties
 * are assigned to the created object.
 *
 * @static
 * @memberOf _
 * @since 2.3.0
 * @category Object
 * @param {Object} prototype The object to inherit from.
 * @param {Object} [properties] The properties to assign to the object.
 * @returns {Object} Returns the new object.
 * @example
 *
 * function Shape() {
 *   this.x = 0;
 *   this.y = 0;
 * }
 *
 * function Circle() {
 *   Shape.call(this);
 * }
 *
 * Circle.prototype = _.create(Shape.prototype, {
 *   'constructor': Circle
 * });
 *
 * var circle = new Circle;
 * circle instanceof Circle;
 * // => true
 *
 * circle instanceof Shape;
 * // => true
 */
function create(prototype, properties) {
  var result = baseCreate(prototype);
  return properties == null ? result : baseAssign(result, properties);
}

module.exports = create;

},{"./_baseAssign":334,"./_baseCreate":336}],431:[function(require,module,exports){
/**
 * Performs a
 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 * comparison between two values to determine if they are equivalent.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to compare.
 * @param {*} other The other value to compare.
 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 * @example
 *
 * var object = { 'a': 1 };
 * var other = { 'a': 1 };
 *
 * _.eq(object, object);
 * // => true
 *
 * _.eq(object, other);
 * // => false
 *
 * _.eq('a', 'a');
 * // => true
 *
 * _.eq('a', Object('a'));
 * // => false
 *
 * _.eq(NaN, NaN);
 * // => true
 */
function eq(value, other) {
  return value === other || (value !== value && other !== other);
}

module.exports = eq;

},{}],432:[function(require,module,exports){
var arrayEvery = require('./_arrayEvery'),
    baseEvery = require('./_baseEvery'),
    baseIteratee = require('./_baseIteratee'),
    isArray = require('./isArray'),
    isIterateeCall = require('./_isIterateeCall');

/**
 * Checks if `predicate` returns truthy for **all** elements of `collection`.
 * Iteration is stopped once `predicate` returns falsey. The predicate is
 * invoked with three arguments: (value, index|key, collection).
 *
 * **Note:** This method returns `true` for
 * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
 * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
 * elements of empty collections.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Collection
 * @param {Array|Object} collection The collection to iterate over.
 * @param {Function} [predicate=_.identity] The function invoked per iteration.
 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
 * @returns {boolean} Returns `true` if all elements pass the predicate check,
 *  else `false`.
 * @example
 *
 * _.every([true, 1, null, 'yes'], Boolean);
 * // => false
 *
 * var users = [
 *   { 'user': 'barney', 'age': 36, 'active': false },
 *   { 'user': 'fred',   'age': 40, 'active': false }
 * ];
 *
 * // The `_.matches` iteratee shorthand.
 * _.every(users, { 'user': 'barney', 'active': false });
 * // => false
 *
 * // The `_.matchesProperty` iteratee shorthand.
 * _.every(users, ['active', false]);
 * // => true
 *
 * // The `_.property` iteratee shorthand.
 * _.every(users, 'active');
 * // => false
 */
function every(collection, predicate, guard) {
  var func = isArray(collection) ? arrayEvery : baseEvery;
  if (guard && isIterateeCall(collection, predicate, guard)) {
    predicate = undefined;
  }
  return func(collection, baseIteratee(predicate, 3));
}

module.exports = every;

},{"./_arrayEvery":326,"./_baseEvery":338,"./_baseIteratee":351,"./_isIterateeCall":389,"./isArray":437}],433:[function(require,module,exports){
var baseGet = require('./_baseGet');

/**
 * Gets the value at `path` of `object`. If the resolved value is
 * `undefined`, the `defaultValue` is returned in its place.
 *
 * @static
 * @memberOf _
 * @since 3.7.0
 * @category Object
 * @param {Object} object The object to query.
 * @param {Array|string} path The path of the property to get.
 * @param {*} [defaultValue] The value returned for `undefined` resolved values.
 * @returns {*} Returns the resolved value.
 * @example
 *
 * var object = { 'a': [{ 'b': { 'c': 3 } }] };
 *
 * _.get(object, 'a[0].b.c');
 * // => 3
 *
 * _.get(object, ['a', '0', 'b', 'c']);
 * // => 3
 *
 * _.get(object, 'a.b.c', 'default');
 * // => 'default'
 */
function get(object, path, defaultValue) {
  var result = object == null ? undefined : baseGet(object, path);
  return result === undefined ? defaultValue : result;
}

module.exports = get;

},{"./_baseGet":341}],434:[function(require,module,exports){
var baseHasIn = require('./_baseHasIn'),
    hasPath = require('./_hasPath');

/**
 * Checks if `path` is a direct or inherited property of `object`.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Object
 * @param {Object} object The object to query.
 * @param {Array|string} path The path to check.
 * @returns {boolean} Returns `true` if `path` exists, else `false`.
 * @example
 *
 * var object = _.create({ 'a': _.create({ 'b': 2 }) });
 *
 * _.hasIn(object, 'a');
 * // => true
 *
 * _.hasIn(object, 'a.b');
 * // => true
 *
 * _.hasIn(object, ['a', 'b']);
 * // => true
 *
 * _.hasIn(object, 'b');
 * // => false
 */
function hasIn(object, path) {
  return object != null && hasPath(object, path, baseHasIn);
}

module.exports = hasIn;

},{"./_baseHasIn":344,"./_hasPath":382}],435:[function(require,module,exports){
/**
 * This method returns the first argument it receives.
 *
 * @static
 * @since 0.1.0
 * @memberOf _
 * @category Util
 * @param {*} value Any value.
 * @returns {*} Returns `value`.
 * @example
 *
 * var object = { 'a': 1 };
 *
 * console.log(_.identity(object) === object);
 * // => true
 */
function identity(value) {
  return value;
}

module.exports = identity;

},{}],436:[function(require,module,exports){
var baseIsArguments = require('./_baseIsArguments'),
    isObjectLike = require('./isObjectLike');

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/** Built-in value references. */
var propertyIsEnumerable = objectProto.propertyIsEnumerable;

/**
 * Checks if `value` is likely an `arguments` object.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
 *  else `false`.
 * @example
 *
 * _.isArguments(function() { return arguments; }());
 * // => true
 *
 * _.isArguments([1, 2, 3]);
 * // => false
 */
var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
    !propertyIsEnumerable.call(value, 'callee');
};

module.exports = isArguments;

},{"./_baseIsArguments":345,"./isObjectLike":444}],437:[function(require,module,exports){
/**
 * Checks if `value` is classified as an `Array` object.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an array, else `false`.
 * @example
 *
 * _.isArray([1, 2, 3]);
 * // => true
 *
 * _.isArray(document.body.children);
 * // => false
 *
 * _.isArray('abc');
 * // => false
 *
 * _.isArray(_.noop);
 * // => false
 */
var isArray = Array.isArray;

module.exports = isArray;

},{}],438:[function(require,module,exports){
var isFunction = require('./isFunction'),
    isLength = require('./isLength');

/**
 * Checks if `value` is array-like. A value is considered array-like if it's
 * not a function and has a `value.length` that's an integer greater than or
 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
 * @example
 *
 * _.isArrayLike([1, 2, 3]);
 * // => true
 *
 * _.isArrayLike(document.body.children);
 * // => true
 *
 * _.isArrayLike('abc');
 * // => true
 *
 * _.isArrayLike(_.noop);
 * // => false
 */
function isArrayLike(value) {
  return value != null && isLength(value.length) && !isFunction(value);
}

module.exports = isArrayLike;

},{"./isFunction":441,"./isLength":442}],439:[function(require,module,exports){
var root = require('./_root'),
    stubFalse = require('./stubFalse');

/** Detect free variable `exports`. */
var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;

/** Detect free variable `module`. */
var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;

/** Detect the popular CommonJS extension `module.exports`. */
var moduleExports = freeModule && freeModule.exports === freeExports;

/** Built-in value references. */
var Buffer = moduleExports ? root.Buffer : undefined;

/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;

/**
 * Checks if `value` is a buffer.
 *
 * @static
 * @memberOf _
 * @since 4.3.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
 * @example
 *
 * _.isBuffer(new Buffer(2));
 * // => true
 *
 * _.isBuffer(new Uint8Array(2));
 * // => false
 */
var isBuffer = nativeIsBuffer || stubFalse;

module.exports = isBuffer;

},{"./_root":414,"./stubFalse":451}],440:[function(require,module,exports){
var baseKeys = require('./_baseKeys'),
    getTag = require('./_getTag'),
    isArguments = require('./isArguments'),
    isArray = require('./isArray'),
    isArrayLike = require('./isArrayLike'),
    isBuffer = require('./isBuffer'),
    isPrototype = require('./_isPrototype'),
    isTypedArray = require('./isTypedArray');

/** `Object#toString` result references. */
var mapTag = '[object Map]',
    setTag = '[object Set]';

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
 * Checks if `value` is an empty object, collection, map, or set.
 *
 * Objects are considered empty if they have no own enumerable string keyed
 * properties.
 *
 * Array-like values such as `arguments` objects, arrays, buffers, strings, or
 * jQuery-like collections are considered empty if they have a `length` of `0`.
 * Similarly, maps and sets are considered empty if they have a `size` of `0`.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is empty, else `false`.
 * @example
 *
 * _.isEmpty(null);
 * // => true
 *
 * _.isEmpty(true);
 * // => true
 *
 * _.isEmpty(1);
 * // => true
 *
 * _.isEmpty([1, 2, 3]);
 * // => false
 *
 * _.isEmpty({ 'a': 1 });
 * // => false
 */
function isEmpty(value) {
  if (value == null) {
    return true;
  }
  if (isArrayLike(value) &&
      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
        isBuffer(value) || isTypedArray(value) || isArguments(value))) {
    return !value.length;
  }
  var tag = getTag(value);
  if (tag == mapTag || tag == setTag) {
    return !value.size;
  }
  if (isPrototype(value)) {
    return !baseKeys(value).length;
  }
  for (var key in value) {
    if (hasOwnProperty.call(value, key)) {
      return false;
    }
  }
  return true;
}

module.exports = isEmpty;

},{"./_baseKeys":352,"./_getTag":380,"./_isPrototype":393,"./isArguments":436,"./isArray":437,"./isArrayLike":438,"./isBuffer":439,"./isTypedArray":446}],441:[function(require,module,exports){
var baseGetTag = require('./_baseGetTag'),
    isObject = require('./isObject');

/** `Object#toString` result references. */
var asyncTag = '[object AsyncFunction]',
    funcTag = '[object Function]',
    genTag = '[object GeneratorFunction]',
    proxyTag = '[object Proxy]';

/**
 * Checks if `value` is classified as a `Function` object.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a function, else `false`.
 * @example
 *
 * _.isFunction(_);
 * // => true
 *
 * _.isFunction(/abc/);
 * // => false
 */
function isFunction(value) {
  if (!isObject(value)) {
    return false;
  }
  // The use of `Object#toString` avoids issues with the `typeof` operator
  // in Safari 9 which returns 'object' for typed arrays and other constructors.
  var tag = baseGetTag(value);
  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
}

module.exports = isFunction;

},{"./_baseGetTag":343,"./isObject":443}],442:[function(require,module,exports){
/** Used as references for various `Number` constants. */
var MAX_SAFE_INTEGER = 9007199254740991;

/**
 * Checks if `value` is a valid array-like length.
 *
 * **Note:** This method is loosely based on
 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
 * @example
 *
 * _.isLength(3);
 * // => true
 *
 * _.isLength(Number.MIN_VALUE);
 * // => false
 *
 * _.isLength(Infinity);
 * // => false
 *
 * _.isLength('3');
 * // => false
 */
function isLength(value) {
  return typeof value == 'number' &&
    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
}

module.exports = isLength;

},{}],443:[function(require,module,exports){
/**
 * Checks if `value` is the
 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
 * @example
 *
 * _.isObject({});
 * // => true
 *
 * _.isObject([1, 2, 3]);
 * // => true
 *
 * _.isObject(_.noop);
 * // => true
 *
 * _.isObject(null);
 * // => false
 */
function isObject(value) {
  var type = typeof value;
  return value != null && (type == 'object' || type == 'function');
}

module.exports = isObject;

},{}],444:[function(require,module,exports){
/**
 * Checks if `value` is object-like. A value is object-like if it's not `null`
 * and has a `typeof` result of "object".
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
 * @example
 *
 * _.isObjectLike({});
 * // => true
 *
 * _.isObjectLike([1, 2, 3]);
 * // => true
 *
 * _.isObjectLike(_.noop);
 * // => false
 *
 * _.isObjectLike(null);
 * // => false
 */
function isObjectLike(value) {
  return value != null && typeof value == 'object';
}

module.exports = isObjectLike;

},{}],445:[function(require,module,exports){
var baseGetTag = require('./_baseGetTag'),
    isObjectLike = require('./isObjectLike');

/** `Object#toString` result references. */
var symbolTag = '[object Symbol]';

/**
 * Checks if `value` is classified as a `Symbol` primitive or object.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
 * @example
 *
 * _.isSymbol(Symbol.iterator);
 * // => true
 *
 * _.isSymbol('abc');
 * // => false
 */
function isSymbol(value) {
  return typeof value == 'symbol' ||
    (isObjectLike(value) && baseGetTag(value) == symbolTag);
}

module.exports = isSymbol;

},{"./_baseGetTag":343,"./isObjectLike":444}],446:[function(require,module,exports){
var baseIsTypedArray = require('./_baseIsTypedArray'),
    baseUnary = require('./_baseUnary'),
    nodeUtil = require('./_nodeUtil');

/* Node.js helper references. */
var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;

/**
 * Checks if `value` is classified as a typed array.
 *
 * @static
 * @memberOf _
 * @since 3.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
 * @example
 *
 * _.isTypedArray(new Uint8Array);
 * // => true
 *
 * _.isTypedArray([]);
 * // => false
 */
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;

module.exports = isTypedArray;

},{"./_baseIsTypedArray":350,"./_baseUnary":361,"./_nodeUtil":410}],447:[function(require,module,exports){
var arrayLikeKeys = require('./_arrayLikeKeys'),
    baseKeys = require('./_baseKeys'),
    isArrayLike = require('./isArrayLike');

/**
 * Creates an array of the own enumerable property names of `object`.
 *
 * **Note:** Non-object values are coerced to objects. See the
 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
 * for more details.
 *
 * @static
 * @since 0.1.0
 * @memberOf _
 * @category Object
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of property names.
 * @example
 *
 * function Foo() {
 *   this.a = 1;
 *   this.b = 2;
 * }
 *
 * Foo.prototype.c = 3;
 *
 * _.keys(new Foo);
 * // => ['a', 'b'] (iteration order is not guaranteed)
 *
 * _.keys('hi');
 * // => ['0', '1']
 */
function keys(object) {
  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
}

module.exports = keys;

},{"./_arrayLikeKeys":328,"./_baseKeys":352,"./isArrayLike":438}],448:[function(require,module,exports){
var MapCache = require('./_MapCache');

/** Error message constants. */
var FUNC_ERROR_TEXT = 'Expected a function';

/**
 * Creates a function that memoizes the result of `func`. If `resolver` is
 * provided, it determines the cache key for storing the result based on the
 * arguments provided to the memoized function. By default, the first argument
 * provided to the memoized function is used as the map cache key. The `func`
 * is invoked with the `this` binding of the memoized function.
 *
 * **Note:** The cache is exposed as the `cache` property on the memoized
 * function. Its creation may be customized by replacing the `_.memoize.Cache`
 * constructor with one whose instances implement the
 * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
 * method interface of `clear`, `delete`, `get`, `has`, and `set`.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Function
 * @param {Function} func The function to have its output memoized.
 * @param {Function} [resolver] The function to resolve the cache key.
 * @returns {Function} Returns the new memoized function.
 * @example
 *
 * var object = { 'a': 1, 'b': 2 };
 * var other = { 'c': 3, 'd': 4 };
 *
 * var values = _.memoize(_.values);
 * values(object);
 * // => [1, 2]
 *
 * values(other);
 * // => [3, 4]
 *
 * object.a = 2;
 * values(object);
 * // => [1, 2]
 *
 * // Modify the result cache.
 * values.cache.set(object, ['a', 'b']);
 * values(object);
 * // => ['a', 'b']
 *
 * // Replace `_.memoize.Cache`.
 * _.memoize.Cache = WeakMap;
 */
function memoize(func, resolver) {
  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
    throw new TypeError(FUNC_ERROR_TEXT);
  }
  var memoized = function() {
    var args = arguments,
        key = resolver ? resolver.apply(this, args) : args[0],
        cache = memoized.cache;

    if (cache.has(key)) {
      return cache.get(key);
    }
    var result = func.apply(this, args);
    memoized.cache = cache.set(key, result) || cache;
    return result;
  };
  memoized.cache = new (memoize.Cache || MapCache);
  return memoized;
}

// Expose `MapCache`.
memoize.Cache = MapCache;

module.exports = memoize;

},{"./_MapCache":317}],449:[function(require,module,exports){
var baseProperty = require('./_baseProperty'),
    basePropertyDeep = require('./_basePropertyDeep'),
    isKey = require('./_isKey'),
    toKey = require('./_toKey');

/**
 * Creates a function that returns the value at `path` of a given object.
 *
 * @static
 * @memberOf _
 * @since 2.4.0
 * @category Util
 * @param {Array|string} path The path of the property to get.
 * @returns {Function} Returns the new accessor function.
 * @example
 *
 * var objects = [
 *   { 'a': { 'b': 2 } },
 *   { 'a': { 'b': 1 } }
 * ];
 *
 * _.map(objects, _.property('a.b'));
 * // => [2, 1]
 *
 * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
 * // => [1, 2]
 */
function property(path) {
  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
}

module.exports = property;

},{"./_baseProperty":355,"./_basePropertyDeep":356,"./_isKey":390,"./_toKey":426}],450:[function(require,module,exports){
/**
 * This method returns a new empty array.
 *
 * @static
 * @memberOf _
 * @since 4.13.0
 * @category Util
 * @returns {Array} Returns the new empty array.
 * @example
 *
 * var arrays = _.times(2, _.stubArray);
 *
 * console.log(arrays);
 * // => [[], []]
 *
 * console.log(arrays[0] === arrays[1]);
 * // => false
 */
function stubArray() {
  return [];
}

module.exports = stubArray;

},{}],451:[function(require,module,exports){
/**
 * This method returns `false`.
 *
 * @static
 * @memberOf _
 * @since 4.13.0
 * @category Util
 * @returns {boolean} Returns `false`.
 * @example
 *
 * _.times(2, _.stubFalse);
 * // => [false, false]
 */
function stubFalse() {
  return false;
}

module.exports = stubFalse;

},{}],452:[function(require,module,exports){
var baseToString = require('./_baseToString');

/**
 * Converts `value` to a string. An empty string is returned for `null`
 * and `undefined` values. The sign of `-0` is preserved.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to convert.
 * @returns {string} Returns the converted string.
 * @example
 *
 * _.toString(null);
 * // => ''
 *
 * _.toString(-0);
 * // => '-0'
 *
 * _.toString([1, 2, 3]);
 * // => '1,2,3'
 */
function toString(value) {
  return value == null ? '' : baseToString(value);
}

module.exports = toString;

},{"./_baseToString":360}],453:[function(require,module,exports){
// shim for using process in browser
var process = module.exports = {};

// cached from whatever global is present so that test runners that stub it
// don't break things.  But we need to wrap it in a try catch in case it is
// wrapped in strict mode code which doesn't define any globals.  It's inside a
// function because try/catches deoptimize in certain engines.

var cachedSetTimeout;
var cachedClearTimeout;

function defaultSetTimout() {
    throw new Error('setTimeout has not been defined');
}
function defaultClearTimeout () {
    throw new Error('clearTimeout has not been defined');
}
(function () {
    try {
        if (typeof setTimeout === 'function') {
            cachedSetTimeout = setTimeout;
        } else {
            cachedSetTimeout = defaultSetTimout;
        }
    } catch (e) {
        cachedSetTimeout = defaultSetTimout;
    }
    try {
        if (typeof clearTimeout === 'function') {
            cachedClearTimeout = clearTimeout;
        } else {
            cachedClearTimeout = defaultClearTimeout;
        }
    } catch (e) {
        cachedClearTimeout = defaultClearTimeout;
    }
} ())
function runTimeout(fun) {
    if (cachedSetTimeout === setTimeout) {
        //normal enviroments in sane situations
        return setTimeout(fun, 0);
    }
    // if setTimeout wasn't available but was latter defined
    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
        cachedSetTimeout = setTimeout;
        return setTimeout(fun, 0);
    }
    try {
        // when when somebody has screwed with setTimeout but no I.E. maddness
        return cachedSetTimeout(fun, 0);
    } catch(e){
        try {
            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
            return cachedSetTimeout.call(null, fun, 0);
        } catch(e){
            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
            return cachedSetTimeout.call(this, fun, 0);
        }
    }


}
function runClearTimeout(marker) {
    if (cachedClearTimeout === clearTimeout) {
        //normal enviroments in sane situations
        return clearTimeout(marker);
    }
    // if clearTimeout wasn't available but was latter defined
    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
        cachedClearTimeout = clearTimeout;
        return clearTimeout(marker);
    }
    try {
        // when when somebody has screwed with setTimeout but no I.E. maddness
        return cachedClearTimeout(marker);
    } catch (e){
        try {
            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
            return cachedClearTimeout.call(null, marker);
        } catch (e){
            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
            return cachedClearTimeout.call(this, marker);
        }
    }



}
var queue = [];
var draining = false;
var currentQueue;
var queueIndex = -1;

function cleanUpNextTick() {
    if (!draining || !currentQueue) {
        return;
    }
    draining = false;
    if (currentQueue.length) {
        queue = currentQueue.concat(queue);
    } else {
        queueIndex = -1;
    }
    if (queue.length) {
        drainQueue();
    }
}

function drainQueue() {
    if (draining) {
        return;
    }
    var timeout = runTimeout(cleanUpNextTick);
    draining = true;

    var len = queue.length;
    while(len) {
        currentQueue = queue;
        queue = [];
        while (++queueIndex < len) {
            if (currentQueue) {
                currentQueue[queueIndex].run();
            }
        }
        queueIndex = -1;
        len = queue.length;
    }
    currentQueue = null;
    draining = false;
    runClearTimeout(timeout);
}

process.nextTick = function (fun) {
    var args = new Array(arguments.length - 1);
    if (arguments.length > 1) {
        for (var i = 1; i < arguments.length; i++) {
            args[i - 1] = arguments[i];
        }
    }
    queue.push(new Item(fun, args));
    if (queue.length === 1 && !draining) {
        runTimeout(drainQueue);
    }
};

// v8 likes predictible objects
function Item(fun, array) {
    this.fun = fun;
    this.array = array;
}
Item.prototype.run = function () {
    this.fun.apply(null, this.array);
};
process.title = 'browser';
process.browser = true;
process.env = {};
process.argv = [];
process.version = ''; // empty string to avoid regexp issues
process.versions = {};

function noop() {}

process.on = noop;
process.addListener = noop;
process.once = noop;
process.off = noop;
process.removeListener = noop;
process.removeAllListeners = noop;
process.emit = noop;
process.prependListener = noop;
process.prependOnceListener = noop;

process.listeners = function (name) { return [] }

process.binding = function (name) {
    throw new Error('process.binding is not supported');
};

process.cwd = function () { return '/' };
process.chdir = function (dir) {
    throw new Error('process.chdir is not supported');
};
process.umask = function() { return 0; };

},{}],454:[function(require,module,exports){
(function (global){
/*! https://mths.be/punycode v1.3.2 by @mathias */
;(function(root) {

	/** Detect free variables */
	var freeExports = typeof exports == 'object' && exports &&
		!exports.nodeType && exports;
	var freeModule = typeof module == 'object' && module &&
		!module.nodeType && module;
	var freeGlobal = typeof global == 'object' && global;
	if (
		freeGlobal.global === freeGlobal ||
		freeGlobal.window === freeGlobal ||
		freeGlobal.self === freeGlobal
	) {
		root = freeGlobal;
	}

	/**
	 * The `punycode` object.
	 * @name punycode
	 * @type Object
	 */
	var punycode,

	/** Highest positive signed 32-bit float value */
	maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1

	/** Bootstring parameters */
	base = 36,
	tMin = 1,
	tMax = 26,
	skew = 38,
	damp = 700,
	initialBias = 72,
	initialN = 128, // 0x80
	delimiter = '-', // '\x2D'

	/** Regular expressions */
	regexPunycode = /^xn--/,
	regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
	regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators

	/** Error messages */
	errors = {
		'overflow': 'Overflow: input needs wider integers to process',
		'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
		'invalid-input': 'Invalid input'
	},

	/** Convenience shortcuts */
	baseMinusTMin = base - tMin,
	floor = Math.floor,
	stringFromCharCode = String.fromCharCode,

	/** Temporary variable */
	key;

	/*--------------------------------------------------------------------------*/

	/**
	 * A generic error utility function.
	 * @private
	 * @param {String} type The error type.
	 * @returns {Error} Throws a `RangeError` with the applicable error message.
	 */
	function error(type) {
		throw RangeError(errors[type]);
	}

	/**
	 * A generic `Array#map` utility function.
	 * @private
	 * @param {Array} array The array to iterate over.
	 * @param {Function} callback The function that gets called for every array
	 * item.
	 * @returns {Array} A new array of values returned by the callback function.
	 */
	function map(array, fn) {
		var length = array.length;
		var result = [];
		while (length--) {
			result[length] = fn(array[length]);
		}
		return result;
	}

	/**
	 * A simple `Array#map`-like wrapper to work with domain name strings or email
	 * addresses.
	 * @private
	 * @param {String} domain The domain name or email address.
	 * @param {Function} callback The function that gets called for every
	 * character.
	 * @returns {Array} A new string of characters returned by the callback
	 * function.
	 */
	function mapDomain(string, fn) {
		var parts = string.split('@');
		var result = '';
		if (parts.length > 1) {
			// In email addresses, only the domain name should be punycoded. Leave
			// the local part (i.e. everything up to `@`) intact.
			result = parts[0] + '@';
			string = parts[1];
		}
		// Avoid `split(regex)` for IE8 compatibility. See #17.
		string = string.replace(regexSeparators, '\x2E');
		var labels = string.split('.');
		var encoded = map(labels, fn).join('.');
		return result + encoded;
	}

	/**
	 * Creates an array containing the numeric code points of each Unicode
	 * character in the string. While JavaScript uses UCS-2 internally,
	 * this function will convert a pair of surrogate halves (each of which
	 * UCS-2 exposes as separate characters) into a single code point,
	 * matching UTF-16.
	 * @see `punycode.ucs2.encode`
	 * @see <https://mathiasbynens.be/notes/javascript-encoding>
	 * @memberOf punycode.ucs2
	 * @name decode
	 * @param {String} string The Unicode input string (UCS-2).
	 * @returns {Array} The new array of code points.
	 */
	function ucs2decode(string) {
		var output = [],
		    counter = 0,
		    length = string.length,
		    value,
		    extra;
		while (counter < length) {
			value = string.charCodeAt(counter++);
			if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
				// high surrogate, and there is a next character
				extra = string.charCodeAt(counter++);
				if ((extra & 0xFC00) == 0xDC00) { // low surrogate
					output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
				} else {
					// unmatched surrogate; only append this code unit, in case the next
					// code unit is the high surrogate of a surrogate pair
					output.push(value);
					counter--;
				}
			} else {
				output.push(value);
			}
		}
		return output;
	}

	/**
	 * Creates a string based on an array of numeric code points.
	 * @see `punycode.ucs2.decode`
	 * @memberOf punycode.ucs2
	 * @name encode
	 * @param {Array} codePoints The array of numeric code points.
	 * @returns {String} The new Unicode string (UCS-2).
	 */
	function ucs2encode(array) {
		return map(array, function(value) {
			var output = '';
			if (value > 0xFFFF) {
				value -= 0x10000;
				output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
				value = 0xDC00 | value & 0x3FF;
			}
			output += stringFromCharCode(value);
			return output;
		}).join('');
	}

	/**
	 * Converts a basic code point into a digit/integer.
	 * @see `digitToBasic()`
	 * @private
	 * @param {Number} codePoint The basic numeric code point value.
	 * @returns {Number} The numeric value of a basic code point (for use in
	 * representing integers) in the range `0` to `base - 1`, or `base` if
	 * the code point does not represent a value.
	 */
	function basicToDigit(codePoint) {
		if (codePoint - 48 < 10) {
			return codePoint - 22;
		}
		if (codePoint - 65 < 26) {
			return codePoint - 65;
		}
		if (codePoint - 97 < 26) {
			return codePoint - 97;
		}
		return base;
	}

	/**
	 * Converts a digit/integer into a basic code point.
	 * @see `basicToDigit()`
	 * @private
	 * @param {Number} digit The numeric value of a basic code point.
	 * @returns {Number} The basic code point whose value (when used for
	 * representing integers) is `digit`, which needs to be in the range
	 * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
	 * used; else, the lowercase form is used. The behavior is undefined
	 * if `flag` is non-zero and `digit` has no uppercase form.
	 */
	function digitToBasic(digit, flag) {
		//  0..25 map to ASCII a..z or A..Z
		// 26..35 map to ASCII 0..9
		return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
	}

	/**
	 * Bias adaptation function as per section 3.4 of RFC 3492.
	 * http://tools.ietf.org/html/rfc3492#section-3.4
	 * @private
	 */
	function adapt(delta, numPoints, firstTime) {
		var k = 0;
		delta = firstTime ? floor(delta / damp) : delta >> 1;
		delta += floor(delta / numPoints);
		for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
			delta = floor(delta / baseMinusTMin);
		}
		return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
	}

	/**
	 * Converts a Punycode string of ASCII-only symbols to a string of Unicode
	 * symbols.
	 * @memberOf punycode
	 * @param {String} input The Punycode string of ASCII-only symbols.
	 * @returns {String} The resulting string of Unicode symbols.
	 */
	function decode(input) {
		// Don't use UCS-2
		var output = [],
		    inputLength = input.length,
		    out,
		    i = 0,
		    n = initialN,
		    bias = initialBias,
		    basic,
		    j,
		    index,
		    oldi,
		    w,
		    k,
		    digit,
		    t,
		    /** Cached calculation results */
		    baseMinusT;

		// Handle the basic code points: let `basic` be the number of input code
		// points before the last delimiter, or `0` if there is none, then copy
		// the first basic code points to the output.

		basic = input.lastIndexOf(delimiter);
		if (basic < 0) {
			basic = 0;
		}

		for (j = 0; j < basic; ++j) {
			// if it's not a basic code point
			if (input.charCodeAt(j) >= 0x80) {
				error('not-basic');
			}
			output.push(input.charCodeAt(j));
		}

		// Main decoding loop: start just after the last delimiter if any basic code
		// points were copied; start at the beginning otherwise.

		for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {

			// `index` is the index of the next character to be consumed.
			// Decode a generalized variable-length integer into `delta`,
			// which gets added to `i`. The overflow checking is easier
			// if we increase `i` as we go, then subtract off its starting
			// value at the end to obtain `delta`.
			for (oldi = i, w = 1, k = base; /* no condition */; k += base) {

				if (index >= inputLength) {
					error('invalid-input');
				}

				digit = basicToDigit(input.charCodeAt(index++));

				if (digit >= base || digit > floor((maxInt - i) / w)) {
					error('overflow');
				}

				i += digit * w;
				t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);

				if (digit < t) {
					break;
				}

				baseMinusT = base - t;
				if (w > floor(maxInt / baseMinusT)) {
					error('overflow');
				}

				w *= baseMinusT;

			}

			out = output.length + 1;
			bias = adapt(i - oldi, out, oldi == 0);

			// `i` was supposed to wrap around from `out` to `0`,
			// incrementing `n` each time, so we'll fix that now:
			if (floor(i / out) > maxInt - n) {
				error('overflow');
			}

			n += floor(i / out);
			i %= out;

			// Insert `n` at position `i` of the output
			output.splice(i++, 0, n);

		}

		return ucs2encode(output);
	}

	/**
	 * Converts a string of Unicode symbols (e.g. a domain name label) to a
	 * Punycode string of ASCII-only symbols.
	 * @memberOf punycode
	 * @param {String} input The string of Unicode symbols.
	 * @returns {String} The resulting Punycode string of ASCII-only symbols.
	 */
	function encode(input) {
		var n,
		    delta,
		    handledCPCount,
		    basicLength,
		    bias,
		    j,
		    m,
		    q,
		    k,
		    t,
		    currentValue,
		    output = [],
		    /** `inputLength` will hold the number of code points in `input`. */
		    inputLength,
		    /** Cached calculation results */
		    handledCPCountPlusOne,
		    baseMinusT,
		    qMinusT;

		// Convert the input in UCS-2 to Unicode
		input = ucs2decode(input);

		// Cache the length
		inputLength = input.length;

		// Initialize the state
		n = initialN;
		delta = 0;
		bias = initialBias;

		// Handle the basic code points
		for (j = 0; j < inputLength; ++j) {
			currentValue = input[j];
			if (currentValue < 0x80) {
				output.push(stringFromCharCode(currentValue));
			}
		}

		handledCPCount = basicLength = output.length;

		// `handledCPCount` is the number of code points that have been handled;
		// `basicLength` is the number of basic code points.

		// Finish the basic string - if it is not empty - with a delimiter
		if (basicLength) {
			output.push(delimiter);
		}

		// Main encoding loop:
		while (handledCPCount < inputLength) {

			// All non-basic code points < n have been handled already. Find the next
			// larger one:
			for (m = maxInt, j = 0; j < inputLength; ++j) {
				currentValue = input[j];
				if (currentValue >= n && currentValue < m) {
					m = currentValue;
				}
			}

			// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
			// but guard against overflow
			handledCPCountPlusOne = handledCPCount + 1;
			if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
				error('overflow');
			}

			delta += (m - n) * handledCPCountPlusOne;
			n = m;

			for (j = 0; j < inputLength; ++j) {
				currentValue = input[j];

				if (currentValue < n && ++delta > maxInt) {
					error('overflow');
				}

				if (currentValue == n) {
					// Represent delta as a generalized variable-length integer
					for (q = delta, k = base; /* no condition */; k += base) {
						t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
						if (q < t) {
							break;
						}
						qMinusT = q - t;
						baseMinusT = base - t;
						output.push(
							stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
						);
						q = floor(qMinusT / baseMinusT);
					}

					output.push(stringFromCharCode(digitToBasic(q, 0)));
					bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
					delta = 0;
					++handledCPCount;
				}
			}

			++delta;
			++n;

		}
		return output.join('');
	}

	/**
	 * Converts a Punycode string representing a domain name or an email address
	 * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
	 * it doesn't matter if you call it on a string that has already been
	 * converted to Unicode.
	 * @memberOf punycode
	 * @param {String} input The Punycoded domain name or email address to
	 * convert to Unicode.
	 * @returns {String} The Unicode representation of the given Punycode
	 * string.
	 */
	function toUnicode(input) {
		return mapDomain(input, function(string) {
			return regexPunycode.test(string)
				? decode(string.slice(4).toLowerCase())
				: string;
		});
	}

	/**
	 * Converts a Unicode string representing a domain name or an email address to
	 * Punycode. Only the non-ASCII parts of the domain name will be converted,
	 * i.e. it doesn't matter if you call it with a domain that's already in
	 * ASCII.
	 * @memberOf punycode
	 * @param {String} input The domain name or email address to convert, as a
	 * Unicode string.
	 * @returns {String} The Punycode representation of the given domain name or
	 * email address.
	 */
	function toASCII(input) {
		return mapDomain(input, function(string) {
			return regexNonASCII.test(string)
				? 'xn--' + encode(string)
				: string;
		});
	}

	/*--------------------------------------------------------------------------*/

	/** Define the public API */
	punycode = {
		/**
		 * A string representing the current Punycode.js version number.
		 * @memberOf punycode
		 * @type String
		 */
		'version': '1.3.2',
		/**
		 * An object of methods to convert from JavaScript's internal character
		 * representation (UCS-2) to Unicode code points, and back.
		 * @see <https://mathiasbynens.be/notes/javascript-encoding>
		 * @memberOf punycode
		 * @type Object
		 */
		'ucs2': {
			'decode': ucs2decode,
			'encode': ucs2encode
		},
		'decode': decode,
		'encode': encode,
		'toASCII': toASCII,
		'toUnicode': toUnicode
	};

	/** Expose `punycode` */
	// Some AMD build optimizers, like r.js, check for specific condition patterns
	// like the following:
	if (
		typeof define == 'function' &&
		typeof define.amd == 'object' &&
		define.amd
	) {
		define('punycode', function() {
			return punycode;
		});
	} else if (freeExports && freeModule) {
		if (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+
			freeModule.exports = punycode;
		} else { // in Narwhal or RingoJS v0.7.0-
			for (key in punycode) {
				punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);
			}
		}
	} else { // in Rhino or a web browser
		root.punycode = punycode;
	}

}(this));

}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{}],455:[function(require,module,exports){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

'use strict';

// If obj.hasOwnProperty has been overridden, then calling
// obj.hasOwnProperty(prop) will break.
// See: https://github.com/joyent/node/issues/1707
function hasOwnProperty(obj, prop) {
  return Object.prototype.hasOwnProperty.call(obj, prop);
}

module.exports = function(qs, sep, eq, options) {
  sep = sep || '&';
  eq = eq || '=';
  var obj = {};

  if (typeof qs !== 'string' || qs.length === 0) {
    return obj;
  }

  var regexp = /\+/g;
  qs = qs.split(sep);

  var maxKeys = 1000;
  if (options && typeof options.maxKeys === 'number') {
    maxKeys = options.maxKeys;
  }

  var len = qs.length;
  // maxKeys <= 0 means that we should not limit keys count
  if (maxKeys > 0 && len > maxKeys) {
    len = maxKeys;
  }

  for (var i = 0; i < len; ++i) {
    var x = qs[i].replace(regexp, '%20'),
        idx = x.indexOf(eq),
        kstr, vstr, k, v;

    if (idx >= 0) {
      kstr = x.substr(0, idx);
      vstr = x.substr(idx + 1);
    } else {
      kstr = x;
      vstr = '';
    }

    k = decodeURIComponent(kstr);
    v = decodeURIComponent(vstr);

    if (!hasOwnProperty(obj, k)) {
      obj[k] = v;
    } else if (isArray(obj[k])) {
      obj[k].push(v);
    } else {
      obj[k] = [obj[k], v];
    }
  }

  return obj;
};

var isArray = Array.isArray || function (xs) {
  return Object.prototype.toString.call(xs) === '[object Array]';
};

},{}],456:[function(require,module,exports){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

'use strict';

var stringifyPrimitive = function(v) {
  switch (typeof v) {
    case 'string':
      return v;

    case 'boolean':
      return v ? 'true' : 'false';

    case 'number':
      return isFinite(v) ? v : '';

    default:
      return '';
  }
};

module.exports = function(obj, sep, eq, name) {
  sep = sep || '&';
  eq = eq || '=';
  if (obj === null) {
    obj = undefined;
  }

  if (typeof obj === 'object') {
    return map(objectKeys(obj), function(k) {
      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
      if (isArray(obj[k])) {
        return map(obj[k], function(v) {
          return ks + encodeURIComponent(stringifyPrimitive(v));
        }).join(sep);
      } else {
        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
      }
    }).join(sep);

  }

  if (!name) return '';
  return encodeURIComponent(stringifyPrimitive(name)) + eq +
         encodeURIComponent(stringifyPrimitive(obj));
};

var isArray = Array.isArray || function (xs) {
  return Object.prototype.toString.call(xs) === '[object Array]';
};

function map (xs, f) {
  if (xs.map) return xs.map(f);
  var res = [];
  for (var i = 0; i < xs.length; i++) {
    res.push(f(xs[i], i));
  }
  return res;
}

var objectKeys = Object.keys || function (obj) {
  var res = [];
  for (var key in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
  }
  return res;
};

},{}],457:[function(require,module,exports){
'use strict';

exports.decode = exports.parse = require('./decode');
exports.encode = exports.stringify = require('./encode');

},{"./decode":455,"./encode":456}],458:[function(require,module,exports){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

'use strict';

// If obj.hasOwnProperty has been overridden, then calling
// obj.hasOwnProperty(prop) will break.
// See: https://github.com/joyent/node/issues/1707
function hasOwnProperty(obj, prop) {
  return Object.prototype.hasOwnProperty.call(obj, prop);
}

module.exports = function(qs, sep, eq, options) {
  sep = sep || '&';
  eq = eq || '=';
  var obj = {};

  if (typeof qs !== 'string' || qs.length === 0) {
    return obj;
  }

  var regexp = /\+/g;
  qs = qs.split(sep);

  var maxKeys = 1000;
  if (options && typeof options.maxKeys === 'number') {
    maxKeys = options.maxKeys;
  }

  var len = qs.length;
  // maxKeys <= 0 means that we should not limit keys count
  if (maxKeys > 0 && len > maxKeys) {
    len = maxKeys;
  }

  for (var i = 0; i < len; ++i) {
    var x = qs[i].replace(regexp, '%20'),
        idx = x.indexOf(eq),
        kstr, vstr, k, v;

    if (idx >= 0) {
      kstr = x.substr(0, idx);
      vstr = x.substr(idx + 1);
    } else {
      kstr = x;
      vstr = '';
    }

    k = decodeURIComponent(kstr);
    v = decodeURIComponent(vstr);

    if (!hasOwnProperty(obj, k)) {
      obj[k] = v;
    } else if (Array.isArray(obj[k])) {
      obj[k].push(v);
    } else {
      obj[k] = [obj[k], v];
    }
  }

  return obj;
};

},{}],459:[function(require,module,exports){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

'use strict';

var stringifyPrimitive = function(v) {
  switch (typeof v) {
    case 'string':
      return v;

    case 'boolean':
      return v ? 'true' : 'false';

    case 'number':
      return isFinite(v) ? v : '';

    default:
      return '';
  }
};

module.exports = function(obj, sep, eq, name) {
  sep = sep || '&';
  eq = eq || '=';
  if (obj === null) {
    obj = undefined;
  }

  if (typeof obj === 'object') {
    return Object.keys(obj).map(function(k) {
      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
      if (Array.isArray(obj[k])) {
        return obj[k].map(function(v) {
          return ks + encodeURIComponent(stringifyPrimitive(v));
        }).join(sep);
      } else {
        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
      }
    }).join(sep);

  }

  if (!name) return '';
  return encodeURIComponent(stringifyPrimitive(name)) + eq +
         encodeURIComponent(stringifyPrimitive(obj));
};

},{}],460:[function(require,module,exports){
arguments[4][457][0].apply(exports,arguments)
},{"./decode":458,"./encode":459,"dup":457}],461:[function(require,module,exports){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

var punycode = require('punycode');

exports.parse = urlParse;
exports.resolve = urlResolve;
exports.resolveObject = urlResolveObject;
exports.format = urlFormat;

exports.Url = Url;

function Url() {
  this.protocol = null;
  this.slashes = null;
  this.auth = null;
  this.host = null;
  this.port = null;
  this.hostname = null;
  this.hash = null;
  this.search = null;
  this.query = null;
  this.pathname = null;
  this.path = null;
  this.href = null;
}

// Reference: RFC 3986, RFC 1808, RFC 2396

// define these here so at least they only have to be
// compiled once on the first module load.
var protocolPattern = /^([a-z0-9.+-]+:)/i,
    portPattern = /:[0-9]*$/,

    // RFC 2396: characters reserved for delimiting URLs.
    // We actually just auto-escape these.
    delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'],

    // RFC 2396: characters not allowed for various reasons.
    unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims),

    // Allowed by RFCs, but cause of XSS attacks.  Always escape these.
    autoEscape = ['\''].concat(unwise),
    // Characters that are never ever allowed in a hostname.
    // Note that any invalid chars are also handled, but these
    // are the ones that are *expected* to be seen, so we fast-path
    // them.
    nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),
    hostEndingChars = ['/', '?', '#'],
    hostnameMaxLen = 255,
    hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,
    hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,
    // protocols that can allow "unsafe" and "unwise" chars.
    unsafeProtocol = {
      'javascript': true,
      'javascript:': true
    },
    // protocols that never have a hostname.
    hostlessProtocol = {
      'javascript': true,
      'javascript:': true
    },
    // protocols that always contain a // bit.
    slashedProtocol = {
      'http': true,
      'https': true,
      'ftp': true,
      'gopher': true,
      'file': true,
      'http:': true,
      'https:': true,
      'ftp:': true,
      'gopher:': true,
      'file:': true
    },
    querystring = require('querystring');

function urlParse(url, parseQueryString, slashesDenoteHost) {
  if (url && isObject(url) && url instanceof Url) return url;

  var u = new Url;
  u.parse(url, parseQueryString, slashesDenoteHost);
  return u;
}

Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {
  if (!isString(url)) {
    throw new TypeError("Parameter 'url' must be a string, not " + typeof url);
  }

  var rest = url;

  // trim before proceeding.
  // This is to support parse stuff like "  http://foo.com  \n"
  rest = rest.trim();

  var proto = protocolPattern.exec(rest);
  if (proto) {
    proto = proto[0];
    var lowerProto = proto.toLowerCase();
    this.protocol = lowerProto;
    rest = rest.substr(proto.length);
  }

  // figure out if it's got a host
  // user@server is *always* interpreted as a hostname, and url
  // resolution will treat //foo/bar as host=foo,path=bar because that's
  // how the browser resolves relative URLs.
  if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) {
    var slashes = rest.substr(0, 2) === '//';
    if (slashes && !(proto && hostlessProtocol[proto])) {
      rest = rest.substr(2);
      this.slashes = true;
    }
  }

  if (!hostlessProtocol[proto] &&
      (slashes || (proto && !slashedProtocol[proto]))) {

    // there's a hostname.
    // the first instance of /, ?, ;, or # ends the host.
    //
    // If there is an @ in the hostname, then non-host chars *are* allowed
    // to the left of the last @ sign, unless some host-ending character
    // comes *before* the @-sign.
    // URLs are obnoxious.
    //
    // ex:
    // http://a@b@c/ => user:a@b host:c
    // http://a@b?@c => user:a host:c path:/?@c

    // v0.12 TODO(isaacs): This is not quite how Chrome does things.
    // Review our test case against browsers more comprehensively.

    // find the first instance of any hostEndingChars
    var hostEnd = -1;
    for (var i = 0; i < hostEndingChars.length; i++) {
      var hec = rest.indexOf(hostEndingChars[i]);
      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))
        hostEnd = hec;
    }

    // at this point, either we have an explicit point where the
    // auth portion cannot go past, or the last @ char is the decider.
    var auth, atSign;
    if (hostEnd === -1) {
      // atSign can be anywhere.
      atSign = rest.lastIndexOf('@');
    } else {
      // atSign must be in auth portion.
      // http://a@b/c@d => host:b auth:a path:/c@d
      atSign = rest.lastIndexOf('@', hostEnd);
    }

    // Now we have a portion which is definitely the auth.
    // Pull that off.
    if (atSign !== -1) {
      auth = rest.slice(0, atSign);
      rest = rest.slice(atSign + 1);
      this.auth = decodeURIComponent(auth);
    }

    // the host is the remaining to the left of the first non-host char
    hostEnd = -1;
    for (var i = 0; i < nonHostChars.length; i++) {
      var hec = rest.indexOf(nonHostChars[i]);
      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))
        hostEnd = hec;
    }
    // if we still have not hit it, then the entire thing is a host.
    if (hostEnd === -1)
      hostEnd = rest.length;

    this.host = rest.slice(0, hostEnd);
    rest = rest.slice(hostEnd);

    // pull out port.
    this.parseHost();

    // we've indicated that there is a hostname,
    // so even if it's empty, it has to be present.
    this.hostname = this.hostname || '';

    // if hostname begins with [ and ends with ]
    // assume that it's an IPv6 address.
    var ipv6Hostname = this.hostname[0] === '[' &&
        this.hostname[this.hostname.length - 1] === ']';

    // validate a little.
    if (!ipv6Hostname) {
      var hostparts = this.hostname.split(/\./);
      for (var i = 0, l = hostparts.length; i < l; i++) {
        var part = hostparts[i];
        if (!part) continue;
        if (!part.match(hostnamePartPattern)) {
          var newpart = '';
          for (var j = 0, k = part.length; j < k; j++) {
            if (part.charCodeAt(j) > 127) {
              // we replace non-ASCII char with a temporary placeholder
              // we need this to make sure size of hostname is not
              // broken by replacing non-ASCII by nothing
              newpart += 'x';
            } else {
              newpart += part[j];
            }
          }
          // we test again with ASCII char only
          if (!newpart.match(hostnamePartPattern)) {
            var validParts = hostparts.slice(0, i);
            var notHost = hostparts.slice(i + 1);
            var bit = part.match(hostnamePartStart);
            if (bit) {
              validParts.push(bit[1]);
              notHost.unshift(bit[2]);
            }
            if (notHost.length) {
              rest = '/' + notHost.join('.') + rest;
            }
            this.hostname = validParts.join('.');
            break;
          }
        }
      }
    }

    if (this.hostname.length > hostnameMaxLen) {
      this.hostname = '';
    } else {
      // hostnames are always lower case.
      this.hostname = this.hostname.toLowerCase();
    }

    if (!ipv6Hostname) {
      // IDNA Support: Returns a puny coded representation of "domain".
      // It only converts the part of the domain name that
      // has non ASCII characters. I.e. it dosent matter if
      // you call it with a domain that already is in ASCII.
      var domainArray = this.hostname.split('.');
      var newOut = [];
      for (var i = 0; i < domainArray.length; ++i) {
        var s = domainArray[i];
        newOut.push(s.match(/[^A-Za-z0-9_-]/) ?
            'xn--' + punycode.encode(s) : s);
      }
      this.hostname = newOut.join('.');
    }

    var p = this.port ? ':' + this.port : '';
    var h = this.hostname || '';
    this.host = h + p;
    this.href += this.host;

    // strip [ and ] from the hostname
    // the host field still retains them, though
    if (ipv6Hostname) {
      this.hostname = this.hostname.substr(1, this.hostname.length - 2);
      if (rest[0] !== '/') {
        rest = '/' + rest;
      }
    }
  }

  // now rest is set to the post-host stuff.
  // chop off any delim chars.
  if (!unsafeProtocol[lowerProto]) {

    // First, make 100% sure that any "autoEscape" chars get
    // escaped, even if encodeURIComponent doesn't think they
    // need to be.
    for (var i = 0, l = autoEscape.length; i < l; i++) {
      var ae = autoEscape[i];
      var esc = encodeURIComponent(ae);
      if (esc === ae) {
        esc = escape(ae);
      }
      rest = rest.split(ae).join(esc);
    }
  }


  // chop off from the tail first.
  var hash = rest.indexOf('#');
  if (hash !== -1) {
    // got a fragment string.
    this.hash = rest.substr(hash);
    rest = rest.slice(0, hash);
  }
  var qm = rest.indexOf('?');
  if (qm !== -1) {
    this.search = rest.substr(qm);
    this.query = rest.substr(qm + 1);
    if (parseQueryString) {
      this.query = querystring.parse(this.query);
    }
    rest = rest.slice(0, qm);
  } else if (parseQueryString) {
    // no query string, but parseQueryString still requested
    this.search = '';
    this.query = {};
  }
  if (rest) this.pathname = rest;
  if (slashedProtocol[lowerProto] &&
      this.hostname && !this.pathname) {
    this.pathname = '/';
  }

  //to support http.request
  if (this.pathname || this.search) {
    var p = this.pathname || '';
    var s = this.search || '';
    this.path = p + s;
  }

  // finally, reconstruct the href based on what has been validated.
  this.href = this.format();
  return this;
};

// format a parsed object into a url string
function urlFormat(obj) {
  // ensure it's an object, and not a string url.
  // If it's an obj, this is a no-op.
  // this way, you can call url_format() on strings
  // to clean up potentially wonky urls.
  if (isString(obj)) obj = urlParse(obj);
  if (!(obj instanceof Url)) return Url.prototype.format.call(obj);
  return obj.format();
}

Url.prototype.format = function() {
  var auth = this.auth || '';
  if (auth) {
    auth = encodeURIComponent(auth);
    auth = auth.replace(/%3A/i, ':');
    auth += '@';
  }

  var protocol = this.protocol || '',
      pathname = this.pathname || '',
      hash = this.hash || '',
      host = false,
      query = '';

  if (this.host) {
    host = auth + this.host;
  } else if (this.hostname) {
    host = auth + (this.hostname.indexOf(':') === -1 ?
        this.hostname :
        '[' + this.hostname + ']');
    if (this.port) {
      host += ':' + this.port;
    }
  }

  if (this.query &&
      isObject(this.query) &&
      Object.keys(this.query).length) {
    query = querystring.stringify(this.query);
  }

  var search = this.search || (query && ('?' + query)) || '';

  if (protocol && protocol.substr(-1) !== ':') protocol += ':';

  // only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.
  // unless they had them to begin with.
  if (this.slashes ||
      (!protocol || slashedProtocol[protocol]) && host !== false) {
    host = '//' + (host || '');
    if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;
  } else if (!host) {
    host = '';
  }

  if (hash && hash.charAt(0) !== '#') hash = '#' + hash;
  if (search && search.charAt(0) !== '?') search = '?' + search;

  pathname = pathname.replace(/[?#]/g, function(match) {
    return encodeURIComponent(match);
  });
  search = search.replace('#', '%23');

  return protocol + host + pathname + search + hash;
};

function urlResolve(source, relative) {
  return urlParse(source, false, true).resolve(relative);
}

Url.prototype.resolve = function(relative) {
  return this.resolveObject(urlParse(relative, false, true)).format();
};

function urlResolveObject(source, relative) {
  if (!source) return relative;
  return urlParse(source, false, true).resolveObject(relative);
}

Url.prototype.resolveObject = function(relative) {
  if (isString(relative)) {
    var rel = new Url();
    rel.parse(relative, false, true);
    relative = rel;
  }

  var result = new Url();
  Object.keys(this).forEach(function(k) {
    result[k] = this[k];
  }, this);

  // hash is always overridden, no matter what.
  // even href="" will remove it.
  result.hash = relative.hash;

  // if the relative url is empty, then there's nothing left to do here.
  if (relative.href === '') {
    result.href = result.format();
    return result;
  }

  // hrefs like //foo/bar always cut to the protocol.
  if (relative.slashes && !relative.protocol) {
    // take everything except the protocol from relative
    Object.keys(relative).forEach(function(k) {
      if (k !== 'protocol')
        result[k] = relative[k];
    });

    //urlParse appends trailing / to urls like http://www.example.com
    if (slashedProtocol[result.protocol] &&
        result.hostname && !result.pathname) {
      result.path = result.pathname = '/';
    }

    result.href = result.format();
    return result;
  }

  if (relative.protocol && relative.protocol !== result.protocol) {
    // if it's a known url protocol, then changing
    // the protocol does weird things
    // first, if it's not file:, then we MUST have a host,
    // and if there was a path
    // to begin with, then we MUST have a path.
    // if it is file:, then the host is dropped,
    // because that's known to be hostless.
    // anything else is assumed to be absolute.
    if (!slashedProtocol[relative.protocol]) {
      Object.keys(relative).forEach(function(k) {
        result[k] = relative[k];
      });
      result.href = result.format();
      return result;
    }

    result.protocol = relative.protocol;
    if (!relative.host && !hostlessProtocol[relative.protocol]) {
      var relPath = (relative.pathname || '').split('/');
      while (relPath.length && !(relative.host = relPath.shift()));
      if (!relative.host) relative.host = '';
      if (!relative.hostname) relative.hostname = '';
      if (relPath[0] !== '') relPath.unshift('');
      if (relPath.length < 2) relPath.unshift('');
      result.pathname = relPath.join('/');
    } else {
      result.pathname = relative.pathname;
    }
    result.search = relative.search;
    result.query = relative.query;
    result.host = relative.host || '';
    result.auth = relative.auth;
    result.hostname = relative.hostname || relative.host;
    result.port = relative.port;
    // to support http.request
    if (result.pathname || result.search) {
      var p = result.pathname || '';
      var s = result.search || '';
      result.path = p + s;
    }
    result.slashes = result.slashes || relative.slashes;
    result.href = result.format();
    return result;
  }

  var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),
      isRelAbs = (
          relative.host ||
          relative.pathname && relative.pathname.charAt(0) === '/'
      ),
      mustEndAbs = (isRelAbs || isSourceAbs ||
                    (result.host && relative.pathname)),
      removeAllDots = mustEndAbs,
      srcPath = result.pathname && result.pathname.split('/') || [],
      relPath = relative.pathname && relative.pathname.split('/') || [],
      psychotic = result.protocol && !slashedProtocol[result.protocol];

  // if the url is a non-slashed url, then relative
  // links like ../.. should be able
  // to crawl up to the hostname, as well.  This is strange.
  // result.protocol has already been set by now.
  // Later on, put the first path part into the host field.
  if (psychotic) {
    result.hostname = '';
    result.port = null;
    if (result.host) {
      if (srcPath[0] === '') srcPath[0] = result.host;
      else srcPath.unshift(result.host);
    }
    result.host = '';
    if (relative.protocol) {
      relative.hostname = null;
      relative.port = null;
      if (relative.host) {
        if (relPath[0] === '') relPath[0] = relative.host;
        else relPath.unshift(relative.host);
      }
      relative.host = null;
    }
    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');
  }

  if (isRelAbs) {
    // it's absolute.
    result.host = (relative.host || relative.host === '') ?
                  relative.host : result.host;
    result.hostname = (relative.hostname || relative.hostname === '') ?
                      relative.hostname : result.hostname;
    result.search = relative.search;
    result.query = relative.query;
    srcPath = relPath;
    // fall through to the dot-handling below.
  } else if (relPath.length) {
    // it's relative
    // throw away the existing file, and take the new path instead.
    if (!srcPath) srcPath = [];
    srcPath.pop();
    srcPath = srcPath.concat(relPath);
    result.search = relative.search;
    result.query = relative.query;
  } else if (!isNullOrUndefined(relative.search)) {
    // just pull out the search.
    // like href='?foo'.
    // Put this after the other two cases because it simplifies the booleans
    if (psychotic) {
      result.hostname = result.host = srcPath.shift();
      //occationaly the auth can get stuck only in host
      //this especialy happens in cases like
      //url.resolveObject('mailto:local1@domain1', 'local2@domain2')
      var authInHost = result.host && result.host.indexOf('@') > 0 ?
                       result.host.split('@') : false;
      if (authInHost) {
        result.auth = authInHost.shift();
        result.host = result.hostname = authInHost.shift();
      }
    }
    result.search = relative.search;
    result.query = relative.query;
    //to support http.request
    if (!isNull(result.pathname) || !isNull(result.search)) {
      result.path = (result.pathname ? result.pathname : '') +
                    (result.search ? result.search : '');
    }
    result.href = result.format();
    return result;
  }

  if (!srcPath.length) {
    // no path at all.  easy.
    // we've already handled the other stuff above.
    result.pathname = null;
    //to support http.request
    if (result.search) {
      result.path = '/' + result.search;
    } else {
      result.path = null;
    }
    result.href = result.format();
    return result;
  }

  // if a url ENDs in . or .., then it must get a trailing slash.
  // however, if it ends in anything else non-slashy,
  // then it must NOT get a trailing slash.
  var last = srcPath.slice(-1)[0];
  var hasTrailingSlash = (
      (result.host || relative.host) && (last === '.' || last === '..') ||
      last === '');

  // strip single dots, resolve double dots to parent dir
  // if the path tries to go above the root, `up` ends up > 0
  var up = 0;
  for (var i = srcPath.length; i >= 0; i--) {
    last = srcPath[i];
    if (last == '.') {
      srcPath.splice(i, 1);
    } else if (last === '..') {
      srcPath.splice(i, 1);
      up++;
    } else if (up) {
      srcPath.splice(i, 1);
      up--;
    }
  }

  // if the path is allowed to go above the root, restore leading ..s
  if (!mustEndAbs && !removeAllDots) {
    for (; up--; up) {
      srcPath.unshift('..');
    }
  }

  if (mustEndAbs && srcPath[0] !== '' &&
      (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {
    srcPath.unshift('');
  }

  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {
    srcPath.push('');
  }

  var isAbsolute = srcPath[0] === '' ||
      (srcPath[0] && srcPath[0].charAt(0) === '/');

  // put the host back
  if (psychotic) {
    result.hostname = result.host = isAbsolute ? '' :
                                    srcPath.length ? srcPath.shift() : '';
    //occationaly the auth can get stuck only in host
    //this especialy happens in cases like
    //url.resolveObject('mailto:local1@domain1', 'local2@domain2')
    var authInHost = result.host && result.host.indexOf('@') > 0 ?
                     result.host.split('@') : false;
    if (authInHost) {
      result.auth = authInHost.shift();
      result.host = result.hostname = authInHost.shift();
    }
  }

  mustEndAbs = mustEndAbs || (result.host && srcPath.length);

  if (mustEndAbs && !isAbsolute) {
    srcPath.unshift('');
  }

  if (!srcPath.length) {
    result.pathname = null;
    result.path = null;
  } else {
    result.pathname = srcPath.join('/');
  }

  //to support request.http
  if (!isNull(result.pathname) || !isNull(result.search)) {
    result.path = (result.pathname ? result.pathname : '') +
                  (result.search ? result.search : '');
  }
  result.auth = relative.auth || result.auth;
  result.slashes = result.slashes || relative.slashes;
  result.href = result.format();
  return result;
};

Url.prototype.parseHost = function() {
  var host = this.host;
  var port = portPattern.exec(host);
  if (port) {
    port = port[0];
    if (port !== ':') {
      this.port = port.substr(1);
    }
    host = host.substr(0, host.length - port.length);
  }
  if (host) this.hostname = host;
};

function isString(arg) {
  return typeof arg === "string";
}

function isObject(arg) {
  return typeof arg === 'object' && arg !== null;
}

function isNull(arg) {
  return arg === null;
}
function isNullOrUndefined(arg) {
  return  arg == null;
}

},{"punycode":454,"querystring":457}],462:[function(require,module,exports){
if (typeof Object.create === 'function') {
  // implementation from standard node.js 'util' module
  module.exports = function inherits(ctor, superCtor) {
    ctor.super_ = superCtor
    ctor.prototype = Object.create(superCtor.prototype, {
      constructor: {
        value: ctor,
        enumerable: false,
        writable: true,
        configurable: true
      }
    });
  };
} else {
  // old school shim for old browsers
  module.exports = function inherits(ctor, superCtor) {
    ctor.super_ = superCtor
    var TempCtor = function () {}
    TempCtor.prototype = superCtor.prototype
    ctor.prototype = new TempCtor()
    ctor.prototype.constructor = ctor
  }
}

},{}],463:[function(require,module,exports){
module.exports = function isBuffer(arg) {
  return arg && typeof arg === 'object'
    && typeof arg.copy === 'function'
    && typeof arg.fill === 'function'
    && typeof arg.readUInt8 === 'function';
}
},{}],464:[function(require,module,exports){
(function (process,global){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

var formatRegExp = /%[sdj%]/g;
exports.format = function(f) {
  if (!isString(f)) {
    var objects = [];
    for (var i = 0; i < arguments.length; i++) {
      objects.push(inspect(arguments[i]));
    }
    return objects.join(' ');
  }

  var i = 1;
  var args = arguments;
  var len = args.length;
  var str = String(f).replace(formatRegExp, function(x) {
    if (x === '%%') return '%';
    if (i >= len) return x;
    switch (x) {
      case '%s': return String(args[i++]);
      case '%d': return Number(args[i++]);
      case '%j':
        try {
          return JSON.stringify(args[i++]);
        } catch (_) {
          return '[Circular]';
        }
      default:
        return x;
    }
  });
  for (var x = args[i]; i < len; x = args[++i]) {
    if (isNull(x) || !isObject(x)) {
      str += ' ' + x;
    } else {
      str += ' ' + inspect(x);
    }
  }
  return str;
};


// Mark that a method should not be used.
// Returns a modified function which warns once by default.
// If --no-deprecation is set, then it is a no-op.
exports.deprecate = function(fn, msg) {
  // Allow for deprecating things in the process of starting up.
  if (isUndefined(global.process)) {
    return function() {
      return exports.deprecate(fn, msg).apply(this, arguments);
    };
  }

  if (process.noDeprecation === true) {
    return fn;
  }

  var warned = false;
  function deprecated() {
    if (!warned) {
      if (process.throwDeprecation) {
        throw new Error(msg);
      } else if (process.traceDeprecation) {
        console.trace(msg);
      } else {
        console.error(msg);
      }
      warned = true;
    }
    return fn.apply(this, arguments);
  }

  return deprecated;
};


var debugs = {};
var debugEnviron;
exports.debuglog = function(set) {
  if (isUndefined(debugEnviron))
    debugEnviron = process.env.NODE_DEBUG || '';
  set = set.toUpperCase();
  if (!debugs[set]) {
    if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
      var pid = process.pid;
      debugs[set] = function() {
        var msg = exports.format.apply(exports, arguments);
        console.error('%s %d: %s', set, pid, msg);
      };
    } else {
      debugs[set] = function() {};
    }
  }
  return debugs[set];
};


/**
 * Echos the value of a value. Trys to print the value out
 * in the best way possible given the different types.
 *
 * @param {Object} obj The object to print out.
 * @param {Object} opts Optional options object that alters the output.
 */
/* legacy: obj, showHidden, depth, colors*/
function inspect(obj, opts) {
  // default options
  var ctx = {
    seen: [],
    stylize: stylizeNoColor
  };
  // legacy...
  if (arguments.length >= 3) ctx.depth = arguments[2];
  if (arguments.length >= 4) ctx.colors = arguments[3];
  if (isBoolean(opts)) {
    // legacy...
    ctx.showHidden = opts;
  } else if (opts) {
    // got an "options" object
    exports._extend(ctx, opts);
  }
  // set default options
  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
  if (isUndefined(ctx.depth)) ctx.depth = 2;
  if (isUndefined(ctx.colors)) ctx.colors = false;
  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
  if (ctx.colors) ctx.stylize = stylizeWithColor;
  return formatValue(ctx, obj, ctx.depth);
}
exports.inspect = inspect;


// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
inspect.colors = {
  'bold' : [1, 22],
  'italic' : [3, 23],
  'underline' : [4, 24],
  'inverse' : [7, 27],
  'white' : [37, 39],
  'grey' : [90, 39],
  'black' : [30, 39],
  'blue' : [34, 39],
  'cyan' : [36, 39],
  'green' : [32, 39],
  'magenta' : [35, 39],
  'red' : [31, 39],
  'yellow' : [33, 39]
};

// Don't use 'blue' not visible on cmd.exe
inspect.styles = {
  'special': 'cyan',
  'number': 'yellow',
  'boolean': 'yellow',
  'undefined': 'grey',
  'null': 'bold',
  'string': 'green',
  'date': 'magenta',
  // "name": intentionally not styling
  'regexp': 'red'
};


function stylizeWithColor(str, styleType) {
  var style = inspect.styles[styleType];

  if (style) {
    return '\u001b[' + inspect.colors[style][0] + 'm' + str +
           '\u001b[' + inspect.colors[style][1] + 'm';
  } else {
    return str;
  }
}


function stylizeNoColor(str, styleType) {
  return str;
}


function arrayToHash(array) {
  var hash = {};

  array.forEach(function(val, idx) {
    hash[val] = true;
  });

  return hash;
}


function formatValue(ctx, value, recurseTimes) {
  // Provide a hook for user-specified inspect functions.
  // Check that value is an object with an inspect function on it
  if (ctx.customInspect &&
      value &&
      isFunction(value.inspect) &&
      // Filter out the util module, it's inspect function is special
      value.inspect !== exports.inspect &&
      // Also filter out any prototype objects using the circular check.
      !(value.constructor && value.constructor.prototype === value)) {
    var ret = value.inspect(recurseTimes, ctx);
    if (!isString(ret)) {
      ret = formatValue(ctx, ret, recurseTimes);
    }
    return ret;
  }

  // Primitive types cannot have properties
  var primitive = formatPrimitive(ctx, value);
  if (primitive) {
    return primitive;
  }

  // Look up the keys of the object.
  var keys = Object.keys(value);
  var visibleKeys = arrayToHash(keys);

  if (ctx.showHidden) {
    keys = Object.getOwnPropertyNames(value);
  }

  // IE doesn't make error fields non-enumerable
  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
  if (isError(value)
      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
    return formatError(value);
  }

  // Some type of object without properties can be shortcutted.
  if (keys.length === 0) {
    if (isFunction(value)) {
      var name = value.name ? ': ' + value.name : '';
      return ctx.stylize('[Function' + name + ']', 'special');
    }
    if (isRegExp(value)) {
      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
    }
    if (isDate(value)) {
      return ctx.stylize(Date.prototype.toString.call(value), 'date');
    }
    if (isError(value)) {
      return formatError(value);
    }
  }

  var base = '', array = false, braces = ['{', '}'];

  // Make Array say that they are Array
  if (isArray(value)) {
    array = true;
    braces = ['[', ']'];
  }

  // Make functions say that they are functions
  if (isFunction(value)) {
    var n = value.name ? ': ' + value.name : '';
    base = ' [Function' + n + ']';
  }

  // Make RegExps say that they are RegExps
  if (isRegExp(value)) {
    base = ' ' + RegExp.prototype.toString.call(value);
  }

  // Make dates with properties first say the date
  if (isDate(value)) {
    base = ' ' + Date.prototype.toUTCString.call(value);
  }

  // Make error with message first say the error
  if (isError(value)) {
    base = ' ' + formatError(value);
  }

  if (keys.length === 0 && (!array || value.length == 0)) {
    return braces[0] + base + braces[1];
  }

  if (recurseTimes < 0) {
    if (isRegExp(value)) {
      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
    } else {
      return ctx.stylize('[Object]', 'special');
    }
  }

  ctx.seen.push(value);

  var output;
  if (array) {
    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
  } else {
    output = keys.map(function(key) {
      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
    });
  }

  ctx.seen.pop();

  return reduceToSingleString(output, base, braces);
}


function formatPrimitive(ctx, value) {
  if (isUndefined(value))
    return ctx.stylize('undefined', 'undefined');
  if (isString(value)) {
    var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
                                             .replace(/'/g, "\\'")
                                             .replace(/\\"/g, '"') + '\'';
    return ctx.stylize(simple, 'string');
  }
  if (isNumber(value))
    return ctx.stylize('' + value, 'number');
  if (isBoolean(value))
    return ctx.stylize('' + value, 'boolean');
  // For some reason typeof null is "object", so special case here.
  if (isNull(value))
    return ctx.stylize('null', 'null');
}


function formatError(value) {
  return '[' + Error.prototype.toString.call(value) + ']';
}


function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
  var output = [];
  for (var i = 0, l = value.length; i < l; ++i) {
    if (hasOwnProperty(value, String(i))) {
      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
          String(i), true));
    } else {
      output.push('');
    }
  }
  keys.forEach(function(key) {
    if (!key.match(/^\d+$/)) {
      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
          key, true));
    }
  });
  return output;
}


function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
  var name, str, desc;
  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
  if (desc.get) {
    if (desc.set) {
      str = ctx.stylize('[Getter/Setter]', 'special');
    } else {
      str = ctx.stylize('[Getter]', 'special');
    }
  } else {
    if (desc.set) {
      str = ctx.stylize('[Setter]', 'special');
    }
  }
  if (!hasOwnProperty(visibleKeys, key)) {
    name = '[' + key + ']';
  }
  if (!str) {
    if (ctx.seen.indexOf(desc.value) < 0) {
      if (isNull(recurseTimes)) {
        str = formatValue(ctx, desc.value, null);
      } else {
        str = formatValue(ctx, desc.value, recurseTimes - 1);
      }
      if (str.indexOf('\n') > -1) {
        if (array) {
          str = str.split('\n').map(function(line) {
            return '  ' + line;
          }).join('\n').substr(2);
        } else {
          str = '\n' + str.split('\n').map(function(line) {
            return '   ' + line;
          }).join('\n');
        }
      }
    } else {
      str = ctx.stylize('[Circular]', 'special');
    }
  }
  if (isUndefined(name)) {
    if (array && key.match(/^\d+$/)) {
      return str;
    }
    name = JSON.stringify('' + key);
    if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
      name = name.substr(1, name.length - 2);
      name = ctx.stylize(name, 'name');
    } else {
      name = name.replace(/'/g, "\\'")
                 .replace(/\\"/g, '"')
                 .replace(/(^"|"$)/g, "'");
      name = ctx.stylize(name, 'string');
    }
  }

  return name + ': ' + str;
}


function reduceToSingleString(output, base, braces) {
  var numLinesEst = 0;
  var length = output.reduce(function(prev, cur) {
    numLinesEst++;
    if (cur.indexOf('\n') >= 0) numLinesEst++;
    return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
  }, 0);

  if (length > 60) {
    return braces[0] +
           (base === '' ? '' : base + '\n ') +
           ' ' +
           output.join(',\n  ') +
           ' ' +
           braces[1];
  }

  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
}


// NOTE: These type checking functions intentionally don't use `instanceof`
// because it is fragile and can be easily faked with `Object.create()`.
function isArray(ar) {
  return Array.isArray(ar);
}
exports.isArray = isArray;

function isBoolean(arg) {
  return typeof arg === 'boolean';
}
exports.isBoolean = isBoolean;

function isNull(arg) {
  return arg === null;
}
exports.isNull = isNull;

function isNullOrUndefined(arg) {
  return arg == null;
}
exports.isNullOrUndefined = isNullOrUndefined;

function isNumber(arg) {
  return typeof arg === 'number';
}
exports.isNumber = isNumber;

function isString(arg) {
  return typeof arg === 'string';
}
exports.isString = isString;

function isSymbol(arg) {
  return typeof arg === 'symbol';
}
exports.isSymbol = isSymbol;

function isUndefined(arg) {
  return arg === void 0;
}
exports.isUndefined = isUndefined;

function isRegExp(re) {
  return isObject(re) && objectToString(re) === '[object RegExp]';
}
exports.isRegExp = isRegExp;

function isObject(arg) {
  return typeof arg === 'object' && arg !== null;
}
exports.isObject = isObject;

function isDate(d) {
  return isObject(d) && objectToString(d) === '[object Date]';
}
exports.isDate = isDate;

function isError(e) {
  return isObject(e) &&
      (objectToString(e) === '[object Error]' || e instanceof Error);
}
exports.isError = isError;

function isFunction(arg) {
  return typeof arg === 'function';
}
exports.isFunction = isFunction;

function isPrimitive(arg) {
  return arg === null ||
         typeof arg === 'boolean' ||
         typeof arg === 'number' ||
         typeof arg === 'string' ||
         typeof arg === 'symbol' ||  // ES6 symbol
         typeof arg === 'undefined';
}
exports.isPrimitive = isPrimitive;

exports.isBuffer = require('./support/isBuffer');

function objectToString(o) {
  return Object.prototype.toString.call(o);
}


function pad(n) {
  return n < 10 ? '0' + n.toString(10) : n.toString(10);
}


var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
              'Oct', 'Nov', 'Dec'];

// 26 Feb 16:19:34
function timestamp() {
  var d = new Date();
  var time = [pad(d.getHours()),
              pad(d.getMinutes()),
              pad(d.getSeconds())].join(':');
  return [d.getDate(), months[d.getMonth()], time].join(' ');
}


// log is just a thin wrapper to console.log that prepends a timestamp
exports.log = function() {
  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
};


/**
 * Inherit the prototype methods from one constructor into another.
 *
 * The Function.prototype.inherits from lang.js rewritten as a standalone
 * function (not on Function.prototype). NOTE: If this file is to be loaded
 * during bootstrapping this function needs to be rewritten using some native
 * functions as prototype setup using normal JavaScript does not work as
 * expected during bootstrapping (see mirror.js in r114903).
 *
 * @param {function} ctor Constructor function which needs to inherit the
 *     prototype.
 * @param {function} superCtor Constructor function to inherit prototype from.
 */
exports.inherits = require('inherits');

exports._extend = function(origin, add) {
  // Don't do anything if add isn't an object
  if (!add || !isObject(add)) return origin;

  var keys = Object.keys(add);
  var i = keys.length;
  while (i--) {
    origin[keys[i]] = add[keys[i]];
  }
  return origin;
};

function hasOwnProperty(obj, prop) {
  return Object.prototype.hasOwnProperty.call(obj, prop);
}

}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{"./support/isBuffer":463,"_process":453,"inherits":462}],465:[function(require,module,exports){
var v1 = require('./v1');
var v4 = require('./v4');

var uuid = v4;
uuid.v1 = v1;
uuid.v4 = v4;

module.exports = uuid;

},{"./v1":468,"./v4":469}],466:[function(require,module,exports){
/**
 * Convert array of 16 byte values to UUID string format of the form:
 * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
 */
var byteToHex = [];
for (var i = 0; i < 256; ++i) {
  byteToHex[i] = (i + 0x100).toString(16).substr(1);
}

function bytesToUuid(buf, offset) {
  var i = offset || 0;
  var bth = byteToHex;
  return bth[buf[i++]] + bth[buf[i++]] +
          bth[buf[i++]] + bth[buf[i++]] + '-' +
          bth[buf[i++]] + bth[buf[i++]] + '-' +
          bth[buf[i++]] + bth[buf[i++]] + '-' +
          bth[buf[i++]] + bth[buf[i++]] + '-' +
          bth[buf[i++]] + bth[buf[i++]] +
          bth[buf[i++]] + bth[buf[i++]] +
          bth[buf[i++]] + bth[buf[i++]];
}

module.exports = bytesToUuid;

},{}],467:[function(require,module,exports){
(function (global){
// Unique ID creation requires a high quality random # generator.  In the
// browser this is a little complicated due to unknown quality of Math.random()
// and inconsistent support for the `crypto` API.  We do the best we can via
// feature-detection
var rng;

var crypto = global.crypto || global.msCrypto; // for IE 11
if (crypto && crypto.getRandomValues) {
  // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto
  var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef
  rng = function whatwgRNG() {
    crypto.getRandomValues(rnds8);
    return rnds8;
  };
}

if (!rng) {
  // Math.random()-based (RNG)
  //
  // If all else fails, use Math.random().  It's fast, but is of unspecified
  // quality.
  var rnds = new Array(16);
  rng = function() {
    for (var i = 0, r; i < 16; i++) {
      if ((i & 0x03) === 0) r = Math.random() * 0x100000000;
      rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;
    }

    return rnds;
  };
}

module.exports = rng;

}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{}],468:[function(require,module,exports){
var rng = require('./lib/rng');
var bytesToUuid = require('./lib/bytesToUuid');

// **`v1()` - Generate time-based UUID**
//
// Inspired by https://github.com/LiosK/UUID.js
// and http://docs.python.org/library/uuid.html

// random #'s we need to init node and clockseq
var _seedBytes = rng();

// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
var _nodeId = [
  _seedBytes[0] | 0x01,
  _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]
];

// Per 4.2.2, randomize (14 bit) clockseq
var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff;

// Previous uuid creation time
var _lastMSecs = 0, _lastNSecs = 0;

// See https://github.com/broofa/node-uuid for API details
function v1(options, buf, offset) {
  var i = buf && offset || 0;
  var b = buf || [];

  options = options || {};

  var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;

  // UUID timestamps are 100 nano-second units since the Gregorian epoch,
  // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so
  // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
  // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
  var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();

  // Per 4.2.1.2, use count of uuid's generated during the current clock
  // cycle to simulate higher resolution clock
  var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;

  // Time since last uuid creation (in msecs)
  var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;

  // Per 4.2.1.2, Bump clockseq on clock regression
  if (dt < 0 && options.clockseq === undefined) {
    clockseq = clockseq + 1 & 0x3fff;
  }

  // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
  // time interval
  if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {
    nsecs = 0;
  }

  // Per 4.2.1.2 Throw error if too many uuids are requested
  if (nsecs >= 10000) {
    throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec');
  }

  _lastMSecs = msecs;
  _lastNSecs = nsecs;
  _clockseq = clockseq;

  // Per 4.1.4 - Convert from unix epoch to Gregorian epoch
  msecs += 12219292800000;

  // `time_low`
  var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
  b[i++] = tl >>> 24 & 0xff;
  b[i++] = tl >>> 16 & 0xff;
  b[i++] = tl >>> 8 & 0xff;
  b[i++] = tl & 0xff;

  // `time_mid`
  var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;
  b[i++] = tmh >>> 8 & 0xff;
  b[i++] = tmh & 0xff;

  // `time_high_and_version`
  b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
  b[i++] = tmh >>> 16 & 0xff;

  // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
  b[i++] = clockseq >>> 8 | 0x80;

  // `clock_seq_low`
  b[i++] = clockseq & 0xff;

  // `node`
  var node = options.node || _nodeId;
  for (var n = 0; n < 6; ++n) {
    b[i + n] = node[n];
  }

  return buf ? buf : bytesToUuid(b);
}

module.exports = v1;

},{"./lib/bytesToUuid":466,"./lib/rng":467}],469:[function(require,module,exports){
var rng = require('./lib/rng');
var bytesToUuid = require('./lib/bytesToUuid');

function v4(options, buf, offset) {
  var i = buf && offset || 0;

  if (typeof(options) == 'string') {
    buf = options == 'binary' ? new Array(16) : null;
    options = null;
  }
  options = options || {};

  var rnds = options.random || (options.rng || rng)();

  // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
  rnds[6] = (rnds[6] & 0x0f) | 0x40;
  rnds[8] = (rnds[8] & 0x3f) | 0x80;

  // Copy bytes to buffer, if provided
  if (buf) {
    for (var ii = 0; ii < 16; ++ii) {
      buf[i + ii] = rnds[ii];
    }
  }

  return buf || bytesToUuid(rnds);
}

module.exports = v4;

},{"./lib/bytesToUuid":466,"./lib/rng":467}],470:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLAttribute, create;

  create = require('lodash/create');

  module.exports = XMLAttribute = (function() {
    function XMLAttribute(parent, name, value) {
      this.stringify = parent.stringify;
      if (name == null) {
        throw new Error("Missing attribute name of element " + parent.name);
      }
      if (value == null) {
        throw new Error("Missing attribute value for attribute " + name + " of element " + parent.name);
      }
      this.name = this.stringify.attName(name);
      this.value = this.stringify.attValue(value);
    }

    XMLAttribute.prototype.clone = function() {
      return create(XMLAttribute.prototype, this);
    };

    XMLAttribute.prototype.toString = function(options, level) {
      return ' ' + this.name + '="' + this.value + '"';
    };

    return XMLAttribute;

  })();

}).call(this);

},{"lodash/create":430}],471:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLBuilder, XMLDeclaration, XMLDocType, XMLElement, XMLStringifier;

  XMLStringifier = require('./XMLStringifier');

  XMLDeclaration = require('./XMLDeclaration');

  XMLDocType = require('./XMLDocType');

  XMLElement = require('./XMLElement');

  module.exports = XMLBuilder = (function() {
    function XMLBuilder(name, options) {
      var root, temp;
      if (name == null) {
        throw new Error("Root element needs a name");
      }
      if (options == null) {
        options = {};
      }
      this.options = options;
      this.stringify = new XMLStringifier(options);
      temp = new XMLElement(this, 'doc');
      root = temp.element(name);
      root.isRoot = true;
      root.documentObject = this;
      this.rootObject = root;
      if (!options.headless) {
        root.declaration(options);
        if ((options.pubID != null) || (options.sysID != null)) {
          root.doctype(options);
        }
      }
    }

    XMLBuilder.prototype.root = function() {
      return this.rootObject;
    };

    XMLBuilder.prototype.end = function(options) {
      return this.toString(options);
    };

    XMLBuilder.prototype.toString = function(options) {
      var indent, newline, offset, pretty, r, ref, ref1, ref2;
      pretty = (options != null ? options.pretty : void 0) || false;
      indent = (ref = options != null ? options.indent : void 0) != null ? ref : '  ';
      offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0;
      newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n';
      r = '';
      if (this.xmldec != null) {
        r += this.xmldec.toString(options);
      }
      if (this.doctype != null) {
        r += this.doctype.toString(options);
      }
      r += this.rootObject.toString(options);
      if (pretty && r.slice(-newline.length) === newline) {
        r = r.slice(0, -newline.length);
      }
      return r;
    };

    return XMLBuilder;

  })();

}).call(this);

},{"./XMLDeclaration":478,"./XMLDocType":479,"./XMLElement":480,"./XMLStringifier":484}],472:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLCData, XMLNode, create,
    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
    hasProp = {}.hasOwnProperty;

  create = require('lodash/create');

  XMLNode = require('./XMLNode');

  module.exports = XMLCData = (function(superClass) {
    extend(XMLCData, superClass);

    function XMLCData(parent, text) {
      XMLCData.__super__.constructor.call(this, parent);
      if (text == null) {
        throw new Error("Missing CDATA text");
      }
      this.text = this.stringify.cdata(text);
    }

    XMLCData.prototype.clone = function() {
      return create(XMLCData.prototype, this);
    };

    XMLCData.prototype.toString = function(options, level) {
      var indent, newline, offset, pretty, r, ref, ref1, ref2, space;
      pretty = (options != null ? options.pretty : void 0) || false;
      indent = (ref = options != null ? options.indent : void 0) != null ? ref : '  ';
      offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0;
      newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n';
      level || (level = 0);
      space = new Array(level + offset + 1).join(indent);
      r = '';
      if (pretty) {
        r += space;
      }
      r += '<![CDATA[' + this.text + ']]>';
      if (pretty) {
        r += newline;
      }
      return r;
    };

    return XMLCData;

  })(XMLNode);

}).call(this);

},{"./XMLNode":481,"lodash/create":430}],473:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLComment, XMLNode, create,
    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
    hasProp = {}.hasOwnProperty;

  create = require('lodash/create');

  XMLNode = require('./XMLNode');

  module.exports = XMLComment = (function(superClass) {
    extend(XMLComment, superClass);

    function XMLComment(parent, text) {
      XMLComment.__super__.constructor.call(this, parent);
      if (text == null) {
        throw new Error("Missing comment text");
      }
      this.text = this.stringify.comment(text);
    }

    XMLComment.prototype.clone = function() {
      return create(XMLComment.prototype, this);
    };

    XMLComment.prototype.toString = function(options, level) {
      var indent, newline, offset, pretty, r, ref, ref1, ref2, space;
      pretty = (options != null ? options.pretty : void 0) || false;
      indent = (ref = options != null ? options.indent : void 0) != null ? ref : '  ';
      offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0;
      newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n';
      level || (level = 0);
      space = new Array(level + offset + 1).join(indent);
      r = '';
      if (pretty) {
        r += space;
      }
      r += '<!-- ' + this.text + ' -->';
      if (pretty) {
        r += newline;
      }
      return r;
    };

    return XMLComment;

  })(XMLNode);

}).call(this);

},{"./XMLNode":481,"lodash/create":430}],474:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLDTDAttList, create;

  create = require('lodash/create');

  module.exports = XMLDTDAttList = (function() {
    function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) {
      this.stringify = parent.stringify;
      if (elementName == null) {
        throw new Error("Missing DTD element name");
      }
      if (attributeName == null) {
        throw new Error("Missing DTD attribute name");
      }
      if (!attributeType) {
        throw new Error("Missing DTD attribute type");
      }
      if (!defaultValueType) {
        throw new Error("Missing DTD attribute default");
      }
      if (defaultValueType.indexOf('#') !== 0) {
        defaultValueType = '#' + defaultValueType;
      }
      if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) {
        throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT");
      }
      if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) {
        throw new Error("Default value only applies to #FIXED or #DEFAULT");
      }
      this.elementName = this.stringify.eleName(elementName);
      this.attributeName = this.stringify.attName(attributeName);
      this.attributeType = this.stringify.dtdAttType(attributeType);
      this.defaultValue = this.stringify.dtdAttDefault(defaultValue);
      this.defaultValueType = defaultValueType;
    }

    XMLDTDAttList.prototype.toString = function(options, level) {
      var indent, newline, offset, pretty, r, ref, ref1, ref2, space;
      pretty = (options != null ? options.pretty : void 0) || false;
      indent = (ref = options != null ? options.indent : void 0) != null ? ref : '  ';
      offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0;
      newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n';
      level || (level = 0);
      space = new Array(level + offset + 1).join(indent);
      r = '';
      if (pretty) {
        r += space;
      }
      r += '<!ATTLIST ' + this.elementName + ' ' + this.attributeName + ' ' + this.attributeType;
      if (this.defaultValueType !== '#DEFAULT') {
        r += ' ' + this.defaultValueType;
      }
      if (this.defaultValue) {
        r += ' "' + this.defaultValue + '"';
      }
      r += '>';
      if (pretty) {
        r += newline;
      }
      return r;
    };

    return XMLDTDAttList;

  })();

}).call(this);

},{"lodash/create":430}],475:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLDTDElement, create;

  create = require('lodash/create');

  module.exports = XMLDTDElement = (function() {
    function XMLDTDElement(parent, name, value) {
      this.stringify = parent.stringify;
      if (name == null) {
        throw new Error("Missing DTD element name");
      }
      if (!value) {
        value = '(#PCDATA)';
      }
      if (Array.isArray(value)) {
        value = '(' + value.join(',') + ')';
      }
      this.name = this.stringify.eleName(name);
      this.value = this.stringify.dtdElementValue(value);
    }

    XMLDTDElement.prototype.toString = function(options, level) {
      var indent, newline, offset, pretty, r, ref, ref1, ref2, space;
      pretty = (options != null ? options.pretty : void 0) || false;
      indent = (ref = options != null ? options.indent : void 0) != null ? ref : '  ';
      offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0;
      newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n';
      level || (level = 0);
      space = new Array(level + offset + 1).join(indent);
      r = '';
      if (pretty) {
        r += space;
      }
      r += '<!ELEMENT ' + this.name + ' ' + this.value + '>';
      if (pretty) {
        r += newline;
      }
      return r;
    };

    return XMLDTDElement;

  })();

}).call(this);

},{"lodash/create":430}],476:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLDTDEntity, create, isObject;

  create = require('lodash/create');

  isObject = require('lodash/isObject');

  module.exports = XMLDTDEntity = (function() {
    function XMLDTDEntity(parent, pe, name, value) {
      this.stringify = parent.stringify;
      if (name == null) {
        throw new Error("Missing entity name");
      }
      if (value == null) {
        throw new Error("Missing entity value");
      }
      this.pe = !!pe;
      this.name = this.stringify.eleName(name);
      if (!isObject(value)) {
        this.value = this.stringify.dtdEntityValue(value);
      } else {
        if (!value.pubID && !value.sysID) {
          throw new Error("Public and/or system identifiers are required for an external entity");
        }
        if (value.pubID && !value.sysID) {
          throw new Error("System identifier is required for a public external entity");
        }
        if (value.pubID != null) {
          this.pubID = this.stringify.dtdPubID(value.pubID);
        }
        if (value.sysID != null) {
          this.sysID = this.stringify.dtdSysID(value.sysID);
        }
        if (value.nData != null) {
          this.nData = this.stringify.dtdNData(value.nData);
        }
        if (this.pe && this.nData) {
          throw new Error("Notation declaration is not allowed in a parameter entity");
        }
      }
    }

    XMLDTDEntity.prototype.toString = function(options, level) {
      var indent, newline, offset, pretty, r, ref, ref1, ref2, space;
      pretty = (options != null ? options.pretty : void 0) || false;
      indent = (ref = options != null ? options.indent : void 0) != null ? ref : '  ';
      offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0;
      newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n';
      level || (level = 0);
      space = new Array(level + offset + 1).join(indent);
      r = '';
      if (pretty) {
        r += space;
      }
      r += '<!ENTITY';
      if (this.pe) {
        r += ' %';
      }
      r += ' ' + this.name;
      if (this.value) {
        r += ' "' + this.value + '"';
      } else {
        if (this.pubID && this.sysID) {
          r += ' PUBLIC "' + this.pubID + '" "' + this.sysID + '"';
        } else if (this.sysID) {
          r += ' SYSTEM "' + this.sysID + '"';
        }
        if (this.nData) {
          r += ' NDATA ' + this.nData;
        }
      }
      r += '>';
      if (pretty) {
        r += newline;
      }
      return r;
    };

    return XMLDTDEntity;

  })();

}).call(this);

},{"lodash/create":430,"lodash/isObject":443}],477:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLDTDNotation, create;

  create = require('lodash/create');

  module.exports = XMLDTDNotation = (function() {
    function XMLDTDNotation(parent, name, value) {
      this.stringify = parent.stringify;
      if (name == null) {
        throw new Error("Missing notation name");
      }
      if (!value.pubID && !value.sysID) {
        throw new Error("Public or system identifiers are required for an external entity");
      }
      this.name = this.stringify.eleName(name);
      if (value.pubID != null) {
        this.pubID = this.stringify.dtdPubID(value.pubID);
      }
      if (value.sysID != null) {
        this.sysID = this.stringify.dtdSysID(value.sysID);
      }
    }

    XMLDTDNotation.prototype.toString = function(options, level) {
      var indent, newline, offset, pretty, r, ref, ref1, ref2, space;
      pretty = (options != null ? options.pretty : void 0) || false;
      indent = (ref = options != null ? options.indent : void 0) != null ? ref : '  ';
      offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0;
      newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n';
      level || (level = 0);
      space = new Array(level + offset + 1).join(indent);
      r = '';
      if (pretty) {
        r += space;
      }
      r += '<!NOTATION ' + this.name;
      if (this.pubID && this.sysID) {
        r += ' PUBLIC "' + this.pubID + '" "' + this.sysID + '"';
      } else if (this.pubID) {
        r += ' PUBLIC "' + this.pubID + '"';
      } else if (this.sysID) {
        r += ' SYSTEM "' + this.sysID + '"';
      }
      r += '>';
      if (pretty) {
        r += newline;
      }
      return r;
    };

    return XMLDTDNotation;

  })();

}).call(this);

},{"lodash/create":430}],478:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLDeclaration, XMLNode, create, isObject,
    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
    hasProp = {}.hasOwnProperty;

  create = require('lodash/create');

  isObject = require('lodash/isObject');

  XMLNode = require('./XMLNode');

  module.exports = XMLDeclaration = (function(superClass) {
    extend(XMLDeclaration, superClass);

    function XMLDeclaration(parent, version, encoding, standalone) {
      var ref;
      XMLDeclaration.__super__.constructor.call(this, parent);
      if (isObject(version)) {
        ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone;
      }
      if (!version) {
        version = '1.0';
      }
      this.version = this.stringify.xmlVersion(version);
      if (encoding != null) {
        this.encoding = this.stringify.xmlEncoding(encoding);
      }
      if (standalone != null) {
        this.standalone = this.stringify.xmlStandalone(standalone);
      }
    }

    XMLDeclaration.prototype.toString = function(options, level) {
      var indent, newline, offset, pretty, r, ref, ref1, ref2, space;
      pretty = (options != null ? options.pretty : void 0) || false;
      indent = (ref = options != null ? options.indent : void 0) != null ? ref : '  ';
      offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0;
      newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n';
      level || (level = 0);
      space = new Array(level + offset + 1).join(indent);
      r = '';
      if (pretty) {
        r += space;
      }
      r += '<?xml';
      r += ' version="' + this.version + '"';
      if (this.encoding != null) {
        r += ' encoding="' + this.encoding + '"';
      }
      if (this.standalone != null) {
        r += ' standalone="' + this.standalone + '"';
      }
      r += '?>';
      if (pretty) {
        r += newline;
      }
      return r;
    };

    return XMLDeclaration;

  })(XMLNode);

}).call(this);

},{"./XMLNode":481,"lodash/create":430,"lodash/isObject":443}],479:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLProcessingInstruction, create, isObject;

  create = require('lodash/create');

  isObject = require('lodash/isObject');

  XMLCData = require('./XMLCData');

  XMLComment = require('./XMLComment');

  XMLDTDAttList = require('./XMLDTDAttList');

  XMLDTDEntity = require('./XMLDTDEntity');

  XMLDTDElement = require('./XMLDTDElement');

  XMLDTDNotation = require('./XMLDTDNotation');

  XMLProcessingInstruction = require('./XMLProcessingInstruction');

  module.exports = XMLDocType = (function() {
    function XMLDocType(parent, pubID, sysID) {
      var ref, ref1;
      this.documentObject = parent;
      this.stringify = this.documentObject.stringify;
      this.children = [];
      if (isObject(pubID)) {
        ref = pubID, pubID = ref.pubID, sysID = ref.sysID;
      }
      if (sysID == null) {
        ref1 = [pubID, sysID], sysID = ref1[0], pubID = ref1[1];
      }
      if (pubID != null) {
        this.pubID = this.stringify.dtdPubID(pubID);
      }
      if (sysID != null) {
        this.sysID = this.stringify.dtdSysID(sysID);
      }
    }

    XMLDocType.prototype.element = function(name, value) {
      var child;
      child = new XMLDTDElement(this, name, value);
      this.children.push(child);
      return this;
    };

    XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {
      var child;
      child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);
      this.children.push(child);
      return this;
    };

    XMLDocType.prototype.entity = function(name, value) {
      var child;
      child = new XMLDTDEntity(this, false, name, value);
      this.children.push(child);
      return this;
    };

    XMLDocType.prototype.pEntity = function(name, value) {
      var child;
      child = new XMLDTDEntity(this, true, name, value);
      this.children.push(child);
      return this;
    };

    XMLDocType.prototype.notation = function(name, value) {
      var child;
      child = new XMLDTDNotation(this, name, value);
      this.children.push(child);
      return this;
    };

    XMLDocType.prototype.cdata = function(value) {
      var child;
      child = new XMLCData(this, value);
      this.children.push(child);
      return this;
    };

    XMLDocType.prototype.comment = function(value) {
      var child;
      child = new XMLComment(this, value);
      this.children.push(child);
      return this;
    };

    XMLDocType.prototype.instruction = function(target, value) {
      var child;
      child = new XMLProcessingInstruction(this, target, value);
      this.children.push(child);
      return this;
    };

    XMLDocType.prototype.root = function() {
      return this.documentObject.root();
    };

    XMLDocType.prototype.document = function() {
      return this.documentObject;
    };

    XMLDocType.prototype.toString = function(options, level) {
      var child, i, indent, len, newline, offset, pretty, r, ref, ref1, ref2, ref3, space;
      pretty = (options != null ? options.pretty : void 0) || false;
      indent = (ref = options != null ? options.indent : void 0) != null ? ref : '  ';
      offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0;
      newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n';
      level || (level = 0);
      space = new Array(level + offset + 1).join(indent);
      r = '';
      if (pretty) {
        r += space;
      }
      r += '<!DOCTYPE ' + this.root().name;
      if (this.pubID && this.sysID) {
        r += ' PUBLIC "' + this.pubID + '" "' + this.sysID + '"';
      } else if (this.sysID) {
        r += ' SYSTEM "' + this.sysID + '"';
      }
      if (this.children.length > 0) {
        r += ' [';
        if (pretty) {
          r += newline;
        }
        ref3 = this.children;
        for (i = 0, len = ref3.length; i < len; i++) {
          child = ref3[i];
          r += child.toString(options, level + 1);
        }
        r += ']';
      }
      r += '>';
      if (pretty) {
        r += newline;
      }
      return r;
    };

    XMLDocType.prototype.ele = function(name, value) {
      return this.element(name, value);
    };

    XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {
      return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue);
    };

    XMLDocType.prototype.ent = function(name, value) {
      return this.entity(name, value);
    };

    XMLDocType.prototype.pent = function(name, value) {
      return this.pEntity(name, value);
    };

    XMLDocType.prototype.not = function(name, value) {
      return this.notation(name, value);
    };

    XMLDocType.prototype.dat = function(value) {
      return this.cdata(value);
    };

    XMLDocType.prototype.com = function(value) {
      return this.comment(value);
    };

    XMLDocType.prototype.ins = function(target, value) {
      return this.instruction(target, value);
    };

    XMLDocType.prototype.up = function() {
      return this.root();
    };

    XMLDocType.prototype.doc = function() {
      return this.document();
    };

    return XMLDocType;

  })();

}).call(this);

},{"./XMLCData":472,"./XMLComment":473,"./XMLDTDAttList":474,"./XMLDTDElement":475,"./XMLDTDEntity":476,"./XMLDTDNotation":477,"./XMLProcessingInstruction":482,"lodash/create":430,"lodash/isObject":443}],480:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLAttribute, XMLElement, XMLNode, XMLProcessingInstruction, create, every, isFunction, isObject,
    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
    hasProp = {}.hasOwnProperty;

  create = require('lodash/create');

  isObject = require('lodash/isObject');

  isFunction = require('lodash/isFunction');

  every = require('lodash/every');

  XMLNode = require('./XMLNode');

  XMLAttribute = require('./XMLAttribute');

  XMLProcessingInstruction = require('./XMLProcessingInstruction');

  module.exports = XMLElement = (function(superClass) {
    extend(XMLElement, superClass);

    function XMLElement(parent, name, attributes) {
      XMLElement.__super__.constructor.call(this, parent);
      if (name == null) {
        throw new Error("Missing element name");
      }
      this.name = this.stringify.eleName(name);
      this.children = [];
      this.instructions = [];
      this.attributes = {};
      if (attributes != null) {
        this.attribute(attributes);
      }
    }

    XMLElement.prototype.clone = function() {
      var att, attName, clonedSelf, i, len, pi, ref, ref1;
      clonedSelf = create(XMLElement.prototype, this);
      if (clonedSelf.isRoot) {
        clonedSelf.documentObject = null;
      }
      clonedSelf.attributes = {};
      ref = this.attributes;
      for (attName in ref) {
        if (!hasProp.call(ref, attName)) continue;
        att = ref[attName];
        clonedSelf.attributes[attName] = att.clone();
      }
      clonedSelf.instructions = [];
      ref1 = this.instructions;
      for (i = 0, len = ref1.length; i < len; i++) {
        pi = ref1[i];
        clonedSelf.instructions.push(pi.clone());
      }
      clonedSelf.children = [];
      this.children.forEach(function(child) {
        var clonedChild;
        clonedChild = child.clone();
        clonedChild.parent = clonedSelf;
        return clonedSelf.children.push(clonedChild);
      });
      return clonedSelf;
    };

    XMLElement.prototype.attribute = function(name, value) {
      var attName, attValue;
      if (name != null) {
        name = name.valueOf();
      }
      if (isObject(name)) {
        for (attName in name) {
          if (!hasProp.call(name, attName)) continue;
          attValue = name[attName];
          this.attribute(attName, attValue);
        }
      } else {
        if (isFunction(value)) {
          value = value.apply();
        }
        if (!this.options.skipNullAttributes || (value != null)) {
          this.attributes[name] = new XMLAttribute(this, name, value);
        }
      }
      return this;
    };

    XMLElement.prototype.removeAttribute = function(name) {
      var attName, i, len;
      if (name == null) {
        throw new Error("Missing attribute name");
      }
      name = name.valueOf();
      if (Array.isArray(name)) {
        for (i = 0, len = name.length; i < len; i++) {
          attName = name[i];
          delete this.attributes[attName];
        }
      } else {
        delete this.attributes[name];
      }
      return this;
    };

    XMLElement.prototype.instruction = function(target, value) {
      var i, insTarget, insValue, instruction, len;
      if (target != null) {
        target = target.valueOf();
      }
      if (value != null) {
        value = value.valueOf();
      }
      if (Array.isArray(target)) {
        for (i = 0, len = target.length; i < len; i++) {
          insTarget = target[i];
          this.instruction(insTarget);
        }
      } else if (isObject(target)) {
        for (insTarget in target) {
          if (!hasProp.call(target, insTarget)) continue;
          insValue = target[insTarget];
          this.instruction(insTarget, insValue);
        }
      } else {
        if (isFunction(value)) {
          value = value.apply();
        }
        instruction = new XMLProcessingInstruction(this, target, value);
        this.instructions.push(instruction);
      }
      return this;
    };

    XMLElement.prototype.toString = function(options, level) {
      var att, child, i, indent, instruction, j, len, len1, name, newline, offset, pretty, r, ref, ref1, ref2, ref3, ref4, ref5, space;
      pretty = (options != null ? options.pretty : void 0) || false;
      indent = (ref = options != null ? options.indent : void 0) != null ? ref : '  ';
      offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0;
      newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n';
      level || (level = 0);
      space = new Array(level + offset + 1).join(indent);
      r = '';
      ref3 = this.instructions;
      for (i = 0, len = ref3.length; i < len; i++) {
        instruction = ref3[i];
        r += instruction.toString(options, level);
      }
      if (pretty) {
        r += space;
      }
      r += '<' + this.name;
      ref4 = this.attributes;
      for (name in ref4) {
        if (!hasProp.call(ref4, name)) continue;
        att = ref4[name];
        r += att.toString(options);
      }
      if (this.children.length === 0 || every(this.children, function(e) {
        return e.value === '';
      })) {
        r += '/>';
        if (pretty) {
          r += newline;
        }
      } else if (pretty && this.children.length === 1 && (this.children[0].value != null)) {
        r += '>';
        r += this.children[0].value;
        r += '</' + this.name + '>';
        r += newline;
      } else {
        r += '>';
        if (pretty) {
          r += newline;
        }
        ref5 = this.children;
        for (j = 0, len1 = ref5.length; j < len1; j++) {
          child = ref5[j];
          r += child.toString(options, level + 1);
        }
        if (pretty) {
          r += space;
        }
        r += '</' + this.name + '>';
        if (pretty) {
          r += newline;
        }
      }
      return r;
    };

    XMLElement.prototype.att = function(name, value) {
      return this.attribute(name, value);
    };

    XMLElement.prototype.ins = function(target, value) {
      return this.instruction(target, value);
    };

    XMLElement.prototype.a = function(name, value) {
      return this.attribute(name, value);
    };

    XMLElement.prototype.i = function(target, value) {
      return this.instruction(target, value);
    };

    return XMLElement;

  })(XMLNode);

}).call(this);

},{"./XMLAttribute":470,"./XMLNode":481,"./XMLProcessingInstruction":482,"lodash/create":430,"lodash/every":432,"lodash/isFunction":441,"lodash/isObject":443}],481:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLElement, XMLNode, XMLRaw, XMLText, isEmpty, isFunction, isObject,
    hasProp = {}.hasOwnProperty;

  isObject = require('lodash/isObject');

  isFunction = require('lodash/isFunction');

  isEmpty = require('lodash/isEmpty');

  XMLElement = null;

  XMLCData = null;

  XMLComment = null;

  XMLDeclaration = null;

  XMLDocType = null;

  XMLRaw = null;

  XMLText = null;

  module.exports = XMLNode = (function() {
    function XMLNode(parent) {
      this.parent = parent;
      this.options = this.parent.options;
      this.stringify = this.parent.stringify;
      if (XMLElement === null) {
        XMLElement = require('./XMLElement');
        XMLCData = require('./XMLCData');
        XMLComment = require('./XMLComment');
        XMLDeclaration = require('./XMLDeclaration');
        XMLDocType = require('./XMLDocType');
        XMLRaw = require('./XMLRaw');
        XMLText = require('./XMLText');
      }
    }

    XMLNode.prototype.element = function(name, attributes, text) {
      var childNode, item, j, k, key, lastChild, len, len1, ref, val;
      lastChild = null;
      if (attributes == null) {
        attributes = {};
      }
      attributes = attributes.valueOf();
      if (!isObject(attributes)) {
        ref = [attributes, text], text = ref[0], attributes = ref[1];
      }
      if (name != null) {
        name = name.valueOf();
      }
      if (Array.isArray(name)) {
        for (j = 0, len = name.length; j < len; j++) {
          item = name[j];
          lastChild = this.element(item);
        }
      } else if (isFunction(name)) {
        lastChild = this.element(name.apply());
      } else if (isObject(name)) {
        for (key in name) {
          if (!hasProp.call(name, key)) continue;
          val = name[key];
          if (isFunction(val)) {
            val = val.apply();
          }
          if ((isObject(val)) && (isEmpty(val))) {
            val = null;
          }
          if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) {
            lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val);
          } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && key.indexOf(this.stringify.convertPIKey) === 0) {
            lastChild = this.instruction(key.substr(this.stringify.convertPIKey.length), val);
          } else if (!this.options.separateArrayItems && Array.isArray(val)) {
            for (k = 0, len1 = val.length; k < len1; k++) {
              item = val[k];
              childNode = {};
              childNode[key] = item;
              lastChild = this.element(childNode);
            }
          } else if (isObject(val)) {
            lastChild = this.element(key);
            lastChild.element(val);
          } else {
            lastChild = this.element(key, val);
          }
        }
      } else {
        if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) {
          lastChild = this.text(text);
        } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) {
          lastChild = this.cdata(text);
        } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) {
          lastChild = this.comment(text);
        } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) {
          lastChild = this.raw(text);
        } else {
          lastChild = this.node(name, attributes, text);
        }
      }
      if (lastChild == null) {
        throw new Error("Could not create any elements with: " + name);
      }
      return lastChild;
    };

    XMLNode.prototype.insertBefore = function(name, attributes, text) {
      var child, i, removed;
      if (this.isRoot) {
        throw new Error("Cannot insert elements at root level");
      }
      i = this.parent.children.indexOf(this);
      removed = this.parent.children.splice(i);
      child = this.parent.element(name, attributes, text);
      Array.prototype.push.apply(this.parent.children, removed);
      return child;
    };

    XMLNode.prototype.insertAfter = function(name, attributes, text) {
      var child, i, removed;
      if (this.isRoot) {
        throw new Error("Cannot insert elements at root level");
      }
      i = this.parent.children.indexOf(this);
      removed = this.parent.children.splice(i + 1);
      child = this.parent.element(name, attributes, text);
      Array.prototype.push.apply(this.parent.children, removed);
      return child;
    };

    XMLNode.prototype.remove = function() {
      var i, ref;
      if (this.isRoot) {
        throw new Error("Cannot remove the root element");
      }
      i = this.parent.children.indexOf(this);
      [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref = [])), ref;
      return this.parent;
    };

    XMLNode.prototype.node = function(name, attributes, text) {
      var child, ref;
      if (name != null) {
        name = name.valueOf();
      }
      if (attributes == null) {
        attributes = {};
      }
      attributes = attributes.valueOf();
      if (!isObject(attributes)) {
        ref = [attributes, text], text = ref[0], attributes = ref[1];
      }
      child = new XMLElement(this, name, attributes);
      if (text != null) {
        child.text(text);
      }
      this.children.push(child);
      return child;
    };

    XMLNode.prototype.text = function(value) {
      var child;
      child = new XMLText(this, value);
      this.children.push(child);
      return this;
    };

    XMLNode.prototype.cdata = function(value) {
      var child;
      child = new XMLCData(this, value);
      this.children.push(child);
      return this;
    };

    XMLNode.prototype.comment = function(value) {
      var child;
      child = new XMLComment(this, value);
      this.children.push(child);
      return this;
    };

    XMLNode.prototype.raw = function(value) {
      var child;
      child = new XMLRaw(this, value);
      this.children.push(child);
      return this;
    };

    XMLNode.prototype.declaration = function(version, encoding, standalone) {
      var doc, xmldec;
      doc = this.document();
      xmldec = new XMLDeclaration(doc, version, encoding, standalone);
      doc.xmldec = xmldec;
      return doc.root();
    };

    XMLNode.prototype.doctype = function(pubID, sysID) {
      var doc, doctype;
      doc = this.document();
      doctype = new XMLDocType(doc, pubID, sysID);
      doc.doctype = doctype;
      return doctype;
    };

    XMLNode.prototype.up = function() {
      if (this.isRoot) {
        throw new Error("The root node has no parent. Use doc() if you need to get the document object.");
      }
      return this.parent;
    };

    XMLNode.prototype.root = function() {
      var child;
      if (this.isRoot) {
        return this;
      }
      child = this.parent;
      while (!child.isRoot) {
        child = child.parent;
      }
      return child;
    };

    XMLNode.prototype.document = function() {
      return this.root().documentObject;
    };

    XMLNode.prototype.end = function(options) {
      return this.document().toString(options);
    };

    XMLNode.prototype.prev = function() {
      var i;
      if (this.isRoot) {
        throw new Error("Root node has no siblings");
      }
      i = this.parent.children.indexOf(this);
      if (i < 1) {
        throw new Error("Already at the first node");
      }
      return this.parent.children[i - 1];
    };

    XMLNode.prototype.next = function() {
      var i;
      if (this.isRoot) {
        throw new Error("Root node has no siblings");
      }
      i = this.parent.children.indexOf(this);
      if (i === -1 || i === this.parent.children.length - 1) {
        throw new Error("Already at the last node");
      }
      return this.parent.children[i + 1];
    };

    XMLNode.prototype.importXMLBuilder = function(xmlbuilder) {
      var clonedRoot;
      clonedRoot = xmlbuilder.root().clone();
      clonedRoot.parent = this;
      clonedRoot.isRoot = false;
      this.children.push(clonedRoot);
      return this;
    };

    XMLNode.prototype.ele = function(name, attributes, text) {
      return this.element(name, attributes, text);
    };

    XMLNode.prototype.nod = function(name, attributes, text) {
      return this.node(name, attributes, text);
    };

    XMLNode.prototype.txt = function(value) {
      return this.text(value);
    };

    XMLNode.prototype.dat = function(value) {
      return this.cdata(value);
    };

    XMLNode.prototype.com = function(value) {
      return this.comment(value);
    };

    XMLNode.prototype.doc = function() {
      return this.document();
    };

    XMLNode.prototype.dec = function(version, encoding, standalone) {
      return this.declaration(version, encoding, standalone);
    };

    XMLNode.prototype.dtd = function(pubID, sysID) {
      return this.doctype(pubID, sysID);
    };

    XMLNode.prototype.e = function(name, attributes, text) {
      return this.element(name, attributes, text);
    };

    XMLNode.prototype.n = function(name, attributes, text) {
      return this.node(name, attributes, text);
    };

    XMLNode.prototype.t = function(value) {
      return this.text(value);
    };

    XMLNode.prototype.d = function(value) {
      return this.cdata(value);
    };

    XMLNode.prototype.c = function(value) {
      return this.comment(value);
    };

    XMLNode.prototype.r = function(value) {
      return this.raw(value);
    };

    XMLNode.prototype.u = function() {
      return this.up();
    };

    return XMLNode;

  })();

}).call(this);

},{"./XMLCData":472,"./XMLComment":473,"./XMLDeclaration":478,"./XMLDocType":479,"./XMLElement":480,"./XMLRaw":483,"./XMLText":485,"lodash/isEmpty":440,"lodash/isFunction":441,"lodash/isObject":443}],482:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLProcessingInstruction, create;

  create = require('lodash/create');

  module.exports = XMLProcessingInstruction = (function() {
    function XMLProcessingInstruction(parent, target, value) {
      this.stringify = parent.stringify;
      if (target == null) {
        throw new Error("Missing instruction target");
      }
      this.target = this.stringify.insTarget(target);
      if (value) {
        this.value = this.stringify.insValue(value);
      }
    }

    XMLProcessingInstruction.prototype.clone = function() {
      return create(XMLProcessingInstruction.prototype, this);
    };

    XMLProcessingInstruction.prototype.toString = function(options, level) {
      var indent, newline, offset, pretty, r, ref, ref1, ref2, space;
      pretty = (options != null ? options.pretty : void 0) || false;
      indent = (ref = options != null ? options.indent : void 0) != null ? ref : '  ';
      offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0;
      newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n';
      level || (level = 0);
      space = new Array(level + offset + 1).join(indent);
      r = '';
      if (pretty) {
        r += space;
      }
      r += '<?';
      r += this.target;
      if (this.value) {
        r += ' ' + this.value;
      }
      r += '?>';
      if (pretty) {
        r += newline;
      }
      return r;
    };

    return XMLProcessingInstruction;

  })();

}).call(this);

},{"lodash/create":430}],483:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLNode, XMLRaw, create,
    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
    hasProp = {}.hasOwnProperty;

  create = require('lodash/create');

  XMLNode = require('./XMLNode');

  module.exports = XMLRaw = (function(superClass) {
    extend(XMLRaw, superClass);

    function XMLRaw(parent, text) {
      XMLRaw.__super__.constructor.call(this, parent);
      if (text == null) {
        throw new Error("Missing raw text");
      }
      this.value = this.stringify.raw(text);
    }

    XMLRaw.prototype.clone = function() {
      return create(XMLRaw.prototype, this);
    };

    XMLRaw.prototype.toString = function(options, level) {
      var indent, newline, offset, pretty, r, ref, ref1, ref2, space;
      pretty = (options != null ? options.pretty : void 0) || false;
      indent = (ref = options != null ? options.indent : void 0) != null ? ref : '  ';
      offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0;
      newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n';
      level || (level = 0);
      space = new Array(level + offset + 1).join(indent);
      r = '';
      if (pretty) {
        r += space;
      }
      r += this.value;
      if (pretty) {
        r += newline;
      }
      return r;
    };

    return XMLRaw;

  })(XMLNode);

}).call(this);

},{"./XMLNode":481,"lodash/create":430}],484:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLStringifier,
    bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
    hasProp = {}.hasOwnProperty;

  module.exports = XMLStringifier = (function() {
    function XMLStringifier(options) {
      this.assertLegalChar = bind(this.assertLegalChar, this);
      var key, ref, value;
      this.allowSurrogateChars = options != null ? options.allowSurrogateChars : void 0;
      this.noDoubleEncoding = options != null ? options.noDoubleEncoding : void 0;
      ref = (options != null ? options.stringify : void 0) || {};
      for (key in ref) {
        if (!hasProp.call(ref, key)) continue;
        value = ref[key];
        this[key] = value;
      }
    }

    XMLStringifier.prototype.eleName = function(val) {
      val = '' + val || '';
      return this.assertLegalChar(val);
    };

    XMLStringifier.prototype.eleText = function(val) {
      val = '' + val || '';
      return this.assertLegalChar(this.elEscape(val));
    };

    XMLStringifier.prototype.cdata = function(val) {
      val = '' + val || '';
      if (val.match(/]]>/)) {
        throw new Error("Invalid CDATA text: " + val);
      }
      return this.assertLegalChar(val);
    };

    XMLStringifier.prototype.comment = function(val) {
      val = '' + val || '';
      if (val.match(/--/)) {
        throw new Error("Comment text cannot contain double-hypen: " + val);
      }
      return this.assertLegalChar(val);
    };

    XMLStringifier.prototype.raw = function(val) {
      return '' + val || '';
    };

    XMLStringifier.prototype.attName = function(val) {
      return '' + val || '';
    };

    XMLStringifier.prototype.attValue = function(val) {
      val = '' + val || '';
      return this.attEscape(val);
    };

    XMLStringifier.prototype.insTarget = function(val) {
      return '' + val || '';
    };

    XMLStringifier.prototype.insValue = function(val) {
      val = '' + val || '';
      if (val.match(/\?>/)) {
        throw new Error("Invalid processing instruction value: " + val);
      }
      return val;
    };

    XMLStringifier.prototype.xmlVersion = function(val) {
      val = '' + val || '';
      if (!val.match(/1\.[0-9]+/)) {
        throw new Error("Invalid version number: " + val);
      }
      return val;
    };

    XMLStringifier.prototype.xmlEncoding = function(val) {
      val = '' + val || '';
      if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-]|-)*$/)) {
        throw new Error("Invalid encoding: " + val);
      }
      return val;
    };

    XMLStringifier.prototype.xmlStandalone = function(val) {
      if (val) {
        return "yes";
      } else {
        return "no";
      }
    };

    XMLStringifier.prototype.dtdPubID = function(val) {
      return '' + val || '';
    };

    XMLStringifier.prototype.dtdSysID = function(val) {
      return '' + val || '';
    };

    XMLStringifier.prototype.dtdElementValue = function(val) {
      return '' + val || '';
    };

    XMLStringifier.prototype.dtdAttType = function(val) {
      return '' + val || '';
    };

    XMLStringifier.prototype.dtdAttDefault = function(val) {
      if (val != null) {
        return '' + val || '';
      } else {
        return val;
      }
    };

    XMLStringifier.prototype.dtdEntityValue = function(val) {
      return '' + val || '';
    };

    XMLStringifier.prototype.dtdNData = function(val) {
      return '' + val || '';
    };

    XMLStringifier.prototype.convertAttKey = '@';

    XMLStringifier.prototype.convertPIKey = '?';

    XMLStringifier.prototype.convertTextKey = '#text';

    XMLStringifier.prototype.convertCDataKey = '#cdata';

    XMLStringifier.prototype.convertCommentKey = '#comment';

    XMLStringifier.prototype.convertRawKey = '#raw';

    XMLStringifier.prototype.assertLegalChar = function(str) {
      var chars, chr;
      if (this.allowSurrogateChars) {
        chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uFFFE-\uFFFF]/;
      } else {
        chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE-\uFFFF]/;
      }
      chr = str.match(chars);
      if (chr) {
        throw new Error("Invalid character (" + chr + ") in string: " + str + " at index " + chr.index);
      }
      return str;
    };

    XMLStringifier.prototype.elEscape = function(str) {
      var ampregex;
      ampregex = this.noDoubleEncoding ? /(?!&\S+;)&/g : /&/g;
      return str.replace(ampregex, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\r/g, '&#xD;');
    };

    XMLStringifier.prototype.attEscape = function(str) {
      var ampregex;
      ampregex = this.noDoubleEncoding ? /(?!&\S+;)&/g : /&/g;
      return str.replace(ampregex, '&amp;').replace(/</g, '&lt;').replace(/"/g, '&quot;');
    };

    return XMLStringifier;

  })();

}).call(this);

},{}],485:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLNode, XMLText, create,
    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
    hasProp = {}.hasOwnProperty;

  create = require('lodash/create');

  XMLNode = require('./XMLNode');

  module.exports = XMLText = (function(superClass) {
    extend(XMLText, superClass);

    function XMLText(parent, text) {
      XMLText.__super__.constructor.call(this, parent);
      if (text == null) {
        throw new Error("Missing element text");
      }
      this.value = this.stringify.eleText(text);
    }

    XMLText.prototype.clone = function() {
      return create(XMLText.prototype, this);
    };

    XMLText.prototype.toString = function(options, level) {
      var indent, newline, offset, pretty, r, ref, ref1, ref2, space;
      pretty = (options != null ? options.pretty : void 0) || false;
      indent = (ref = options != null ? options.indent : void 0) != null ? ref : '  ';
      offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0;
      newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n';
      level || (level = 0);
      space = new Array(level + offset + 1).join(indent);
      r = '';
      if (pretty) {
        r += space;
      }
      r += this.value;
      if (pretty) {
        r += newline;
      }
      return r;
    };

    return XMLText;

  })(XMLNode);

}).call(this);

},{"./XMLNode":481,"lodash/create":430}],486:[function(require,module,exports){
// Generated by CoffeeScript 1.9.1
(function() {
  var XMLBuilder, assign;

  assign = require('lodash/assign');

  XMLBuilder = require('./XMLBuilder');

  module.exports.create = function(name, xmldec, doctype, options) {
    options = assign({}, xmldec, doctype, options);
    return new XMLBuilder(name, options).root();
  };

}).call(this);

},{"./XMLBuilder":471,"lodash/assign":428}],487:[function(require,module,exports){
// AWS SDK for JavaScript v2.183.0
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// License at https://sdk.amazonaws.com/js/BUNDLE_LICENSE.txt
require('./browser_loader');

var AWS = require('./core');

if (typeof window !== 'undefined') window.AWS = AWS;
if (typeof module !== 'undefined') module.exports = AWS;
if (typeof self !== 'undefined') self.AWS = AWS;

/**
 * @private
 * DO NOT REMOVE
 * browser builder will strip out this line if services are supplied on the command line.
 */
require('../clients/browser_default');
},{"../clients/browser_default":168,"./browser_loader":236,"./core":239}]},{},[487]);

