{"version":3,"sources":["webpack:///./node_modules/aws-sdk/lib/protocol/json.js","webpack:///./node_modules/aws-sdk/lib/model/resource_waiter.js","webpack:///./node_modules/aws-sdk/lib/json/builder.js","webpack:///./node_modules/aws-sdk/lib/protocol/rest.js","webpack:///./node_modules/aws-sdk/lib/http/xhr.js","webpack:///./node_modules/aws-sdk/lib/http.js","webpack:///./node_modules/aws-sdk/lib/model/paginator.js","webpack:///./node_modules/aws-sdk/lib/model/collection.js","webpack:///./node_modules/aws-sdk/lib/param_validator.js","webpack:///./node_modules/aws-sdk/lib/polly/presigner.js","webpack:///./node_modules/aws-sdk/lib/protocol/rest_xml.js","webpack:///./node_modules/aws-sdk/lib/query/query_param_serializer.js","webpack:///./node_modules/aws-sdk/lib/json/parser.js","webpack:///./node_modules/aws-sdk/lib/protocol/helpers.js","webpack:///./node_modules/aws-sdk/lib/model/shape.js","webpack:///./node_modules/aws-sdk/lib/rds/signer.js","webpack:///./node_modules/aws-sdk/lib/protocol/query.js","webpack:///./node_modules/aws-sdk/lib/model/operation.js","webpack:///./node_modules/aws-sdk/lib/realclock/browserClock.js","webpack:///./node_modules/aws-sdk/lib/region_config.js","webpack:///./node_modules/aws-sdk/lib/model/api.js","webpack:///./node_modules/aws-sdk/lib/protocol/rest_json.js"],"names":["util","JsonBuilder","JsonParser","populateHostPrefix","buildRequest","req","httpRequest","api","service","target","targetPrefix","operations","operation","name","version","jsonVersion","input","builder","body","build","params","headers","extractError","resp","error","httpResponse","code","split","length","e","JSON","parse","toString","__type","pop","message","Message","statusCode","statusMessage","Error","extractData","request","config","convertResponseTypes","data","shape","output","parser","module","exports","property","ResourceWaiter","waiter","options","this","string","lowerFirst","self","keys","forEach","key","value","translate","undefined","type","translateStructure","translateMap","translateList","translateScalar","structure","struct","each","memberShape","members","location","locationName","isLocationName","result","list","out","arrayEach","member","push","map","toWireFormat","prototype","stringify","populateMethod","method","httpMethod","generateURI","endpointPath","operationPath","uri","join","replace","queryString","queryStringSet","paramValue","regex","RegExp","_","plus","fn","uriEscapePath","uriEscape","String","val","Array","isArray","indexOf","parts","Object","sort","i","populateURI","endpoint","path","httpPath","populateHeaders","memberValue","isJsonValue","base64","encode","r","k","v","toLowerCase","header","pattern","match","decode","toType","parseInt","AWS","EventEmitter","XHRClient","inherit","handleRequest","httpOptions","callback","errCallback","emitter","href","protocol","hostname","port","xhr","XMLHttpRequest","headersEmitted","stream","addEventListener","status","readyState","HEADERS_RECEIVED","parseHeaders","getAllResponseHeaders","emit","statusText","DONE","finishRequest","upload","evt","open","xhrAsync","setRequestHeader","timeout","xhrWithCredentials","withCredentials","responseType","send","err","buffer","rawHeaders","line","substring","response","ab","Buffer","byteLength","view","Uint8Array","responseText","HttpClient","streamsApiVersion","Endpoint","constructor","hideProperties","copy","useSSL","sslEnabled","update","urlParse","HttpRequest","region","_userAgent","setUserAgent","getUserAgentHeaderName","userAgent","prefix","isBrowser","appendToUserAgent","agentPartial","getUserAgent","pathname","search","query","queryStringParse","queryParamsToString","updateEndpoint","endpointStr","newEndpoint","HttpResponse","streaming","createUnbufferedStream","getInstance","singleton","Paginator","paginator","input_token","limit_key","more_results","output_token","result_key","memoizedProperty","memoize","factory","nameTr","Collection","iterable","id","hasOwnProperty","call","ParamValidator","validation","validate","context","errors","validateMember","msg","fail","validateStructure","paramName","validateType","required","memberContext","param","validateList","validateMap","validateScalar","validateRange","mapCount","validateString","validatePayload","validateNumber","Date","validTypes","concat","validateEnum","validatePattern","validateUri","test","descriptor","acceptedTypes","foundInvalidType","isType","slice","typeName","acceptedType","vowel","castedValue","parseFloat","isNode","Stream","isBuffer","Blob","types","rest","Protocol","Rest","Polly","Presigner","bindServiceObject","_operations","__super__","merge","modifyInputMembers","modifiedInput","convertPostToGet","getSynthesizeSpeechUrl","expires","makeRequest","removeAllListeners","on","presign","populateBody","XML","Builder","payload","payloadMember","rootElement","toXML","upperFirst","Parser","Code","Errors","hasEventOutput","isEventStream","createEventStream","isStreaming","QueryParamSerializer","ucfirst","isQueryName","toUpperCase","substr","serializeStructure","rules","memberName","serializeMember","serializeMap","flattened","position","keyName","valueName","serializeList","memberRules","n","suffix","serialize","shapeMembers","enabled","hostPrefixEnabled","operationModel","hasEndpointDiscover","hostPrefix","hostPrefixNotation","expandHostPrefix","prependEndpointPrefix","validateHostname","isEndpointOperation","endpointOperation","endpointDiscoveryRequired","hostLabel","host","labels","hostPattern","label","obj","apply","arguments","Shape","enum","min","max","xmlName","queryName","requiresLength","isComposite","Boolean","idempotencyToken","jsonvalue","sensitive","eventstream","event","eventpayload","eventheader","timestampFormat","isTimestampFormatSet","endpointdiscoveryid","documentation","documentationUrl","xmlAttribute","CompositeShape","StructureShape","requiredMap","firstInit","isShape","create","xmlOrder","memberNames","iLen","isEventPayload","eventHeaderMemberNames","isEventHeader","resultWrapper","xmlNamespace","ListShape","oldName","MapShape","TimestampShape","toUTCString","date","parseTimestamp","format","StringShape","nullLessProtocols","FloatShape","IntegerShape","BinaryShape","buf","isSensitive","alloc","secureBuf","fill","Base64Shape","BooleanShape","normalizedTypes","character","double","long","short","biginteger","bigdecimal","blob","resolve","refShape","shapes","filteredKeys","filter","InlineShape","origType","signatureVersion","signingName","requiredAuthTokenOptions","username","RDS","Signer","convertUrlToAuthToken","url","getAuthToken","hasCallback","optionsValidation","validateAuthTokenOptions","serviceOptions","paramValidation","credentials","Service","modifyRequestForAuthToken","buildAsGet","Action","DBUser","Version","apiVersion","requestId","origRules","tmp","_XAMZRequestId","requestIdShape","Operation","http","requestUri","authtype","endpointdiscovery","paginators","idempotentMembers","isIdempotent","hasEventStream","topLevelShape","now","performance","regionConfig","generateRegionPrefix","derivedKeys","regionPrefix","endpointPrefix","item","applyConfig","configureEndpoint","patterns","useDualstack","isDualstackAvailable","isGlobalEndpoint","globalEndpoint","Api","addEndpointOperation","endpointoperation","metadata","serviceAbbreviation","serviceFullName","serviceId","waiters","Json","payloadShape","applyContentTypeHeader","isBinary"],"mappings":"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","file":"js/chunk-vendors~c8cdef8f.c6a8ccc2.js","sourcesContent":["var util = require('../util');\nvar JsonBuilder = require('../json/builder');\nvar JsonParser = require('../json/parser');\nvar populateHostPrefix = require('./helpers').populateHostPrefix;\n\nfunction buildRequest(req) {\n var httpRequest = req.httpRequest;\n var api = req.service.api;\n var target = api.targetPrefix + '.' + api.operations[req.operation].name;\n var version = api.jsonVersion || '1.0';\n var input = api.operations[req.operation].input;\n var builder = new JsonBuilder();\n\n if (version === 1) version = '1.0';\n httpRequest.body = builder.build(req.params || {}, input);\n httpRequest.headers['Content-Type'] = 'application/x-amz-json-' + version;\n httpRequest.headers['X-Amz-Target'] = target;\n\n populateHostPrefix(req);\n}\n\nfunction extractError(resp) {\n var error = {};\n var httpResponse = resp.httpResponse;\n\n error.code = httpResponse.headers['x-amzn-errortype'] || 'UnknownError';\n if (typeof error.code === 'string') {\n error.code = error.code.split(':')[0];\n }\n\n if (httpResponse.body.length > 0) {\n try {\n var e = JSON.parse(httpResponse.body.toString());\n if (e.__type || e.code) {\n error.code = (e.__type || e.code).split('#').pop();\n }\n if (error.code === 'RequestEntityTooLarge') {\n error.message = 'Request body must be less than 1 MB';\n } else {\n error.message = (e.message || e.Message || null);\n }\n } catch (e) {\n error.statusCode = httpResponse.statusCode;\n error.message = httpResponse.statusMessage;\n }\n } else {\n error.statusCode = httpResponse.statusCode;\n error.message = httpResponse.statusCode.toString();\n }\n\n resp.error = util.error(new Error(), error);\n}\n\nfunction extractData(resp) {\n var body = resp.httpResponse.body.toString() || '{}';\n if (resp.request.service.config.convertResponseTypes === false) {\n resp.data = JSON.parse(body);\n } else {\n var operation = resp.request.service.api.operations[resp.request.operation];\n var shape = operation.output || {};\n var parser = new JsonParser();\n resp.data = parser.parse(body, shape);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData\n};\n","var util = require('../util');\nvar property = util.property;\n\nfunction ResourceWaiter(name, waiter, options) {\n options = options || {};\n property(this, 'name', name);\n property(this, 'api', options.api, false);\n\n if (waiter.operation) {\n property(this, 'operation', util.string.lowerFirst(waiter.operation));\n }\n\n var self = this;\n var keys = [\n 'type',\n 'description',\n 'delay',\n 'maxAttempts',\n 'acceptors'\n ];\n\n keys.forEach(function(key) {\n var value = waiter[key];\n if (value) {\n property(self, key, value);\n }\n });\n}\n\n/**\n * @api private\n */\nmodule.exports = ResourceWaiter;\n","var util = require('../util');\n\nfunction JsonBuilder() { }\n\nJsonBuilder.prototype.build = function(value, shape) {\n return JSON.stringify(translate(value, shape));\n};\n\nfunction translate(value, shape) {\n if (!shape || value === undefined || value === null) return undefined;\n\n switch (shape.type) {\n case 'structure': return translateStructure(value, shape);\n case 'map': return translateMap(value, shape);\n case 'list': return translateList(value, shape);\n default: return translateScalar(value, shape);\n }\n}\n\nfunction translateStructure(structure, shape) {\n var struct = {};\n util.each(structure, function(name, value) {\n var memberShape = shape.members[name];\n if (memberShape) {\n if (memberShape.location !== 'body') return;\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n var result = translate(value, memberShape);\n if (result !== undefined) struct[locationName] = result;\n }\n });\n return struct;\n}\n\nfunction translateList(list, shape) {\n var out = [];\n util.arrayEach(list, function(value) {\n var result = translate(value, shape.member);\n if (result !== undefined) out.push(result);\n });\n return out;\n}\n\nfunction translateMap(map, shape) {\n var out = {};\n util.each(map, function(key, value) {\n var result = translate(value, shape.value);\n if (result !== undefined) out[key] = result;\n });\n return out;\n}\n\nfunction translateScalar(value, shape) {\n return shape.toWireFormat(value);\n}\n\n/**\n * @api private\n */\nmodule.exports = JsonBuilder;\n","var util = require('../util');\nvar populateHostPrefix = require('./helpers').populateHostPrefix;\n\nfunction populateMethod(req) {\n req.httpRequest.method = req.service.api.operations[req.operation].httpMethod;\n}\n\nfunction generateURI(endpointPath, operationPath, input, params) {\n var uri = [endpointPath, operationPath].join('/');\n uri = uri.replace(/\\/+/g, '/');\n\n var queryString = {}, queryStringSet = false;\n util.each(input.members, function (name, member) {\n var paramValue = params[name];\n if (paramValue === null || paramValue === undefined) return;\n if (member.location === 'uri') {\n var regex = new RegExp('\\\\{' + member.name + '(\\\\+)?\\\\}');\n uri = uri.replace(regex, function(_, plus) {\n var fn = plus ? util.uriEscapePath : util.uriEscape;\n return fn(String(paramValue));\n });\n } else if (member.location === 'querystring') {\n queryStringSet = true;\n\n if (member.type === 'list') {\n queryString[member.name] = paramValue.map(function(val) {\n return util.uriEscape(member.member.toWireFormat(val).toString());\n });\n } else if (member.type === 'map') {\n util.each(paramValue, function(key, value) {\n if (Array.isArray(value)) {\n queryString[key] = value.map(function(val) {\n return util.uriEscape(String(val));\n });\n } else {\n queryString[key] = util.uriEscape(String(value));\n }\n });\n } else {\n queryString[member.name] = util.uriEscape(member.toWireFormat(paramValue).toString());\n }\n }\n });\n\n if (queryStringSet) {\n uri += (uri.indexOf('?') >= 0 ? '&' : '?');\n var parts = [];\n util.arrayEach(Object.keys(queryString).sort(), function(key) {\n if (!Array.isArray(queryString[key])) {\n queryString[key] = [queryString[key]];\n }\n for (var i = 0; i < queryString[key].length; i++) {\n parts.push(util.uriEscape(String(key)) + '=' + queryString[key][i]);\n }\n });\n uri += parts.join('&');\n }\n\n return uri;\n}\n\nfunction populateURI(req) {\n var operation = req.service.api.operations[req.operation];\n var input = operation.input;\n\n var uri = generateURI(req.httpRequest.endpoint.path, operation.httpPath, input, req.params);\n req.httpRequest.path = uri;\n}\n\nfunction populateHeaders(req) {\n var operation = req.service.api.operations[req.operation];\n util.each(operation.input.members, function (name, member) {\n var value = req.params[name];\n if (value === null || value === undefined) return;\n\n if (member.location === 'headers' && member.type === 'map') {\n util.each(value, function(key, memberValue) {\n req.httpRequest.headers[member.name + key] = memberValue;\n });\n } else if (member.location === 'header') {\n value = member.toWireFormat(value).toString();\n if (member.isJsonValue) {\n value = util.base64.encode(value);\n }\n req.httpRequest.headers[member.name] = value;\n }\n });\n}\n\nfunction buildRequest(req) {\n populateMethod(req);\n populateURI(req);\n populateHeaders(req);\n populateHostPrefix(req);\n}\n\nfunction extractError() {\n}\n\nfunction extractData(resp) {\n var req = resp.request;\n var data = {};\n var r = resp.httpResponse;\n var operation = req.service.api.operations[req.operation];\n var output = operation.output;\n\n // normalize headers names to lower-cased keys for matching\n var headers = {};\n util.each(r.headers, function (k, v) {\n headers[k.toLowerCase()] = v;\n });\n\n util.each(output.members, function(name, member) {\n var header = (member.name || name).toLowerCase();\n if (member.location === 'headers' && member.type === 'map') {\n data[name] = {};\n var location = member.isLocationName ? member.name : '';\n var pattern = new RegExp('^' + location + '(.+)', 'i');\n util.each(r.headers, function (k, v) {\n var result = k.match(pattern);\n if (result !== null) {\n data[name][result[1]] = v;\n }\n });\n } else if (member.location === 'header') {\n if (headers[header] !== undefined) {\n var value = member.isJsonValue ?\n util.base64.decode(headers[header]) :\n headers[header];\n data[name] = member.toType(value);\n }\n } else if (member.location === 'statusCode') {\n data[name] = parseInt(r.statusCode, 10);\n }\n });\n\n resp.data = data;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData,\n generateURI: generateURI\n};\n","var AWS = require('../core');\nvar EventEmitter = require('events').EventEmitter;\nrequire('../http');\n\n/**\n * @api private\n */\nAWS.XHRClient = AWS.util.inherit({\n handleRequest: function handleRequest(httpRequest, httpOptions, callback, errCallback) {\n var self = this;\n var endpoint = httpRequest.endpoint;\n var emitter = new EventEmitter();\n var href = endpoint.protocol + '//' + endpoint.hostname;\n if (endpoint.port !== 80 && endpoint.port !== 443) {\n href += ':' + endpoint.port;\n }\n href += httpRequest.path;\n\n var xhr = new XMLHttpRequest(), headersEmitted = false;\n httpRequest.stream = xhr;\n\n xhr.addEventListener('readystatechange', function() {\n try {\n if (xhr.status === 0) return; // 0 code is invalid\n } catch (e) { return; }\n\n if (this.readyState >= this.HEADERS_RECEIVED && !headersEmitted) {\n emitter.statusCode = xhr.status;\n emitter.headers = self.parseHeaders(xhr.getAllResponseHeaders());\n emitter.emit(\n 'headers',\n emitter.statusCode,\n emitter.headers,\n xhr.statusText\n );\n headersEmitted = true;\n }\n if (this.readyState === this.DONE) {\n self.finishRequest(xhr, emitter);\n }\n }, false);\n xhr.upload.addEventListener('progress', function (evt) {\n emitter.emit('sendProgress', evt);\n });\n xhr.addEventListener('progress', function (evt) {\n emitter.emit('receiveProgress', evt);\n }, false);\n xhr.addEventListener('timeout', function () {\n errCallback(AWS.util.error(new Error('Timeout'), {code: 'TimeoutError'}));\n }, false);\n xhr.addEventListener('error', function () {\n errCallback(AWS.util.error(new Error('Network Failure'), {\n code: 'NetworkingError'\n }));\n }, false);\n xhr.addEventListener('abort', function () {\n errCallback(AWS.util.error(new Error('Request aborted'), {\n code: 'RequestAbortedError'\n }));\n }, false);\n\n callback(emitter);\n xhr.open(httpRequest.method, href, httpOptions.xhrAsync !== false);\n AWS.util.each(httpRequest.headers, function (key, value) {\n if (key !== 'Content-Length' && key !== 'User-Agent' && key !== 'Host') {\n xhr.setRequestHeader(key, value);\n }\n });\n\n if (httpOptions.timeout && httpOptions.xhrAsync !== false) {\n xhr.timeout = httpOptions.timeout;\n }\n\n if (httpOptions.xhrWithCredentials) {\n xhr.withCredentials = true;\n }\n try { xhr.responseType = 'arraybuffer'; } catch (e) {}\n\n try {\n if (httpRequest.body) {\n xhr.send(httpRequest.body);\n } else {\n xhr.send();\n }\n } catch (err) {\n if (httpRequest.body && typeof httpRequest.body.buffer === 'object') {\n xhr.send(httpRequest.body.buffer); // send ArrayBuffer directly\n } else {\n throw err;\n }\n }\n\n return emitter;\n },\n\n parseHeaders: function parseHeaders(rawHeaders) {\n var headers = {};\n AWS.util.arrayEach(rawHeaders.split(/\\r?\\n/), function (line) {\n var key = line.split(':', 1)[0];\n var value = line.substring(key.length + 2);\n if (key.length > 0) headers[key.toLowerCase()] = value;\n });\n return headers;\n },\n\n finishRequest: function finishRequest(xhr, emitter) {\n var buffer;\n if (xhr.responseType === 'arraybuffer' && xhr.response) {\n var ab = xhr.response;\n buffer = new AWS.util.Buffer(ab.byteLength);\n var view = new Uint8Array(ab);\n for (var i = 0; i < buffer.length; ++i) {\n buffer[i] = view[i];\n }\n }\n\n try {\n if (!buffer && typeof xhr.responseText === 'string') {\n buffer = new AWS.util.Buffer(xhr.responseText);\n }\n } catch (e) {}\n\n if (buffer) emitter.emit('data', buffer);\n emitter.emit('end');\n }\n});\n\n/**\n * @api private\n */\nAWS.HttpClient.prototype = AWS.XHRClient.prototype;\n\n/**\n * @api private\n */\nAWS.HttpClient.streamsApiVersion = 1;\n","var AWS = require('./core');\nvar inherit = AWS.util.inherit;\n\n/**\n * The endpoint that a service will talk to, for example,\n * `'https://ec2.ap-southeast-1.amazonaws.com'`. If\n * you need to override an endpoint for a service, you can\n * set the endpoint on a service by passing the endpoint\n * object with the `endpoint` option key:\n *\n * ```javascript\n * var ep = new AWS.Endpoint('awsproxy.example.com');\n * var s3 = new AWS.S3({endpoint: ep});\n * s3.service.endpoint.hostname == 'awsproxy.example.com'\n * ```\n *\n * Note that if you do not specify a protocol, the protocol will\n * be selected based on your current {AWS.config} configuration.\n *\n * @!attribute protocol\n * @return [String] the protocol (http or https) of the endpoint\n * URL\n * @!attribute hostname\n * @return [String] the host portion of the endpoint, e.g.,\n * example.com\n * @!attribute host\n * @return [String] the host portion of the endpoint including\n * the port, e.g., example.com:80\n * @!attribute port\n * @return [Integer] the port of the endpoint\n * @!attribute href\n * @return [String] the full URL of the endpoint\n */\nAWS.Endpoint = inherit({\n\n /**\n * @overload Endpoint(endpoint)\n * Constructs a new endpoint given an endpoint URL. If the\n * URL omits a protocol (http or https), the default protocol\n * set in the global {AWS.config} will be used.\n * @param endpoint [String] the URL to construct an endpoint from\n */\n constructor: function Endpoint(endpoint, config) {\n AWS.util.hideProperties(this, ['slashes', 'auth', 'hash', 'search', 'query']);\n\n if (typeof endpoint === 'undefined' || endpoint === null) {\n throw new Error('Invalid endpoint: ' + endpoint);\n } else if (typeof endpoint !== 'string') {\n return AWS.util.copy(endpoint);\n }\n\n if (!endpoint.match(/^http/)) {\n var useSSL = config && config.sslEnabled !== undefined ?\n config.sslEnabled : AWS.config.sslEnabled;\n endpoint = (useSSL ? 'https' : 'http') + '://' + endpoint;\n }\n\n AWS.util.update(this, AWS.util.urlParse(endpoint));\n\n // Ensure the port property is set as an integer\n if (this.port) {\n this.port = parseInt(this.port, 10);\n } else {\n this.port = this.protocol === 'https:' ? 443 : 80;\n }\n }\n\n});\n\n/**\n * The low level HTTP request object, encapsulating all HTTP header\n * and body data sent by a service request.\n *\n * @!attribute method\n * @return [String] the HTTP method of the request\n * @!attribute path\n * @return [String] the path portion of the URI, e.g.,\n * \"/list/?start=5&num=10\"\n * @!attribute headers\n * @return [map]\n * a map of header keys and their respective values\n * @!attribute body\n * @return [String] the request body payload\n * @!attribute endpoint\n * @return [AWS.Endpoint] the endpoint for the request\n * @!attribute region\n * @api private\n * @return [String] the region, for signing purposes only.\n */\nAWS.HttpRequest = inherit({\n\n /**\n * @api private\n */\n constructor: function HttpRequest(endpoint, region) {\n endpoint = new AWS.Endpoint(endpoint);\n this.method = 'POST';\n this.path = endpoint.path || '/';\n this.headers = {};\n this.body = '';\n this.endpoint = endpoint;\n this.region = region;\n this._userAgent = '';\n this.setUserAgent();\n },\n\n /**\n * @api private\n */\n setUserAgent: function setUserAgent() {\n this._userAgent = this.headers[this.getUserAgentHeaderName()] = AWS.util.userAgent();\n },\n\n getUserAgentHeaderName: function getUserAgentHeaderName() {\n var prefix = AWS.util.isBrowser() ? 'X-Amz-' : '';\n return prefix + 'User-Agent';\n },\n\n /**\n * @api private\n */\n appendToUserAgent: function appendToUserAgent(agentPartial) {\n if (typeof agentPartial === 'string' && agentPartial) {\n this._userAgent += ' ' + agentPartial;\n }\n this.headers[this.getUserAgentHeaderName()] = this._userAgent;\n },\n\n /**\n * @api private\n */\n getUserAgent: function getUserAgent() {\n return this._userAgent;\n },\n\n /**\n * @return [String] the part of the {path} excluding the\n * query string\n */\n pathname: function pathname() {\n return this.path.split('?', 1)[0];\n },\n\n /**\n * @return [String] the query string portion of the {path}\n */\n search: function search() {\n var query = this.path.split('?', 2)[1];\n if (query) {\n query = AWS.util.queryStringParse(query);\n return AWS.util.queryParamsToString(query);\n }\n return '';\n },\n\n /**\n * @api private\n * update httpRequest endpoint with endpoint string\n */\n updateEndpoint: function updateEndpoint(endpointStr) {\n var newEndpoint = new AWS.Endpoint(endpointStr);\n this.endpoint = newEndpoint;\n this.path = newEndpoint.path || '/';\n }\n});\n\n/**\n * The low level HTTP response object, encapsulating all HTTP header\n * and body data returned from the request.\n *\n * @!attribute statusCode\n * @return [Integer] the HTTP status code of the response (e.g., 200, 404)\n * @!attribute headers\n * @return [map]\n * a map of response header keys and their respective values\n * @!attribute body\n * @return [String] the response body payload\n * @!attribute [r] streaming\n * @return [Boolean] whether this response is being streamed at a low-level.\n * Defaults to `false` (buffered reads). Do not modify this manually, use\n * {createUnbufferedStream} to convert the stream to unbuffered mode\n * instead.\n */\nAWS.HttpResponse = inherit({\n\n /**\n * @api private\n */\n constructor: function HttpResponse() {\n this.statusCode = undefined;\n this.headers = {};\n this.body = undefined;\n this.streaming = false;\n this.stream = null;\n },\n\n /**\n * Disables buffering on the HTTP response and returns the stream for reading.\n * @return [Stream, XMLHttpRequest, null] the underlying stream object.\n * Use this object to directly read data off of the stream.\n * @note This object is only available after the {AWS.Request~httpHeaders}\n * event has fired. This method must be called prior to\n * {AWS.Request~httpData}.\n * @example Taking control of a stream\n * request.on('httpHeaders', function(statusCode, headers) {\n * if (statusCode < 300) {\n * if (headers.etag === 'xyz') {\n * // pipe the stream, disabling buffering\n * var stream = this.response.httpResponse.createUnbufferedStream();\n * stream.pipe(process.stdout);\n * } else { // abort this request and set a better error message\n * this.abort();\n * this.response.error = new Error('Invalid ETag');\n * }\n * }\n * }).send(console.log);\n */\n createUnbufferedStream: function createUnbufferedStream() {\n this.streaming = true;\n return this.stream;\n }\n});\n\n\nAWS.HttpClient = inherit({});\n\n/**\n * @api private\n */\nAWS.HttpClient.getInstance = function getInstance() {\n if (this.singleton === undefined) {\n this.singleton = new this();\n }\n return this.singleton;\n};\n","var property = require('../util').property;\n\nfunction Paginator(name, paginator) {\n property(this, 'inputToken', paginator.input_token);\n property(this, 'limitKey', paginator.limit_key);\n property(this, 'moreResults', paginator.more_results);\n property(this, 'outputToken', paginator.output_token);\n property(this, 'resultKey', paginator.result_key);\n}\n\n/**\n * @api private\n */\nmodule.exports = Paginator;\n","var memoizedProperty = require('../util').memoizedProperty;\n\nfunction memoize(name, value, factory, nameTr) {\n memoizedProperty(this, nameTr(name), function() {\n return factory(name, value);\n });\n}\n\nfunction Collection(iterable, options, factory, nameTr, callback) {\n nameTr = nameTr || String;\n var self = this;\n\n for (var id in iterable) {\n if (Object.prototype.hasOwnProperty.call(iterable, id)) {\n memoize.call(self, id, iterable[id], factory, nameTr);\n if (callback) callback(id, iterable[id]);\n }\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = Collection;\n","var AWS = require('./core');\n\n/**\n * @api private\n */\nAWS.ParamValidator = AWS.util.inherit({\n /**\n * Create a new validator object.\n *\n * @param validation [Boolean|map] whether input parameters should be\n * validated against the operation description before sending the\n * request. Pass a map to enable any of the following specific\n * validation features:\n *\n * * **min** [Boolean] — Validates that a value meets the min\n * constraint. This is enabled by default when paramValidation is set\n * to `true`.\n * * **max** [Boolean] — Validates that a value meets the max\n * constraint.\n * * **pattern** [Boolean] — Validates that a string value matches a\n * regular expression.\n * * **enum** [Boolean] — Validates that a string value matches one\n * of the allowable enum values.\n */\n constructor: function ParamValidator(validation) {\n if (validation === true || validation === undefined) {\n validation = {'min': true};\n }\n this.validation = validation;\n },\n\n validate: function validate(shape, params, context) {\n this.errors = [];\n this.validateMember(shape, params || {}, context || 'params');\n\n if (this.errors.length > 1) {\n var msg = this.errors.join('\\n* ');\n msg = 'There were ' + this.errors.length +\n ' validation errors:\\n* ' + msg;\n throw AWS.util.error(new Error(msg),\n {code: 'MultipleValidationErrors', errors: this.errors});\n } else if (this.errors.length === 1) {\n throw this.errors[0];\n } else {\n return true;\n }\n },\n\n fail: function fail(code, message) {\n this.errors.push(AWS.util.error(new Error(message), {code: code}));\n },\n\n validateStructure: function validateStructure(shape, params, context) {\n this.validateType(params, context, ['object'], 'structure');\n\n var paramName;\n for (var i = 0; shape.required && i < shape.required.length; i++) {\n paramName = shape.required[i];\n var value = params[paramName];\n if (value === undefined || value === null) {\n this.fail('MissingRequiredParameter',\n 'Missing required key \\'' + paramName + '\\' in ' + context);\n }\n }\n\n // validate hash members\n for (paramName in params) {\n if (!Object.prototype.hasOwnProperty.call(params, paramName)) continue;\n\n var paramValue = params[paramName],\n memberShape = shape.members[paramName];\n\n if (memberShape !== undefined) {\n var memberContext = [context, paramName].join('.');\n this.validateMember(memberShape, paramValue, memberContext);\n } else {\n this.fail('UnexpectedParameter',\n 'Unexpected key \\'' + paramName + '\\' found in ' + context);\n }\n }\n\n return true;\n },\n\n validateMember: function validateMember(shape, param, context) {\n switch (shape.type) {\n case 'structure':\n return this.validateStructure(shape, param, context);\n case 'list':\n return this.validateList(shape, param, context);\n case 'map':\n return this.validateMap(shape, param, context);\n default:\n return this.validateScalar(shape, param, context);\n }\n },\n\n validateList: function validateList(shape, params, context) {\n if (this.validateType(params, context, [Array])) {\n this.validateRange(shape, params.length, context, 'list member count');\n // validate array members\n for (var i = 0; i < params.length; i++) {\n this.validateMember(shape.member, params[i], context + '[' + i + ']');\n }\n }\n },\n\n validateMap: function validateMap(shape, params, context) {\n if (this.validateType(params, context, ['object'], 'map')) {\n // Build up a count of map members to validate range traits.\n var mapCount = 0;\n for (var param in params) {\n if (!Object.prototype.hasOwnProperty.call(params, param)) continue;\n // Validate any map key trait constraints\n this.validateMember(shape.key, param,\n context + '[key=\\'' + param + '\\']');\n this.validateMember(shape.value, params[param],\n context + '[\\'' + param + '\\']');\n mapCount++;\n }\n this.validateRange(shape, mapCount, context, 'map member count');\n }\n },\n\n validateScalar: function validateScalar(shape, value, context) {\n switch (shape.type) {\n case null:\n case undefined:\n case 'string':\n return this.validateString(shape, value, context);\n case 'base64':\n case 'binary':\n return this.validatePayload(value, context);\n case 'integer':\n case 'float':\n return this.validateNumber(shape, value, context);\n case 'boolean':\n return this.validateType(value, context, ['boolean']);\n case 'timestamp':\n return this.validateType(value, context, [Date,\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$/, 'number'],\n 'Date object, ISO-8601 string, or a UNIX timestamp');\n default:\n return this.fail('UnkownType', 'Unhandled type ' +\n shape.type + ' for ' + context);\n }\n },\n\n validateString: function validateString(shape, value, context) {\n var validTypes = ['string'];\n if (shape.isJsonValue) {\n validTypes = validTypes.concat(['number', 'object', 'boolean']);\n }\n if (value !== null && this.validateType(value, context, validTypes)) {\n this.validateEnum(shape, value, context);\n this.validateRange(shape, value.length, context, 'string length');\n this.validatePattern(shape, value, context);\n this.validateUri(shape, value, context);\n }\n },\n\n validateUri: function validateUri(shape, value, context) {\n if (shape['location'] === 'uri') {\n if (value.length === 0) {\n this.fail('UriParameterError', 'Expected uri parameter to have length >= 1,'\n + ' but found \"' + value +'\" for ' + context);\n }\n }\n },\n\n validatePattern: function validatePattern(shape, value, context) {\n if (this.validation['pattern'] && shape['pattern'] !== undefined) {\n if (!(new RegExp(shape['pattern'])).test(value)) {\n this.fail('PatternMatchError', 'Provided value \"' + value + '\" '\n + 'does not match regex pattern /' + shape['pattern'] + '/ for '\n + context);\n }\n }\n },\n\n validateRange: function validateRange(shape, value, context, descriptor) {\n if (this.validation['min']) {\n if (shape['min'] !== undefined && value < shape['min']) {\n this.fail('MinRangeError', 'Expected ' + descriptor + ' >= '\n + shape['min'] + ', but found ' + value + ' for ' + context);\n }\n }\n if (this.validation['max']) {\n if (shape['max'] !== undefined && value > shape['max']) {\n this.fail('MaxRangeError', 'Expected ' + descriptor + ' <= '\n + shape['max'] + ', but found ' + value + ' for ' + context);\n }\n }\n },\n\n validateEnum: function validateRange(shape, value, context) {\n if (this.validation['enum'] && shape['enum'] !== undefined) {\n // Fail if the string value is not present in the enum list\n if (shape['enum'].indexOf(value) === -1) {\n this.fail('EnumError', 'Found string value of ' + value + ', but '\n + 'expected ' + shape['enum'].join('|') + ' for ' + context);\n }\n }\n },\n\n validateType: function validateType(value, context, acceptedTypes, type) {\n // We will not log an error for null or undefined, but we will return\n // false so that callers know that the expected type was not strictly met.\n if (value === null || value === undefined) return false;\n\n var foundInvalidType = false;\n for (var i = 0; i < acceptedTypes.length; i++) {\n if (typeof acceptedTypes[i] === 'string') {\n if (typeof value === acceptedTypes[i]) return true;\n } else if (acceptedTypes[i] instanceof RegExp) {\n if ((value || '').toString().match(acceptedTypes[i])) return true;\n } else {\n if (value instanceof acceptedTypes[i]) return true;\n if (AWS.util.isType(value, acceptedTypes[i])) return true;\n if (!type && !foundInvalidType) acceptedTypes = acceptedTypes.slice();\n acceptedTypes[i] = AWS.util.typeName(acceptedTypes[i]);\n }\n foundInvalidType = true;\n }\n\n var acceptedType = type;\n if (!acceptedType) {\n acceptedType = acceptedTypes.join(', ').replace(/,([^,]+)$/, ', or$1');\n }\n\n var vowel = acceptedType.match(/^[aeiou]/i) ? 'n' : '';\n this.fail('InvalidParameterType', 'Expected ' + context + ' to be a' +\n vowel + ' ' + acceptedType);\n return false;\n },\n\n validateNumber: function validateNumber(shape, value, context) {\n if (value === null || value === undefined) return;\n if (typeof value === 'string') {\n var castedValue = parseFloat(value);\n if (castedValue.toString() === value) value = castedValue;\n }\n if (this.validateType(value, context, ['number'])) {\n this.validateRange(shape, value, context, 'numeric value');\n }\n },\n\n validatePayload: function validatePayload(value, context) {\n if (value === null || value === undefined) return;\n if (typeof value === 'string') return;\n if (value && typeof value.byteLength === 'number') return; // typed arrays\n if (AWS.util.isNode()) { // special check for buffer/stream in Node.js\n var Stream = AWS.util.stream.Stream;\n if (AWS.util.Buffer.isBuffer(value) || value instanceof Stream) return;\n } else {\n if (typeof Blob !== void 0 && value instanceof Blob) return;\n }\n\n var types = ['Buffer', 'Stream', 'File', 'Blob', 'ArrayBuffer', 'DataView'];\n if (value) {\n for (var i = 0; i < types.length; i++) {\n if (AWS.util.isType(value, types[i])) return;\n if (AWS.util.typeName(value.constructor) === types[i]) return;\n }\n }\n\n this.fail('InvalidParameterType', 'Expected ' + context + ' to be a ' +\n 'string, Buffer, Stream, Blob, or typed array object');\n }\n});\n","var AWS = require('../core');\nvar rest = AWS.Protocol.Rest;\n\n/**\n * A presigner object can be used to generate presigned urls for the Polly service.\n */\nAWS.Polly.Presigner = AWS.util.inherit({\n /**\n * Creates a presigner object with a set of configuration options.\n *\n * @option options params [map] An optional map of parameters to bind to every\n * request sent by this service object.\n * @option options service [AWS.Polly] An optional pre-configured instance\n * of the AWS.Polly service object to use for requests. The object may\n * bound parameters used by the presigner.\n * @see AWS.Polly.constructor\n */\n constructor: function Signer(options) {\n options = options || {};\n this.options = options;\n this.service = options.service;\n this.bindServiceObject(options);\n this._operations = {};\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(options) {\n options = options || {};\n if (!this.service) {\n this.service = new AWS.Polly(options);\n } else {\n var config = AWS.util.copy(this.service.config);\n this.service = new this.service.constructor.__super__(config);\n this.service.config.params = AWS.util.merge(this.service.config.params || {}, options.params);\n }\n },\n\n /**\n * @api private\n */\n modifyInputMembers: function modifyInputMembers(input) {\n // make copies of the input so we don't overwrite the api\n // need to be careful to copy anything we access/modify\n var modifiedInput = AWS.util.copy(input);\n modifiedInput.members = AWS.util.copy(input.members);\n AWS.util.each(input.members, function(name, member) {\n modifiedInput.members[name] = AWS.util.copy(member);\n // update location and locationName\n if (!member.location || member.location === 'body') {\n modifiedInput.members[name].location = 'querystring';\n modifiedInput.members[name].locationName = name;\n }\n });\n return modifiedInput;\n },\n\n /**\n * @api private\n */\n convertPostToGet: function convertPostToGet(req) {\n // convert method\n req.httpRequest.method = 'GET';\n\n var operation = req.service.api.operations[req.operation];\n // get cached operation input first\n var input = this._operations[req.operation];\n if (!input) {\n // modify the original input\n this._operations[req.operation] = input = this.modifyInputMembers(operation.input);\n }\n\n var uri = rest.generateURI(req.httpRequest.endpoint.path, operation.httpPath, input, req.params);\n\n req.httpRequest.path = uri;\n req.httpRequest.body = '';\n\n // don't need these headers on a GET request\n delete req.httpRequest.headers['Content-Length'];\n delete req.httpRequest.headers['Content-Type'];\n },\n\n /**\n * @overload getSynthesizeSpeechUrl(params = {}, [expires = 3600], [callback])\n * Generate a presigned url for {AWS.Polly.synthesizeSpeech}.\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n * @param params [map] parameters to pass to the operation. See the {AWS.Polly.synthesizeSpeech}\n * operation for the expected operation parameters.\n * @param expires [Integer] (3600) the number of seconds to expire the pre-signed URL operation in.\n * Defaults to 1 hour.\n * @return [string] if called synchronously (with no callback), returns the signed URL.\n * @return [null] nothing is returned if a callback is provided.\n * @callback callback function (err, url)\n * If a callback is supplied, it is called when a signed URL has been generated.\n * @param err [Error] the error object returned from the presigner.\n * @param url [String] the signed URL.\n * @see AWS.Polly.synthesizeSpeech\n */\n getSynthesizeSpeechUrl: function getSynthesizeSpeechUrl(params, expires, callback) {\n var self = this;\n var request = this.service.makeRequest('synthesizeSpeech', params);\n // remove existing build listeners\n request.removeAllListeners('build');\n request.on('build', function(req) {\n self.convertPostToGet(req);\n });\n return request.presign(expires, callback);\n }\n});\n","var AWS = require('../core');\nvar util = require('../util');\nvar Rest = require('./rest');\n\nfunction populateBody(req) {\n var input = req.service.api.operations[req.operation].input;\n var builder = new AWS.XML.Builder();\n var params = req.params;\n\n var payload = input.payload;\n if (payload) {\n var payloadMember = input.members[payload];\n params = params[payload];\n if (params === undefined) return;\n\n if (payloadMember.type === 'structure') {\n var rootElement = payloadMember.name;\n req.httpRequest.body = builder.toXML(params, payloadMember, rootElement, true);\n } else { // non-xml payload\n req.httpRequest.body = params;\n }\n } else {\n req.httpRequest.body = builder.toXML(params, input, input.name ||\n input.shape || util.string.upperFirst(req.operation) + 'Request');\n }\n}\n\nfunction buildRequest(req) {\n Rest.buildRequest(req);\n\n // never send body payload on GET/HEAD\n if (['GET', 'HEAD'].indexOf(req.httpRequest.method) < 0) {\n populateBody(req);\n }\n}\n\nfunction extractError(resp) {\n Rest.extractError(resp);\n\n var data;\n try {\n data = new AWS.XML.Parser().parse(resp.httpResponse.body.toString());\n } catch (e) {\n data = {\n Code: resp.httpResponse.statusCode,\n Message: resp.httpResponse.statusMessage\n };\n }\n\n if (data.Errors) data = data.Errors;\n if (data.Error) data = data.Error;\n if (data.Code) {\n resp.error = util.error(new Error(), {\n code: data.Code,\n message: data.Message\n });\n } else {\n resp.error = util.error(new Error(), {\n code: resp.httpResponse.statusCode,\n message: null\n });\n }\n}\n\nfunction extractData(resp) {\n Rest.extractData(resp);\n\n var parser;\n var req = resp.request;\n var body = resp.httpResponse.body;\n var operation = req.service.api.operations[req.operation];\n var output = operation.output;\n\n var hasEventOutput = operation.hasEventOutput;\n\n var payload = output.payload;\n if (payload) {\n var payloadMember = output.members[payload];\n if (payloadMember.isEventStream) {\n parser = new AWS.XML.Parser();\n resp.data[payload] = util.createEventStream(\n AWS.HttpClient.streamsApiVersion === 2 ? resp.httpResponse.stream : resp.httpResponse.body,\n parser,\n payloadMember\n );\n } else if (payloadMember.type === 'structure') {\n parser = new AWS.XML.Parser();\n resp.data[payload] = parser.parse(body.toString(), payloadMember);\n } else if (payloadMember.type === 'binary' || payloadMember.isStreaming) {\n resp.data[payload] = body;\n } else {\n resp.data[payload] = payloadMember.toType(body);\n }\n } else if (body.length > 0) {\n parser = new AWS.XML.Parser();\n var data = parser.parse(body.toString(), output);\n util.update(resp.data, data);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData\n};\n","var util = require('../util');\n\nfunction QueryParamSerializer() {\n}\n\nQueryParamSerializer.prototype.serialize = function(params, shape, fn) {\n serializeStructure('', params, shape, fn);\n};\n\nfunction ucfirst(shape) {\n if (shape.isQueryName || shape.api.protocol !== 'ec2') {\n return shape.name;\n } else {\n return shape.name[0].toUpperCase() + shape.name.substr(1);\n }\n}\n\nfunction serializeStructure(prefix, struct, rules, fn) {\n util.each(rules.members, function(name, member) {\n var value = struct[name];\n if (value === null || value === undefined) return;\n\n var memberName = ucfirst(member);\n memberName = prefix ? prefix + '.' + memberName : memberName;\n serializeMember(memberName, value, member, fn);\n });\n}\n\nfunction serializeMap(name, map, rules, fn) {\n var i = 1;\n util.each(map, function (key, value) {\n var prefix = rules.flattened ? '.' : '.entry.';\n var position = prefix + (i++) + '.';\n var keyName = position + (rules.key.name || 'key');\n var valueName = position + (rules.value.name || 'value');\n serializeMember(name + keyName, key, rules.key, fn);\n serializeMember(name + valueName, value, rules.value, fn);\n });\n}\n\nfunction serializeList(name, list, rules, fn) {\n var memberRules = rules.member || {};\n\n if (list.length === 0) {\n fn.call(this, name, null);\n return;\n }\n\n util.arrayEach(list, function (v, n) {\n var suffix = '.' + (n + 1);\n if (rules.api.protocol === 'ec2') {\n // Do nothing for EC2\n suffix = suffix + ''; // make linter happy\n } else if (rules.flattened) {\n if (memberRules.name) {\n var parts = name.split('.');\n parts.pop();\n parts.push(ucfirst(memberRules));\n name = parts.join('.');\n }\n } else {\n suffix = '.' + (memberRules.name ? memberRules.name : 'member') + suffix;\n }\n serializeMember(name + suffix, v, memberRules, fn);\n });\n}\n\nfunction serializeMember(name, value, rules, fn) {\n if (value === null || value === undefined) return;\n if (rules.type === 'structure') {\n serializeStructure(name, value, rules, fn);\n } else if (rules.type === 'list') {\n serializeList(name, value, rules, fn);\n } else if (rules.type === 'map') {\n serializeMap(name, value, rules, fn);\n } else {\n fn(name, rules.toWireFormat(value).toString());\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = QueryParamSerializer;\n","var util = require('../util');\n\nfunction JsonParser() { }\n\nJsonParser.prototype.parse = function(value, shape) {\n return translate(JSON.parse(value), shape);\n};\n\nfunction translate(value, shape) {\n if (!shape || value === undefined) return undefined;\n\n switch (shape.type) {\n case 'structure': return translateStructure(value, shape);\n case 'map': return translateMap(value, shape);\n case 'list': return translateList(value, shape);\n default: return translateScalar(value, shape);\n }\n}\n\nfunction translateStructure(structure, shape) {\n if (structure == null) return undefined;\n\n var struct = {};\n var shapeMembers = shape.members;\n util.each(shapeMembers, function(name, memberShape) {\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n if (Object.prototype.hasOwnProperty.call(structure, locationName)) {\n var value = structure[locationName];\n var result = translate(value, memberShape);\n if (result !== undefined) struct[name] = result;\n }\n });\n return struct;\n}\n\nfunction translateList(list, shape) {\n if (list == null) return undefined;\n\n var out = [];\n util.arrayEach(list, function(value) {\n var result = translate(value, shape.member);\n if (result === undefined) out.push(null);\n else out.push(result);\n });\n return out;\n}\n\nfunction translateMap(map, shape) {\n if (map == null) return undefined;\n\n var out = {};\n util.each(map, function(key, value) {\n var result = translate(value, shape.value);\n if (result === undefined) out[key] = null;\n else out[key] = result;\n });\n return out;\n}\n\nfunction translateScalar(value, shape) {\n return shape.toType(value);\n}\n\n/**\n * @api private\n */\nmodule.exports = JsonParser;\n","var util = require('../util');\nvar AWS = require('../core');\n\n/**\n * Prepend prefix defined by API model to endpoint that's already\n * constructed. This feature does not apply to operations using\n * endpoint discovery and can be disabled.\n * @api private\n */\nfunction populateHostPrefix(request) {\n var enabled = request.service.config.hostPrefixEnabled;\n if (!enabled) return request;\n var operationModel = request.service.api.operations[request.operation];\n //don't marshal host prefix when operation has endpoint discovery traits\n if (hasEndpointDiscover(request)) return request;\n if (operationModel.endpoint && operationModel.endpoint.hostPrefix) {\n var hostPrefixNotation = operationModel.endpoint.hostPrefix;\n var hostPrefix = expandHostPrefix(hostPrefixNotation, request.params, operationModel.input);\n prependEndpointPrefix(request.httpRequest.endpoint, hostPrefix);\n validateHostname(request.httpRequest.endpoint.hostname);\n }\n return request;\n}\n\n/**\n * @api private\n */\nfunction hasEndpointDiscover(request) {\n var api = request.service.api;\n var operationModel = api.operations[request.operation];\n var isEndpointOperation = api.endpointOperation && (api.endpointOperation === util.string.lowerFirst(operationModel.name));\n return (operationModel.endpointDiscoveryRequired !== 'NULL' || isEndpointOperation === true);\n}\n\n/**\n * @api private\n */\nfunction expandHostPrefix(hostPrefixNotation, params, shape) {\n util.each(shape.members, function(name, member) {\n if (member.hostLabel === true) {\n if (typeof params[name] !== 'string' || params[name] === '') {\n throw util.error(new Error(), {\n message: 'Parameter ' + name + ' should be a non-empty string.',\n code: 'InvalidParameter'\n });\n }\n var regex = new RegExp('\\\\{' + name + '\\\\}', 'g');\n hostPrefixNotation = hostPrefixNotation.replace(regex, params[name]);\n }\n });\n return hostPrefixNotation;\n}\n\n/**\n * @api private\n */\nfunction prependEndpointPrefix(endpoint, prefix) {\n if (endpoint.host) {\n endpoint.host = prefix + endpoint.host;\n }\n if (endpoint.hostname) {\n endpoint.hostname = prefix + endpoint.hostname;\n }\n}\n\n/**\n * @api private\n */\nfunction validateHostname(hostname) {\n var labels = hostname.split('.');\n //Reference: https://tools.ietf.org/html/rfc1123#section-2\n var hostPattern = /^[a-zA-Z0-9]{1}$|^[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9]$/;\n util.arrayEach(labels, function(label) {\n if (!label.length || label.length < 1 || label.length > 63) {\n throw util.error(new Error(), {\n code: 'ValidationError',\n message: 'Hostname label length should be between 1 to 63 characters, inclusive.'\n });\n }\n if (!hostPattern.test(label)) {\n throw AWS.util.error(new Error(),\n {code: 'ValidationError', message: label + ' is not hostname compatible.'});\n }\n });\n}\n\nmodule.exports = {\n populateHostPrefix: populateHostPrefix\n};\n","var Collection = require('./collection');\n\nvar util = require('../util');\n\nfunction property(obj, name, value) {\n if (value !== null && value !== undefined) {\n util.property.apply(this, arguments);\n }\n}\n\nfunction memoizedProperty(obj, name) {\n if (!obj.constructor.prototype[name]) {\n util.memoizedProperty.apply(this, arguments);\n }\n}\n\nfunction Shape(shape, options, memberName) {\n options = options || {};\n\n property(this, 'shape', shape.shape);\n property(this, 'api', options.api, false);\n property(this, 'type', shape.type);\n property(this, 'enum', shape.enum);\n property(this, 'min', shape.min);\n property(this, 'max', shape.max);\n property(this, 'pattern', shape.pattern);\n property(this, 'location', shape.location || this.location || 'body');\n property(this, 'name', this.name || shape.xmlName || shape.queryName ||\n shape.locationName || memberName);\n property(this, 'isStreaming', shape.streaming || this.isStreaming || false);\n property(this, 'requiresLength', shape.requiresLength, false);\n property(this, 'isComposite', shape.isComposite || false);\n property(this, 'isShape', true, false);\n property(this, 'isQueryName', Boolean(shape.queryName), false);\n property(this, 'isLocationName', Boolean(shape.locationName), false);\n property(this, 'isIdempotent', shape.idempotencyToken === true);\n property(this, 'isJsonValue', shape.jsonvalue === true);\n property(this, 'isSensitive', shape.sensitive === true || shape.prototype && shape.prototype.sensitive === true);\n property(this, 'isEventStream', Boolean(shape.eventstream), false);\n property(this, 'isEvent', Boolean(shape.event), false);\n property(this, 'isEventPayload', Boolean(shape.eventpayload), false);\n property(this, 'isEventHeader', Boolean(shape.eventheader), false);\n property(this, 'isTimestampFormatSet', Boolean(shape.timestampFormat) || shape.prototype && shape.prototype.isTimestampFormatSet === true, false);\n property(this, 'endpointDiscoveryId', Boolean(shape.endpointdiscoveryid), false);\n property(this, 'hostLabel', Boolean(shape.hostLabel), false);\n\n if (options.documentation) {\n property(this, 'documentation', shape.documentation);\n property(this, 'documentationUrl', shape.documentationUrl);\n }\n\n if (shape.xmlAttribute) {\n property(this, 'isXmlAttribute', shape.xmlAttribute || false);\n }\n\n // type conversion and parsing\n property(this, 'defaultValue', null);\n this.toWireFormat = function(value) {\n if (value === null || value === undefined) return '';\n return value;\n };\n this.toType = function(value) { return value; };\n}\n\n/**\n * @api private\n */\nShape.normalizedTypes = {\n character: 'string',\n double: 'float',\n long: 'integer',\n short: 'integer',\n biginteger: 'integer',\n bigdecimal: 'float',\n blob: 'binary'\n};\n\n/**\n * @api private\n */\nShape.types = {\n 'structure': StructureShape,\n 'list': ListShape,\n 'map': MapShape,\n 'boolean': BooleanShape,\n 'timestamp': TimestampShape,\n 'float': FloatShape,\n 'integer': IntegerShape,\n 'string': StringShape,\n 'base64': Base64Shape,\n 'binary': BinaryShape\n};\n\nShape.resolve = function resolve(shape, options) {\n if (shape.shape) {\n var refShape = options.api.shapes[shape.shape];\n if (!refShape) {\n throw new Error('Cannot find shape reference: ' + shape.shape);\n }\n\n return refShape;\n } else {\n return null;\n }\n};\n\nShape.create = function create(shape, options, memberName) {\n if (shape.isShape) return shape;\n\n var refShape = Shape.resolve(shape, options);\n if (refShape) {\n var filteredKeys = Object.keys(shape);\n if (!options.documentation) {\n filteredKeys = filteredKeys.filter(function(name) {\n return !name.match(/documentation/);\n });\n }\n\n // create an inline shape with extra members\n var InlineShape = function() {\n refShape.constructor.call(this, shape, options, memberName);\n };\n InlineShape.prototype = refShape;\n return new InlineShape();\n } else {\n // set type if not set\n if (!shape.type) {\n if (shape.members) shape.type = 'structure';\n else if (shape.member) shape.type = 'list';\n else if (shape.key) shape.type = 'map';\n else shape.type = 'string';\n }\n\n // normalize types\n var origType = shape.type;\n if (Shape.normalizedTypes[shape.type]) {\n shape.type = Shape.normalizedTypes[shape.type];\n }\n\n if (Shape.types[shape.type]) {\n return new Shape.types[shape.type](shape, options, memberName);\n } else {\n throw new Error('Unrecognized shape type: ' + origType);\n }\n }\n};\n\nfunction CompositeShape(shape) {\n Shape.apply(this, arguments);\n property(this, 'isComposite', true);\n\n if (shape.flattened) {\n property(this, 'flattened', shape.flattened || false);\n }\n}\n\nfunction StructureShape(shape, options) {\n var self = this;\n var requiredMap = null, firstInit = !this.isShape;\n\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return {}; });\n property(this, 'members', {});\n property(this, 'memberNames', []);\n property(this, 'required', []);\n property(this, 'isRequired', function() { return false; });\n }\n\n if (shape.members) {\n property(this, 'members', new Collection(shape.members, options, function(name, member) {\n return Shape.create(member, options, name);\n }));\n memoizedProperty(this, 'memberNames', function() {\n return shape.xmlOrder || Object.keys(shape.members);\n });\n\n if (shape.event) {\n memoizedProperty(this, 'eventPayloadMemberName', function() {\n var members = self.members;\n var memberNames = self.memberNames;\n // iterate over members to find ones that are event payloads\n for (var i = 0, iLen = memberNames.length; i < iLen; i++) {\n if (members[memberNames[i]].isEventPayload) {\n return memberNames[i];\n }\n }\n });\n\n memoizedProperty(this, 'eventHeaderMemberNames', function() {\n var members = self.members;\n var memberNames = self.memberNames;\n var eventHeaderMemberNames = [];\n // iterate over members to find ones that are event headers\n for (var i = 0, iLen = memberNames.length; i < iLen; i++) {\n if (members[memberNames[i]].isEventHeader) {\n eventHeaderMemberNames.push(memberNames[i]);\n }\n }\n return eventHeaderMemberNames;\n });\n }\n }\n\n if (shape.required) {\n property(this, 'required', shape.required);\n property(this, 'isRequired', function(name) {\n if (!requiredMap) {\n requiredMap = {};\n for (var i = 0; i < shape.required.length; i++) {\n requiredMap[shape.required[i]] = true;\n }\n }\n\n return requiredMap[name];\n }, false, true);\n }\n\n property(this, 'resultWrapper', shape.resultWrapper || null);\n\n if (shape.payload) {\n property(this, 'payload', shape.payload);\n }\n\n if (typeof shape.xmlNamespace === 'string') {\n property(this, 'xmlNamespaceUri', shape.xmlNamespace);\n } else if (typeof shape.xmlNamespace === 'object') {\n property(this, 'xmlNamespacePrefix', shape.xmlNamespace.prefix);\n property(this, 'xmlNamespaceUri', shape.xmlNamespace.uri);\n }\n}\n\nfunction ListShape(shape, options) {\n var self = this, firstInit = !this.isShape;\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return []; });\n }\n\n if (shape.member) {\n memoizedProperty(this, 'member', function() {\n return Shape.create(shape.member, options);\n });\n }\n\n if (this.flattened) {\n var oldName = this.name;\n memoizedProperty(this, 'name', function() {\n return self.member.name || oldName;\n });\n }\n}\n\nfunction MapShape(shape, options) {\n var firstInit = !this.isShape;\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return {}; });\n property(this, 'key', Shape.create({type: 'string'}, options));\n property(this, 'value', Shape.create({type: 'string'}, options));\n }\n\n if (shape.key) {\n memoizedProperty(this, 'key', function() {\n return Shape.create(shape.key, options);\n });\n }\n if (shape.value) {\n memoizedProperty(this, 'value', function() {\n return Shape.create(shape.value, options);\n });\n }\n}\n\nfunction TimestampShape(shape) {\n var self = this;\n Shape.apply(this, arguments);\n\n if (shape.timestampFormat) {\n property(this, 'timestampFormat', shape.timestampFormat);\n } else if (self.isTimestampFormatSet && this.timestampFormat) {\n property(this, 'timestampFormat', this.timestampFormat);\n } else if (this.location === 'header') {\n property(this, 'timestampFormat', 'rfc822');\n } else if (this.location === 'querystring') {\n property(this, 'timestampFormat', 'iso8601');\n } else if (this.api) {\n switch (this.api.protocol) {\n case 'json':\n case 'rest-json':\n property(this, 'timestampFormat', 'unixTimestamp');\n break;\n case 'rest-xml':\n case 'query':\n case 'ec2':\n property(this, 'timestampFormat', 'iso8601');\n break;\n }\n }\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n if (typeof value.toUTCString === 'function') return value;\n return typeof value === 'string' || typeof value === 'number' ?\n util.date.parseTimestamp(value) : null;\n };\n\n this.toWireFormat = function(value) {\n return util.date.format(value, self.timestampFormat);\n };\n}\n\nfunction StringShape() {\n Shape.apply(this, arguments);\n\n var nullLessProtocols = ['rest-xml', 'query', 'ec2'];\n this.toType = function(value) {\n value = this.api && nullLessProtocols.indexOf(this.api.protocol) > -1 ?\n value || '' : value;\n if (this.isJsonValue) {\n return JSON.parse(value);\n }\n\n return value && typeof value.toString === 'function' ?\n value.toString() : value;\n };\n\n this.toWireFormat = function(value) {\n return this.isJsonValue ? JSON.stringify(value) : value;\n };\n}\n\nfunction FloatShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n return parseFloat(value);\n };\n this.toWireFormat = this.toType;\n}\n\nfunction IntegerShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n return parseInt(value, 10);\n };\n this.toWireFormat = this.toType;\n}\n\nfunction BinaryShape() {\n Shape.apply(this, arguments);\n this.toType = function(value) {\n var buf = util.base64.decode(value);\n if (this.isSensitive && util.isNode() && typeof util.Buffer.alloc === 'function') {\n /* Node.js can create a Buffer that is not isolated.\n * i.e. buf.byteLength !== buf.buffer.byteLength\n * This means that the sensitive data is accessible to anyone with access to buf.buffer.\n * If this is the node shared Buffer, then other code within this process _could_ find this secret.\n * Copy sensitive data to an isolated Buffer and zero the sensitive data.\n * While this is safe to do here, copying this code somewhere else may produce unexpected results.\n */\n var secureBuf = util.Buffer.alloc(buf.length, buf);\n buf.fill(0);\n buf = secureBuf;\n }\n return buf;\n };\n this.toWireFormat = util.base64.encode;\n}\n\nfunction Base64Shape() {\n BinaryShape.apply(this, arguments);\n}\n\nfunction BooleanShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (typeof value === 'boolean') return value;\n if (value === null || value === undefined) return null;\n return value === 'true';\n };\n}\n\n/**\n * @api private\n */\nShape.shapes = {\n StructureShape: StructureShape,\n ListShape: ListShape,\n MapShape: MapShape,\n StringShape: StringShape,\n BooleanShape: BooleanShape,\n Base64Shape: Base64Shape\n};\n\n/**\n * @api private\n */\nmodule.exports = Shape;\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar service = null;\n\n/**\n * @api private\n */\nvar api = {\n signatureVersion: 'v4',\n signingName: 'rds-db'\n};\n\n/**\n * @api private\n */\nvar requiredAuthTokenOptions = {\n region: 'string',\n hostname: 'string',\n port: 'number',\n username: 'string'\n};\n\n/**\n * A signer object can be used to generate an auth token to a database.\n */\nAWS.RDS.Signer = AWS.util.inherit({\n /**\n * Creates a signer object can be used to generate an auth token.\n *\n * @option options credentials [AWS.Credentials] the AWS credentials\n * to sign requests with. Uses the default credential provider chain\n * if not specified.\n * @option options hostname [String] the hostname of the database to connect to.\n * @option options port [Number] the port number the database is listening on.\n * @option options region [String] the region the database is located in.\n * @option options username [String] the username to login as.\n * @example Passing in options to constructor\n * var signer = new AWS.RDS.Signer({\n * credentials: new AWS.SharedIniFileCredentials({profile: 'default'}),\n * region: 'us-east-1',\n * hostname: 'db.us-east-1.rds.amazonaws.com',\n * port: 8000,\n * username: 'name'\n * });\n */\n constructor: function Signer(options) {\n this.options = options || {};\n },\n\n /**\n * @api private\n * Strips the protocol from a url.\n */\n convertUrlToAuthToken: function convertUrlToAuthToken(url) {\n // we are always using https as the protocol\n var protocol = 'https://';\n if (url.indexOf(protocol) === 0) {\n return url.substring(protocol.length);\n }\n },\n\n /**\n * @overload getAuthToken(options = {}, [callback])\n * Generate an auth token to a database.\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n *\n * @param options [map] The fields to use when generating an auth token.\n * Any options specified here will be merged on top of any options passed\n * to AWS.RDS.Signer:\n *\n * * **credentials** (AWS.Credentials) — the AWS credentials\n * to sign requests with. Uses the default credential provider chain\n * if not specified.\n * * **hostname** (String) — the hostname of the database to connect to.\n * * **port** (Number) — the port number the database is listening on.\n * * **region** (String) — the region the database is located in.\n * * **username** (String) — the username to login as.\n * @return [String] if called synchronously (with no callback), returns the\n * auth token.\n * @return [null] nothing is returned if a callback is provided.\n * @callback callback function (err, token)\n * If a callback is supplied, it is called when an auth token has been generated.\n * @param err [Error] the error object returned from the signer.\n * @param token [String] the auth token.\n *\n * @example Generating an auth token synchronously\n * var signer = new AWS.RDS.Signer({\n * // configure options\n * region: 'us-east-1',\n * username: 'default',\n * hostname: 'db.us-east-1.amazonaws.com',\n * port: 8000\n * });\n * var token = signer.getAuthToken({\n * // these options are merged with those defined when creating the signer, overriding in the case of a duplicate option\n * // credentials are not specified here or when creating the signer, so default credential provider will be used\n * username: 'test' // overriding username\n * });\n * @example Generating an auth token asynchronously\n * var signer = new AWS.RDS.Signer({\n * // configure options\n * region: 'us-east-1',\n * username: 'default',\n * hostname: 'db.us-east-1.amazonaws.com',\n * port: 8000\n * });\n * signer.getAuthToken({\n * // these options are merged with those defined when creating the signer, overriding in the case of a duplicate option\n * // credentials are not specified here or when creating the signer, so default credential provider will be used\n * username: 'test' // overriding username\n * }, function(err, token) {\n * if (err) {\n * // handle error\n * } else {\n * // use token\n * }\n * });\n *\n */\n getAuthToken: function getAuthToken(options, callback) {\n if (typeof options === 'function' && callback === undefined) {\n callback = options;\n options = {};\n }\n var self = this;\n var hasCallback = typeof callback === 'function';\n // merge options with existing options\n options = AWS.util.merge(this.options, options);\n // validate options\n var optionsValidation = this.validateAuthTokenOptions(options);\n if (optionsValidation !== true) {\n if (hasCallback) {\n return callback(optionsValidation, null);\n }\n throw optionsValidation;\n }\n\n // 15 minutes\n var expires = 900;\n // create service to generate a request from\n var serviceOptions = {\n region: options.region,\n endpoint: new AWS.Endpoint(options.hostname + ':' + options.port),\n paramValidation: false,\n signatureVersion: 'v4'\n };\n if (options.credentials) {\n serviceOptions.credentials = options.credentials;\n }\n service = new AWS.Service(serviceOptions);\n // ensure the SDK is using sigv4 signing (config is not enough)\n service.api = api;\n\n var request = service.makeRequest();\n // add listeners to request to properly build auth token\n this.modifyRequestForAuthToken(request, options);\n\n if (hasCallback) {\n request.presign(expires, function(err, url) {\n if (url) {\n url = self.convertUrlToAuthToken(url);\n }\n callback(err, url);\n });\n } else {\n var url = request.presign(expires);\n return this.convertUrlToAuthToken(url);\n }\n },\n\n /**\n * @api private\n * Modifies a request to allow the presigner to generate an auth token.\n */\n modifyRequestForAuthToken: function modifyRequestForAuthToken(request, options) {\n request.on('build', request.buildAsGet);\n var httpRequest = request.httpRequest;\n httpRequest.body = AWS.util.queryParamsToString({\n Action: 'connect',\n DBUser: options.username\n });\n },\n\n /**\n * @api private\n * Validates that the options passed in contain all the keys with values of the correct type that\n * are needed to generate an auth token.\n */\n validateAuthTokenOptions: function validateAuthTokenOptions(options) {\n // iterate over all keys in options\n var message = '';\n options = options || {};\n for (var key in requiredAuthTokenOptions) {\n if (!Object.prototype.hasOwnProperty.call(requiredAuthTokenOptions, key)) {\n continue;\n }\n if (typeof options[key] !== requiredAuthTokenOptions[key]) {\n message += 'option \\'' + key + '\\' should have been type \\'' + requiredAuthTokenOptions[key] + '\\', was \\'' + typeof options[key] + '\\'.\\n';\n }\n }\n if (message.length) {\n return AWS.util.error(new Error(), {\n code: 'InvalidParameter',\n message: message\n });\n }\n return true;\n }\n});\n","var AWS = require('../core');\nvar util = require('../util');\nvar QueryParamSerializer = require('../query/query_param_serializer');\nvar Shape = require('../model/shape');\nvar populateHostPrefix = require('./helpers').populateHostPrefix;\n\nfunction buildRequest(req) {\n var operation = req.service.api.operations[req.operation];\n var httpRequest = req.httpRequest;\n httpRequest.headers['Content-Type'] =\n 'application/x-www-form-urlencoded; charset=utf-8';\n httpRequest.params = {\n Version: req.service.api.apiVersion,\n Action: operation.name\n };\n\n // convert the request parameters into a list of query params,\n // e.g. Deeply.NestedParam.0.Name=value\n var builder = new QueryParamSerializer();\n builder.serialize(req.params, operation.input, function(name, value) {\n httpRequest.params[name] = value;\n });\n httpRequest.body = util.queryParamsToString(httpRequest.params);\n\n populateHostPrefix(req);\n}\n\nfunction extractError(resp) {\n var data, body = resp.httpResponse.body.toString();\n if (body.match('