{"version":3,"file":"static/js/main.b4ecea7d.js","mappings":"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","sources":["../node_modules/aws-sdk/clients/acm.js","../node_modules/aws-sdk/clients/amp.js","../node_modules/aws-sdk/clients/apigateway.js","../node_modules/aws-sdk/clients/applicationautoscaling.js","../node_modules/aws-sdk/clients/athena.js","../node_modules/aws-sdk/clients/autoscaling.js","../node_modules/aws-sdk/clients/browser_default.js","../node_modules/aws-sdk/clients/cloudformation.js","../node_modules/aws-sdk/clients/cloudfront.js","../node_modules/aws-sdk/clients/cloudhsm.js","../node_modules/aws-sdk/clients/cloudhsmv2.js","../node_modules/aws-sdk/clients/cloudtrail.js","../node_modules/aws-sdk/clients/cloudwatch.js","../node_modules/aws-sdk/clients/cloudwatchevents.js","../node_modules/aws-sdk/clients/cloudwatchlogs.js","../node_modules/aws-sdk/clients/codebuild.js","../node_modules/aws-sdk/clients/codecommit.js","../node_modules/aws-sdk/clients/codedeploy.js","../node_modules/aws-sdk/clients/codepipeline.js","../node_modules/aws-sdk/clients/cognitoidentity.js","../node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js","../node_modules/aws-sdk/clients/cognitosync.js","../node_modules/aws-sdk/clients/comprehend.js","../node_modules/aws-sdk/clients/comprehendmedical.js","../node_modules/aws-sdk/clients/configservice.js","../node_modules/aws-sdk/clients/connect.js","../node_modules/aws-sdk/clients/costexplorer.js","../node_modules/aws-sdk/clients/cur.js","../node_modules/aws-sdk/clients/devicefarm.js","../node_modules/aws-sdk/clients/directconnect.js","../node_modules/aws-sdk/clients/dynamodb.js","../node_modules/aws-sdk/clients/dynamodbstreams.js","../node_modules/aws-sdk/clients/ec2.js","../node_modules/aws-sdk/clients/ecr.js","../node_modules/aws-sdk/clients/ecs.js","../node_modules/aws-sdk/clients/efs.js","../node_modules/aws-sdk/clients/elasticache.js","../node_modules/aws-sdk/clients/elasticbeanstalk.js","../node_modules/aws-sdk/clients/elastictranscoder.js","../node_modules/aws-sdk/clients/elb.js","../node_modules/aws-sdk/clients/elbv2.js","../node_modules/aws-sdk/clients/emr.js","../node_modules/aws-sdk/clients/firehose.js","../node_modules/aws-sdk/clients/forecastqueryservice.js","../node_modules/aws-sdk/clients/forecastservice.js","../node_modules/aws-sdk/clients/gamelift.js","../node_modules/aws-sdk/clients/iam.js","../node_modules/aws-sdk/clients/inspector.js","../node_modules/aws-sdk/clients/iot.js","../node_modules/aws-sdk/clients/iotanalytics.js","../node_modules/aws-sdk/clients/iotdata.js","../node_modules/aws-sdk/clients/kinesis.js","../node_modules/aws-sdk/clients/kinesisvideo.js","../node_modules/aws-sdk/clients/kinesisvideoarchivedmedia.js","../node_modules/aws-sdk/clients/kinesisvideomedia.js","../node_modules/aws-sdk/clients/kinesisvideosignalingchannels.js","../node_modules/aws-sdk/clients/kms.js","../node_modules/aws-sdk/clients/lambda.js","../node_modules/aws-sdk/clients/lexmodelbuildingservice.js","../node_modules/aws-sdk/clients/lexruntime.js","../node_modules/aws-sdk/clients/lexruntimev2.js","../node_modules/aws-sdk/clients/location.js","../node_modules/aws-sdk/clients/machinelearning.js","../node_modules/aws-sdk/clients/marketplacecatalog.js","../node_modules/aws-sdk/clients/marketplacecommerceanalytics.js","../node_modules/aws-sdk/clients/mediastoredata.js","../node_modules/aws-sdk/clients/mobileanalytics.js","../node_modules/aws-sdk/clients/mturk.js","../node_modules/aws-sdk/clients/opsworks.js","../node_modules/aws-sdk/clients/personalize.js","../node_modules/aws-sdk/clients/personalizeevents.js","../node_modules/aws-sdk/clients/personalizeruntime.js","../node_modules/aws-sdk/clients/polly.js","../node_modules/aws-sdk/clients/pricing.js","../node_modules/aws-sdk/clients/rds.js","../node_modules/aws-sdk/clients/redshift.js","../node_modules/aws-sdk/clients/rekognition.js","../node_modules/aws-sdk/clients/resourcegroups.js","../node_modules/aws-sdk/clients/route53.js","../node_modules/aws-sdk/clients/route53domains.js","../node_modules/aws-sdk/clients/s3.js","../node_modules/aws-sdk/clients/secretsmanager.js","../node_modules/aws-sdk/clients/servicecatalog.js","../node_modules/aws-sdk/clients/ses.js","../node_modules/aws-sdk/clients/sns.js","../node_modules/aws-sdk/clients/sqs.js","../node_modules/aws-sdk/clients/ssm.js","../node_modules/aws-sdk/clients/storagegateway.js","../node_modules/aws-sdk/clients/sts.js","../node_modules/aws-sdk/clients/translate.js","../node_modules/aws-sdk/clients/waf.js","../node_modules/aws-sdk/clients/workdocs.js","../node_modules/aws-sdk/clients/xray.js","../node_modules/aws-sdk/lib/api_loader.js","../node_modules/aws-sdk/lib/browser.js","../node_modules/aws-sdk/lib/browserCryptoLib.js","../node_modules/aws-sdk/lib/browserHashUtils.js","../node_modules/aws-sdk/lib/browserHmac.js","../node_modules/aws-sdk/lib/browserMd5.js","../node_modules/aws-sdk/lib/browserSha1.js","../node_modules/aws-sdk/lib/browserSha256.js","../node_modules/aws-sdk/lib/browser_loader.js","../node_modules/aws-sdk/lib/cloudfront/signer.js","../node_modules/aws-sdk/lib/config.js","../node_modules/aws-sdk/lib/config_regional_endpoint.js","../node_modules/aws-sdk/lib/core.js","../node_modules/aws-sdk/lib/credentials.js","../node_modules/aws-sdk/lib/credentials/chainable_temporary_credentials.js","../node_modules/aws-sdk/lib/credentials/cognito_identity_credentials.js","../node_modules/aws-sdk/lib/credentials/credential_provider_chain.js","../node_modules/aws-sdk/lib/credentials/saml_credentials.js","../node_modules/aws-sdk/lib/credentials/temporary_credentials.js","../node_modules/aws-sdk/lib/credentials/web_identity_credentials.js","../node_modules/aws-sdk/lib/discover_endpoint.js","../node_modules/aws-sdk/lib/dynamodb/converter.js","../node_modules/aws-sdk/lib/dynamodb/document_client.js","../node_modules/aws-sdk/lib/dynamodb/numberValue.js","../node_modules/aws-sdk/lib/dynamodb/set.js","../node_modules/aws-sdk/lib/dynamodb/translator.js","../node_modules/aws-sdk/lib/dynamodb/types.js","../node_modules/aws-sdk/lib/event-stream/buffered-create-event-stream.js","../node_modules/aws-sdk/lib/event-stream/event-message-chunker.js","../node_modules/aws-sdk/lib/event-stream/int64.js","../node_modules/aws-sdk/lib/event-stream/parse-event.js","../node_modules/aws-sdk/lib/event-stream/parse-message.js","../node_modules/aws-sdk/lib/event-stream/split-message.js","../node_modules/aws-sdk/lib/event_listeners.js","../node_modules/aws-sdk/lib/http.js","../node_modules/aws-sdk/lib/http/xhr.js","../node_modules/aws-sdk/lib/json/builder.js","../node_modules/aws-sdk/lib/json/parser.js","../node_modules/aws-sdk/lib/maintenance_mode_message.js","../node_modules/aws-sdk/lib/model/api.js","../node_modules/aws-sdk/lib/model/collection.js","../node_modules/aws-sdk/lib/model/operation.js","../node_modules/aws-sdk/lib/model/paginator.js","../node_modules/aws-sdk/lib/model/resource_waiter.js","../node_modules/aws-sdk/lib/model/shape.js","../node_modules/aws-sdk/lib/param_validator.js","../node_modules/aws-sdk/lib/polly/presigner.js","../node_modules/aws-sdk/lib/protocol/helpers.js","../node_modules/aws-sdk/lib/protocol/json.js","../node_modules/aws-sdk/lib/protocol/query.js","../node_modules/aws-sdk/lib/protocol/rest.js","../node_modules/aws-sdk/lib/protocol/rest_json.js","../node_modules/aws-sdk/lib/protocol/rest_xml.js","../node_modules/aws-sdk/lib/query/query_param_serializer.js","../node_modules/aws-sdk/lib/rds/signer.js","../node_modules/aws-sdk/lib/realclock/browserClock.js","../node_modules/aws-sdk/lib/region/utils.js","../node_modules/aws-sdk/lib/region_config.js","../node_modules/aws-sdk/lib/request.js","../node_modules/aws-sdk/lib/resource_waiter.js","../node_modules/aws-sdk/lib/response.js","../node_modules/aws-sdk/lib/s3/managed_upload.js","../node_modules/aws-sdk/lib/sequential_executor.js","../node_modules/aws-sdk/lib/service.js","../node_modules/aws-sdk/lib/services/apigateway.js","../node_modules/aws-sdk/lib/services/cloudfront.js","../node_modules/aws-sdk/lib/services/dynamodb.js","../node_modules/aws-sdk/lib/services/ec2.js","../node_modules/aws-sdk/lib/services/iotdata.js","../node_modules/aws-sdk/lib/services/lambda.js","../node_modules/aws-sdk/lib/services/machinelearning.js","../node_modules/aws-sdk/lib/services/polly.js","../node_modules/aws-sdk/lib/services/rds.js","../node_modules/aws-sdk/lib/services/rdsutil.js","../node_modules/aws-sdk/lib/services/route53.js","../node_modules/aws-sdk/lib/services/s3.js","../node_modules/aws-sdk/lib/services/s3util.js","../node_modules/aws-sdk/lib/services/sqs.js","../node_modules/aws-sdk/lib/services/sts.js","../node_modules/aws-sdk/lib/signers/bearer.js","../node_modules/aws-sdk/lib/signers/presign.js","../node_modules/aws-sdk/lib/signers/request_signer.js","../node_modules/aws-sdk/lib/signers/s3.js","../node_modules/aws-sdk/lib/signers/v2.js","../node_modules/aws-sdk/lib/signers/v3.js","../node_modules/aws-sdk/lib/signers/v3https.js","../node_modules/aws-sdk/lib/signers/v4.js","../node_modules/aws-sdk/lib/signers/v4_credentials.js","../node_modules/aws-sdk/lib/state_machine.js","../node_modules/aws-sdk/lib/util.js","../node_modules/aws-sdk/lib/xml/browser_parser.js","../node_modules/aws-sdk/lib/xml/builder.js","../node_modules/aws-sdk/lib/xml/escape-attribute.js","../node_modules/aws-sdk/lib/xml/escape-element.js","../node_modules/aws-sdk/lib/xml/xml-node.js","../node_modules/aws-sdk/lib/xml/xml-text.js","../node_modules/aws-sdk/node_modules/events/events.js","../node_modules/aws-sdk/node_modules/uuid/dist/bytesToUuid.js","../node_modules/aws-sdk/node_modules/uuid/dist/index.js","../node_modules/aws-sdk/node_modules/uuid/dist/md5-browser.js","../node_modules/aws-sdk/node_modules/uuid/dist/rng-browser.js","../node_modules/aws-sdk/node_modules/uuid/dist/sha1-browser.js","../node_modules/aws-sdk/node_modules/uuid/dist/v1.js","../node_modules/aws-sdk/node_modules/uuid/dist/v3.js","../node_modules/aws-sdk/node_modules/uuid/dist/v35.js","../node_modules/aws-sdk/node_modules/uuid/dist/v4.js","../node_modules/aws-sdk/node_modules/uuid/dist/v5.js","../node_modules/aws-sdk/vendor/endpoint-cache/index.js","../node_modules/aws-sdk/vendor/endpoint-cache/utils/LRU.js","../node_modules/base64-js/index.js","../node_modules/buffer/index.js","../node_modules/call-bind/callBound.js","../node_modules/call-bind/index.js","../node_modules/define-data-property/index.js","../node_modules/es-define-property/index.js","../node_modules/es-errors/eval.js","../node_modules/es-errors/index.js","../node_modules/es-errors/range.js","../node_modules/es-errors/ref.js","../node_modules/es-errors/syntax.js","../node_modules/es-errors/type.js","../node_modules/es-errors/uri.js","../node_modules/for-each/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/get-intrinsic/index.js","../node_modules/gopd/index.js","../node_modules/has-property-descriptors/index.js","../node_modules/has-proto/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/has-tostringtag/shams.js","../node_modules/hasown/index.js","../node_modules/ieee754/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/is-arguments/index.js","../node_modules/is-callable/index.js","../node_modules/is-generator-function/index.js","../node_modules/is-typed-array/index.js","../node_modules/isarray/index.js","../node_modules/jmespath/jmespath.js","../node_modules/possible-typed-array-names/index.js","../node_modules/querystring/decode.js","../node_modules/querystring/encode.js","../node_modules/querystring/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/set-function-length/index.js","../node_modules/url/node_modules/punycode/punycode.js","../node_modules/url/url.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.min.js","../node_modules/use-sync-external-store/with-selector.js","../node_modules/util/support/isBufferBrowser.js","../node_modules/util/support/types.js","../node_modules/util/util.js","../node_modules/which-typed-array/index.js","../node_modules/available-typed-arrays/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/use-sync-external-store-shim/useSyncExternalStoreShimClient.ts","../node_modules/react-router/lib/use-sync-external-store-shim/index.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/index.tsx","../node_modules/@reduxjs/toolkit/node_modules/immer/src/utils/env.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/utils/errors.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/utils/common.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/utils/plugins.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/scope.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/finalize.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/proxy.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/immerClass.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/current.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/immer.ts","../node_modules/reselect/src/utils.ts","../node_modules/reselect/src/autotrackMemoize/proxy.ts","../node_modules/reselect/src/weakMapMemoize.ts","../node_modules/reselect/src/createSelectorCreator.ts","../node_modules/reselect/src/createStructuredSelector.ts","../node_modules/redux/src/utils/formatProdErrorMessage.ts","../node_modules/redux/src/utils/symbol-observable.ts","../node_modules/redux/src/utils/actionTypes.ts","../node_modules/redux/src/utils/isPlainObject.ts","../node_modules/redux/src/createStore.ts","../node_modules/redux/src/combineReducers.ts","../node_modules/redux/src/compose.ts","../node_modules/redux-thunk/dist/redux-thunk.mjs","../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts","../node_modules/@reduxjs/toolkit/src/createDraftSafeSelector.ts","../node_modules/@reduxjs/toolkit/src/createAction.ts","../node_modules/redux/src/utils/isAction.ts","../node_modules/@reduxjs/toolkit/src/utils.ts","../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts","../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts","../node_modules/@reduxjs/toolkit/src/getDefaultEnhancers.ts","../node_modules/@reduxjs/toolkit/src/mapBuilders.ts","../node_modules/@reduxjs/toolkit/src/nanoid.ts","../node_modules/@reduxjs/toolkit/src/createSlice.ts","../node_modules/@reduxjs/toolkit/src/createReducer.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/exceptions.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/utils.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/combineSlices.ts","../node_modules/@reduxjs/toolkit/src/formatProdErrorMessage.ts","store/slices/ui-slice.js","../node_modules/react-redux/src/utils/react.ts","../node_modules/react-redux/src/components/Context.ts","../node_modules/react-redux/src/utils/useSyncExternalStore.ts","../node_modules/react-redux/src/hooks/useReduxContext.ts","../node_modules/react-redux/src/hooks/useSelector.ts","../node_modules/react-redux/src/utils/react-is.ts","../node_modules/react-redux/src/utils/batch.ts","../node_modules/react-redux/src/utils/Subscription.ts","../node_modules/react-redux/src/utils/useIsomorphicLayoutEffect.ts","../node_modules/react-redux/src/utils/hoistStatics.ts","../node_modules/react-redux/src/components/Provider.tsx","../node_modules/react-redux/src/hooks/useStore.ts","../node_modules/react-redux/src/hooks/useDispatch.ts","../node_modules/react-redux/src/index.ts","../node_modules/react-redux/src/components/connect.tsx","components/Header/Header.js","components/MenuItem/MenuItem.js","components/Menu/Menu.js","components/SidebarMenu/SidebarMenu.js","components/MobileMenu/MobileMenu.js","utils/secretsHelper.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","components/BlogItem/BlogItem.js","components/BlogPage/BlogPage.js","components/HomePage/HomePage.js","components/DetailsPage/DetailsPage.js","components/BitcoinPage/BitcoinPage.js","components/ContactPage/ContactPage.js","app.js","store/index.js","../node_modules/@reduxjs/toolkit/src/configureStore.ts","../node_modules/redux/src/applyMiddleware.ts","index.js"],"sourcesContent":["require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['acm'] = {};\nAWS.ACM = Service.defineService('acm', ['2015-12-08']);\nObject.defineProperty(apiLoader.services['acm'], '2015-12-08', {\n get: function get() {\n var model = require('../apis/acm-2015-12-08.min.json');\n model.paginators = require('../apis/acm-2015-12-08.paginators.json').pagination;\n model.waiters = require('../apis/acm-2015-12-08.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ACM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['amp'] = {};\nAWS.Amp = Service.defineService('amp', ['2020-08-01']);\nObject.defineProperty(apiLoader.services['amp'], '2020-08-01', {\n get: function get() {\n var model = require('../apis/amp-2020-08-01.min.json');\n model.paginators = require('../apis/amp-2020-08-01.paginators.json').pagination;\n model.waiters = require('../apis/amp-2020-08-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Amp;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['apigateway'] = {};\nAWS.APIGateway = Service.defineService('apigateway', ['2015-07-09']);\nrequire('../lib/services/apigateway');\nObject.defineProperty(apiLoader.services['apigateway'], '2015-07-09', {\n get: function get() {\n var model = require('../apis/apigateway-2015-07-09.min.json');\n model.paginators = require('../apis/apigateway-2015-07-09.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.APIGateway;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['applicationautoscaling'] = {};\nAWS.ApplicationAutoScaling = Service.defineService('applicationautoscaling', ['2016-02-06']);\nObject.defineProperty(apiLoader.services['applicationautoscaling'], '2016-02-06', {\n get: function get() {\n var model = require('../apis/application-autoscaling-2016-02-06.min.json');\n model.paginators = require('../apis/application-autoscaling-2016-02-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ApplicationAutoScaling;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['athena'] = {};\nAWS.Athena = Service.defineService('athena', ['2017-05-18']);\nObject.defineProperty(apiLoader.services['athena'], '2017-05-18', {\n get: function get() {\n var model = require('../apis/athena-2017-05-18.min.json');\n model.paginators = require('../apis/athena-2017-05-18.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Athena;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['autoscaling'] = {};\nAWS.AutoScaling = Service.defineService('autoscaling', ['2011-01-01']);\nObject.defineProperty(apiLoader.services['autoscaling'], '2011-01-01', {\n get: function get() {\n var model = require('../apis/autoscaling-2011-01-01.min.json');\n model.paginators = require('../apis/autoscaling-2011-01-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.AutoScaling;\n","require('../lib/node_loader');\nmodule.exports = {\n ACM: require('./acm'),\n APIGateway: require('./apigateway'),\n ApplicationAutoScaling: require('./applicationautoscaling'),\n AutoScaling: require('./autoscaling'),\n CloudFormation: require('./cloudformation'),\n CloudFront: require('./cloudfront'),\n CloudHSM: require('./cloudhsm'),\n CloudTrail: require('./cloudtrail'),\n CloudWatch: require('./cloudwatch'),\n CloudWatchEvents: require('./cloudwatchevents'),\n CloudWatchLogs: require('./cloudwatchlogs'),\n CodeBuild: require('./codebuild'),\n CodeCommit: require('./codecommit'),\n CodeDeploy: require('./codedeploy'),\n CodePipeline: require('./codepipeline'),\n CognitoIdentity: require('./cognitoidentity'),\n CognitoIdentityServiceProvider: require('./cognitoidentityserviceprovider'),\n CognitoSync: require('./cognitosync'),\n ConfigService: require('./configservice'),\n CUR: require('./cur'),\n DeviceFarm: require('./devicefarm'),\n DirectConnect: require('./directconnect'),\n DynamoDB: require('./dynamodb'),\n DynamoDBStreams: require('./dynamodbstreams'),\n EC2: require('./ec2'),\n ECR: require('./ecr'),\n ECS: require('./ecs'),\n EFS: require('./efs'),\n ElastiCache: require('./elasticache'),\n ElasticBeanstalk: require('./elasticbeanstalk'),\n ELB: require('./elb'),\n ELBv2: require('./elbv2'),\n EMR: require('./emr'),\n ElasticTranscoder: require('./elastictranscoder'),\n Firehose: require('./firehose'),\n GameLift: require('./gamelift'),\n IAM: require('./iam'),\n Inspector: require('./inspector'),\n Iot: require('./iot'),\n IotData: require('./iotdata'),\n Kinesis: require('./kinesis'),\n KMS: require('./kms'),\n Lambda: require('./lambda'),\n LexRuntime: require('./lexruntime'),\n MachineLearning: require('./machinelearning'),\n MarketplaceCommerceAnalytics: require('./marketplacecommerceanalytics'),\n MTurk: require('./mturk'),\n MobileAnalytics: require('./mobileanalytics'),\n OpsWorks: require('./opsworks'),\n Polly: require('./polly'),\n RDS: require('./rds'),\n Redshift: require('./redshift'),\n Rekognition: require('./rekognition'),\n Route53: require('./route53'),\n Route53Domains: require('./route53domains'),\n S3: require('./s3'),\n ServiceCatalog: require('./servicecatalog'),\n SES: require('./ses'),\n SNS: require('./sns'),\n SQS: require('./sqs'),\n SSM: require('./ssm'),\n StorageGateway: require('./storagegateway'),\n STS: require('./sts'),\n XRay: require('./xray'),\n WAF: require('./waf'),\n WorkDocs: require('./workdocs'),\n LexModelBuildingService: require('./lexmodelbuildingservice'),\n Athena: require('./athena'),\n CloudHSMV2: require('./cloudhsmv2'),\n Pricing: require('./pricing'),\n CostExplorer: require('./costexplorer'),\n MediaStoreData: require('./mediastoredata'),\n Comprehend: require('./comprehend'),\n KinesisVideoArchivedMedia: require('./kinesisvideoarchivedmedia'),\n KinesisVideoMedia: require('./kinesisvideomedia'),\n KinesisVideo: require('./kinesisvideo'),\n Translate: require('./translate'),\n ResourceGroups: require('./resourcegroups'),\n Connect: require('./connect'),\n SecretsManager: require('./secretsmanager'),\n IoTAnalytics: require('./iotanalytics'),\n ComprehendMedical: require('./comprehendmedical'),\n Personalize: require('./personalize'),\n PersonalizeEvents: require('./personalizeevents'),\n PersonalizeRuntime: require('./personalizeruntime'),\n ForecastService: require('./forecastservice'),\n ForecastQueryService: require('./forecastqueryservice'),\n MarketplaceCatalog: require('./marketplacecatalog'),\n KinesisVideoSignalingChannels: require('./kinesisvideosignalingchannels'),\n Amp: require('./amp'),\n Location: require('./location'),\n LexRuntimeV2: require('./lexruntimev2')\n};","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudformation'] = {};\nAWS.CloudFormation = Service.defineService('cloudformation', ['2010-05-15']);\nObject.defineProperty(apiLoader.services['cloudformation'], '2010-05-15', {\n get: function get() {\n var model = require('../apis/cloudformation-2010-05-15.min.json');\n model.paginators = require('../apis/cloudformation-2010-05-15.paginators.json').pagination;\n model.waiters = require('../apis/cloudformation-2010-05-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudFormation;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudfront'] = {};\nAWS.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', '2017-03-25*', '2017-10-30', '2017-10-30*', '2018-06-18', '2018-06-18*', '2018-11-05', '2018-11-05*', '2019-03-26', '2019-03-26*', '2020-05-31']);\nrequire('../lib/services/cloudfront');\nObject.defineProperty(apiLoader.services['cloudfront'], '2016-11-25', {\n get: function get() {\n var model = require('../apis/cloudfront-2016-11-25.min.json');\n model.paginators = require('../apis/cloudfront-2016-11-25.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2016-11-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2017-03-25', {\n get: function get() {\n var model = require('../apis/cloudfront-2017-03-25.min.json');\n model.paginators = require('../apis/cloudfront-2017-03-25.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2017-03-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2017-10-30', {\n get: function get() {\n var model = require('../apis/cloudfront-2017-10-30.min.json');\n model.paginators = require('../apis/cloudfront-2017-10-30.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2017-10-30.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2018-06-18', {\n get: function get() {\n var model = require('../apis/cloudfront-2018-06-18.min.json');\n model.paginators = require('../apis/cloudfront-2018-06-18.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2018-06-18.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2018-11-05', {\n get: function get() {\n var model = require('../apis/cloudfront-2018-11-05.min.json');\n model.paginators = require('../apis/cloudfront-2018-11-05.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2018-11-05.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2019-03-26', {\n get: function get() {\n var model = require('../apis/cloudfront-2019-03-26.min.json');\n model.paginators = require('../apis/cloudfront-2019-03-26.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2019-03-26.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2020-05-31', {\n get: function get() {\n var model = require('../apis/cloudfront-2020-05-31.min.json');\n model.paginators = require('../apis/cloudfront-2020-05-31.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2020-05-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudFront;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudhsm'] = {};\nAWS.CloudHSM = Service.defineService('cloudhsm', ['2014-05-30']);\nObject.defineProperty(apiLoader.services['cloudhsm'], '2014-05-30', {\n get: function get() {\n var model = require('../apis/cloudhsm-2014-05-30.min.json');\n model.paginators = require('../apis/cloudhsm-2014-05-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudHSM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudhsmv2'] = {};\nAWS.CloudHSMV2 = Service.defineService('cloudhsmv2', ['2017-04-28']);\nObject.defineProperty(apiLoader.services['cloudhsmv2'], '2017-04-28', {\n get: function get() {\n var model = require('../apis/cloudhsmv2-2017-04-28.min.json');\n model.paginators = require('../apis/cloudhsmv2-2017-04-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudHSMV2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudtrail'] = {};\nAWS.CloudTrail = Service.defineService('cloudtrail', ['2013-11-01']);\nObject.defineProperty(apiLoader.services['cloudtrail'], '2013-11-01', {\n get: function get() {\n var model = require('../apis/cloudtrail-2013-11-01.min.json');\n model.paginators = require('../apis/cloudtrail-2013-11-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudTrail;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatch'] = {};\nAWS.CloudWatch = Service.defineService('cloudwatch', ['2010-08-01']);\nObject.defineProperty(apiLoader.services['cloudwatch'], '2010-08-01', {\n get: function get() {\n var model = require('../apis/monitoring-2010-08-01.min.json');\n model.paginators = require('../apis/monitoring-2010-08-01.paginators.json').pagination;\n model.waiters = require('../apis/monitoring-2010-08-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatch;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatchevents'] = {};\nAWS.CloudWatchEvents = Service.defineService('cloudwatchevents', ['2014-02-03*', '2015-10-07']);\nObject.defineProperty(apiLoader.services['cloudwatchevents'], '2015-10-07', {\n get: function get() {\n var model = require('../apis/events-2015-10-07.min.json');\n model.paginators = require('../apis/events-2015-10-07.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatchEvents;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatchlogs'] = {};\nAWS.CloudWatchLogs = Service.defineService('cloudwatchlogs', ['2014-03-28']);\nObject.defineProperty(apiLoader.services['cloudwatchlogs'], '2014-03-28', {\n get: function get() {\n var model = require('../apis/logs-2014-03-28.min.json');\n model.paginators = require('../apis/logs-2014-03-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatchLogs;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codebuild'] = {};\nAWS.CodeBuild = Service.defineService('codebuild', ['2016-10-06']);\nObject.defineProperty(apiLoader.services['codebuild'], '2016-10-06', {\n get: function get() {\n var model = require('../apis/codebuild-2016-10-06.min.json');\n model.paginators = require('../apis/codebuild-2016-10-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeBuild;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codecommit'] = {};\nAWS.CodeCommit = Service.defineService('codecommit', ['2015-04-13']);\nObject.defineProperty(apiLoader.services['codecommit'], '2015-04-13', {\n get: function get() {\n var model = require('../apis/codecommit-2015-04-13.min.json');\n model.paginators = require('../apis/codecommit-2015-04-13.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeCommit;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codedeploy'] = {};\nAWS.CodeDeploy = Service.defineService('codedeploy', ['2014-10-06']);\nObject.defineProperty(apiLoader.services['codedeploy'], '2014-10-06', {\n get: function get() {\n var model = require('../apis/codedeploy-2014-10-06.min.json');\n model.paginators = require('../apis/codedeploy-2014-10-06.paginators.json').pagination;\n model.waiters = require('../apis/codedeploy-2014-10-06.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeDeploy;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codepipeline'] = {};\nAWS.CodePipeline = Service.defineService('codepipeline', ['2015-07-09']);\nObject.defineProperty(apiLoader.services['codepipeline'], '2015-07-09', {\n get: function get() {\n var model = require('../apis/codepipeline-2015-07-09.min.json');\n model.paginators = require('../apis/codepipeline-2015-07-09.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodePipeline;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitoidentity'] = {};\nAWS.CognitoIdentity = Service.defineService('cognitoidentity', ['2014-06-30']);\nObject.defineProperty(apiLoader.services['cognitoidentity'], '2014-06-30', {\n get: function get() {\n var model = require('../apis/cognito-identity-2014-06-30.min.json');\n model.paginators = require('../apis/cognito-identity-2014-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoIdentity;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitoidentityserviceprovider'] = {};\nAWS.CognitoIdentityServiceProvider = Service.defineService('cognitoidentityserviceprovider', ['2016-04-18']);\nObject.defineProperty(apiLoader.services['cognitoidentityserviceprovider'], '2016-04-18', {\n get: function get() {\n var model = require('../apis/cognito-idp-2016-04-18.min.json');\n model.paginators = require('../apis/cognito-idp-2016-04-18.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoIdentityServiceProvider;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitosync'] = {};\nAWS.CognitoSync = Service.defineService('cognitosync', ['2014-06-30']);\nObject.defineProperty(apiLoader.services['cognitosync'], '2014-06-30', {\n get: function get() {\n var model = require('../apis/cognito-sync-2014-06-30.min.json');\n model.paginators = require('../apis/cognito-sync-2014-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoSync;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['comprehend'] = {};\nAWS.Comprehend = Service.defineService('comprehend', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['comprehend'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/comprehend-2017-11-27.min.json');\n model.paginators = require('../apis/comprehend-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Comprehend;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['comprehendmedical'] = {};\nAWS.ComprehendMedical = Service.defineService('comprehendmedical', ['2018-10-30']);\nObject.defineProperty(apiLoader.services['comprehendmedical'], '2018-10-30', {\n get: function get() {\n var model = require('../apis/comprehendmedical-2018-10-30.min.json');\n model.paginators = require('../apis/comprehendmedical-2018-10-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ComprehendMedical;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['configservice'] = {};\nAWS.ConfigService = Service.defineService('configservice', ['2014-11-12']);\nObject.defineProperty(apiLoader.services['configservice'], '2014-11-12', {\n get: function get() {\n var model = require('../apis/config-2014-11-12.min.json');\n model.paginators = require('../apis/config-2014-11-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ConfigService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['connect'] = {};\nAWS.Connect = Service.defineService('connect', ['2017-08-08']);\nObject.defineProperty(apiLoader.services['connect'], '2017-08-08', {\n get: function get() {\n var model = require('../apis/connect-2017-08-08.min.json');\n model.paginators = require('../apis/connect-2017-08-08.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Connect;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['costexplorer'] = {};\nAWS.CostExplorer = Service.defineService('costexplorer', ['2017-10-25']);\nObject.defineProperty(apiLoader.services['costexplorer'], '2017-10-25', {\n get: function get() {\n var model = require('../apis/ce-2017-10-25.min.json');\n model.paginators = require('../apis/ce-2017-10-25.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CostExplorer;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cur'] = {};\nAWS.CUR = Service.defineService('cur', ['2017-01-06']);\nObject.defineProperty(apiLoader.services['cur'], '2017-01-06', {\n get: function get() {\n var model = require('../apis/cur-2017-01-06.min.json');\n model.paginators = require('../apis/cur-2017-01-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CUR;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['devicefarm'] = {};\nAWS.DeviceFarm = Service.defineService('devicefarm', ['2015-06-23']);\nObject.defineProperty(apiLoader.services['devicefarm'], '2015-06-23', {\n get: function get() {\n var model = require('../apis/devicefarm-2015-06-23.min.json');\n model.paginators = require('../apis/devicefarm-2015-06-23.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DeviceFarm;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['directconnect'] = {};\nAWS.DirectConnect = Service.defineService('directconnect', ['2012-10-25']);\nObject.defineProperty(apiLoader.services['directconnect'], '2012-10-25', {\n get: function get() {\n var model = require('../apis/directconnect-2012-10-25.min.json');\n model.paginators = require('../apis/directconnect-2012-10-25.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DirectConnect;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['dynamodb'] = {};\nAWS.DynamoDB = Service.defineService('dynamodb', ['2011-12-05', '2012-08-10']);\nrequire('../lib/services/dynamodb');\nObject.defineProperty(apiLoader.services['dynamodb'], '2011-12-05', {\n get: function get() {\n var model = require('../apis/dynamodb-2011-12-05.min.json');\n model.paginators = require('../apis/dynamodb-2011-12-05.paginators.json').pagination;\n model.waiters = require('../apis/dynamodb-2011-12-05.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['dynamodb'], '2012-08-10', {\n get: function get() {\n var model = require('../apis/dynamodb-2012-08-10.min.json');\n model.paginators = require('../apis/dynamodb-2012-08-10.paginators.json').pagination;\n model.waiters = require('../apis/dynamodb-2012-08-10.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DynamoDB;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['dynamodbstreams'] = {};\nAWS.DynamoDBStreams = Service.defineService('dynamodbstreams', ['2012-08-10']);\nObject.defineProperty(apiLoader.services['dynamodbstreams'], '2012-08-10', {\n get: function get() {\n var model = require('../apis/streams.dynamodb-2012-08-10.min.json');\n model.paginators = require('../apis/streams.dynamodb-2012-08-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DynamoDBStreams;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ec2'] = {};\nAWS.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']);\nrequire('../lib/services/ec2');\nObject.defineProperty(apiLoader.services['ec2'], '2016-11-15', {\n get: function get() {\n var model = require('../apis/ec2-2016-11-15.min.json');\n model.paginators = require('../apis/ec2-2016-11-15.paginators.json').pagination;\n model.waiters = require('../apis/ec2-2016-11-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EC2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ecr'] = {};\nAWS.ECR = Service.defineService('ecr', ['2015-09-21']);\nObject.defineProperty(apiLoader.services['ecr'], '2015-09-21', {\n get: function get() {\n var model = require('../apis/ecr-2015-09-21.min.json');\n model.paginators = require('../apis/ecr-2015-09-21.paginators.json').pagination;\n model.waiters = require('../apis/ecr-2015-09-21.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ECR;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ecs'] = {};\nAWS.ECS = Service.defineService('ecs', ['2014-11-13']);\nObject.defineProperty(apiLoader.services['ecs'], '2014-11-13', {\n get: function get() {\n var model = require('../apis/ecs-2014-11-13.min.json');\n model.paginators = require('../apis/ecs-2014-11-13.paginators.json').pagination;\n model.waiters = require('../apis/ecs-2014-11-13.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ECS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['efs'] = {};\nAWS.EFS = Service.defineService('efs', ['2015-02-01']);\nObject.defineProperty(apiLoader.services['efs'], '2015-02-01', {\n get: function get() {\n var model = require('../apis/elasticfilesystem-2015-02-01.min.json');\n model.paginators = require('../apis/elasticfilesystem-2015-02-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EFS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elasticache'] = {};\nAWS.ElastiCache = Service.defineService('elasticache', ['2012-11-15*', '2014-03-24*', '2014-07-15*', '2014-09-30*', '2015-02-02']);\nObject.defineProperty(apiLoader.services['elasticache'], '2015-02-02', {\n get: function get() {\n var model = require('../apis/elasticache-2015-02-02.min.json');\n model.paginators = require('../apis/elasticache-2015-02-02.paginators.json').pagination;\n model.waiters = require('../apis/elasticache-2015-02-02.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElastiCache;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elasticbeanstalk'] = {};\nAWS.ElasticBeanstalk = Service.defineService('elasticbeanstalk', ['2010-12-01']);\nObject.defineProperty(apiLoader.services['elasticbeanstalk'], '2010-12-01', {\n get: function get() {\n var model = require('../apis/elasticbeanstalk-2010-12-01.min.json');\n model.paginators = require('../apis/elasticbeanstalk-2010-12-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticbeanstalk-2010-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElasticBeanstalk;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elastictranscoder'] = {};\nAWS.ElasticTranscoder = Service.defineService('elastictranscoder', ['2012-09-25']);\nObject.defineProperty(apiLoader.services['elastictranscoder'], '2012-09-25', {\n get: function get() {\n var model = require('../apis/elastictranscoder-2012-09-25.min.json');\n model.paginators = require('../apis/elastictranscoder-2012-09-25.paginators.json').pagination;\n model.waiters = require('../apis/elastictranscoder-2012-09-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElasticTranscoder;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elb'] = {};\nAWS.ELB = Service.defineService('elb', ['2012-06-01']);\nObject.defineProperty(apiLoader.services['elb'], '2012-06-01', {\n get: function get() {\n var model = require('../apis/elasticloadbalancing-2012-06-01.min.json');\n model.paginators = require('../apis/elasticloadbalancing-2012-06-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticloadbalancing-2012-06-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ELB;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elbv2'] = {};\nAWS.ELBv2 = Service.defineService('elbv2', ['2015-12-01']);\nObject.defineProperty(apiLoader.services['elbv2'], '2015-12-01', {\n get: function get() {\n var model = require('../apis/elasticloadbalancingv2-2015-12-01.min.json');\n model.paginators = require('../apis/elasticloadbalancingv2-2015-12-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticloadbalancingv2-2015-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ELBv2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['emr'] = {};\nAWS.EMR = Service.defineService('emr', ['2009-03-31']);\nObject.defineProperty(apiLoader.services['emr'], '2009-03-31', {\n get: function get() {\n var model = require('../apis/elasticmapreduce-2009-03-31.min.json');\n model.paginators = require('../apis/elasticmapreduce-2009-03-31.paginators.json').pagination;\n model.waiters = require('../apis/elasticmapreduce-2009-03-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EMR;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['firehose'] = {};\nAWS.Firehose = Service.defineService('firehose', ['2015-08-04']);\nObject.defineProperty(apiLoader.services['firehose'], '2015-08-04', {\n get: function get() {\n var model = require('../apis/firehose-2015-08-04.min.json');\n model.paginators = require('../apis/firehose-2015-08-04.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Firehose;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['forecastqueryservice'] = {};\nAWS.ForecastQueryService = Service.defineService('forecastqueryservice', ['2018-06-26']);\nObject.defineProperty(apiLoader.services['forecastqueryservice'], '2018-06-26', {\n get: function get() {\n var model = require('../apis/forecastquery-2018-06-26.min.json');\n model.paginators = require('../apis/forecastquery-2018-06-26.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ForecastQueryService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['forecastservice'] = {};\nAWS.ForecastService = Service.defineService('forecastservice', ['2018-06-26']);\nObject.defineProperty(apiLoader.services['forecastservice'], '2018-06-26', {\n get: function get() {\n var model = require('../apis/forecast-2018-06-26.min.json');\n model.paginators = require('../apis/forecast-2018-06-26.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ForecastService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['gamelift'] = {};\nAWS.GameLift = Service.defineService('gamelift', ['2015-10-01']);\nObject.defineProperty(apiLoader.services['gamelift'], '2015-10-01', {\n get: function get() {\n var model = require('../apis/gamelift-2015-10-01.min.json');\n model.paginators = require('../apis/gamelift-2015-10-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.GameLift;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iam'] = {};\nAWS.IAM = Service.defineService('iam', ['2010-05-08']);\nObject.defineProperty(apiLoader.services['iam'], '2010-05-08', {\n get: function get() {\n var model = require('../apis/iam-2010-05-08.min.json');\n model.paginators = require('../apis/iam-2010-05-08.paginators.json').pagination;\n model.waiters = require('../apis/iam-2010-05-08.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IAM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['inspector'] = {};\nAWS.Inspector = Service.defineService('inspector', ['2015-08-18*', '2016-02-16']);\nObject.defineProperty(apiLoader.services['inspector'], '2016-02-16', {\n get: function get() {\n var model = require('../apis/inspector-2016-02-16.min.json');\n model.paginators = require('../apis/inspector-2016-02-16.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Inspector;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iot'] = {};\nAWS.Iot = Service.defineService('iot', ['2015-05-28']);\nObject.defineProperty(apiLoader.services['iot'], '2015-05-28', {\n get: function get() {\n var model = require('../apis/iot-2015-05-28.min.json');\n model.paginators = require('../apis/iot-2015-05-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Iot;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iotanalytics'] = {};\nAWS.IoTAnalytics = Service.defineService('iotanalytics', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['iotanalytics'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/iotanalytics-2017-11-27.min.json');\n model.paginators = require('../apis/iotanalytics-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IoTAnalytics;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iotdata'] = {};\nAWS.IotData = Service.defineService('iotdata', ['2015-05-28']);\nrequire('../lib/services/iotdata');\nObject.defineProperty(apiLoader.services['iotdata'], '2015-05-28', {\n get: function get() {\n var model = require('../apis/iot-data-2015-05-28.min.json');\n model.paginators = require('../apis/iot-data-2015-05-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IotData;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesis'] = {};\nAWS.Kinesis = Service.defineService('kinesis', ['2013-12-02']);\nObject.defineProperty(apiLoader.services['kinesis'], '2013-12-02', {\n get: function get() {\n var model = require('../apis/kinesis-2013-12-02.min.json');\n model.paginators = require('../apis/kinesis-2013-12-02.paginators.json').pagination;\n model.waiters = require('../apis/kinesis-2013-12-02.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Kinesis;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideo'] = {};\nAWS.KinesisVideo = Service.defineService('kinesisvideo', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideo'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesisvideo-2017-09-30.min.json');\n model.paginators = require('../apis/kinesisvideo-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideo;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideoarchivedmedia'] = {};\nAWS.KinesisVideoArchivedMedia = Service.defineService('kinesisvideoarchivedmedia', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideoarchivedmedia'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesis-video-archived-media-2017-09-30.min.json');\n model.paginators = require('../apis/kinesis-video-archived-media-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoArchivedMedia;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideomedia'] = {};\nAWS.KinesisVideoMedia = Service.defineService('kinesisvideomedia', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideomedia'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesis-video-media-2017-09-30.min.json');\n model.paginators = require('../apis/kinesis-video-media-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoMedia;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideosignalingchannels'] = {};\nAWS.KinesisVideoSignalingChannels = Service.defineService('kinesisvideosignalingchannels', ['2019-12-04']);\nObject.defineProperty(apiLoader.services['kinesisvideosignalingchannels'], '2019-12-04', {\n get: function get() {\n var model = require('../apis/kinesis-video-signaling-2019-12-04.min.json');\n model.paginators = require('../apis/kinesis-video-signaling-2019-12-04.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoSignalingChannels;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kms'] = {};\nAWS.KMS = Service.defineService('kms', ['2014-11-01']);\nObject.defineProperty(apiLoader.services['kms'], '2014-11-01', {\n get: function get() {\n var model = require('../apis/kms-2014-11-01.min.json');\n model.paginators = require('../apis/kms-2014-11-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KMS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lambda'] = {};\nAWS.Lambda = Service.defineService('lambda', ['2014-11-11', '2015-03-31']);\nrequire('../lib/services/lambda');\nObject.defineProperty(apiLoader.services['lambda'], '2014-11-11', {\n get: function get() {\n var model = require('../apis/lambda-2014-11-11.min.json');\n model.paginators = require('../apis/lambda-2014-11-11.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['lambda'], '2015-03-31', {\n get: function get() {\n var model = require('../apis/lambda-2015-03-31.min.json');\n model.paginators = require('../apis/lambda-2015-03-31.paginators.json').pagination;\n model.waiters = require('../apis/lambda-2015-03-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Lambda;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexmodelbuildingservice'] = {};\nAWS.LexModelBuildingService = Service.defineService('lexmodelbuildingservice', ['2017-04-19']);\nObject.defineProperty(apiLoader.services['lexmodelbuildingservice'], '2017-04-19', {\n get: function get() {\n var model = require('../apis/lex-models-2017-04-19.min.json');\n model.paginators = require('../apis/lex-models-2017-04-19.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexModelBuildingService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexruntime'] = {};\nAWS.LexRuntime = Service.defineService('lexruntime', ['2016-11-28']);\nObject.defineProperty(apiLoader.services['lexruntime'], '2016-11-28', {\n get: function get() {\n var model = require('../apis/runtime.lex-2016-11-28.min.json');\n model.paginators = require('../apis/runtime.lex-2016-11-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexRuntime;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexruntimev2'] = {};\nAWS.LexRuntimeV2 = Service.defineService('lexruntimev2', ['2020-08-07']);\nObject.defineProperty(apiLoader.services['lexruntimev2'], '2020-08-07', {\n get: function get() {\n var model = require('../apis/runtime.lex.v2-2020-08-07.min.json');\n model.paginators = require('../apis/runtime.lex.v2-2020-08-07.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexRuntimeV2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['location'] = {};\nAWS.Location = Service.defineService('location', ['2020-11-19']);\nObject.defineProperty(apiLoader.services['location'], '2020-11-19', {\n get: function get() {\n var model = require('../apis/location-2020-11-19.min.json');\n model.paginators = require('../apis/location-2020-11-19.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Location;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['machinelearning'] = {};\nAWS.MachineLearning = Service.defineService('machinelearning', ['2014-12-12']);\nrequire('../lib/services/machinelearning');\nObject.defineProperty(apiLoader.services['machinelearning'], '2014-12-12', {\n get: function get() {\n var model = require('../apis/machinelearning-2014-12-12.min.json');\n model.paginators = require('../apis/machinelearning-2014-12-12.paginators.json').pagination;\n model.waiters = require('../apis/machinelearning-2014-12-12.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MachineLearning;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['marketplacecatalog'] = {};\nAWS.MarketplaceCatalog = Service.defineService('marketplacecatalog', ['2018-09-17']);\nObject.defineProperty(apiLoader.services['marketplacecatalog'], '2018-09-17', {\n get: function get() {\n var model = require('../apis/marketplace-catalog-2018-09-17.min.json');\n model.paginators = require('../apis/marketplace-catalog-2018-09-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MarketplaceCatalog;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['marketplacecommerceanalytics'] = {};\nAWS.MarketplaceCommerceAnalytics = Service.defineService('marketplacecommerceanalytics', ['2015-07-01']);\nObject.defineProperty(apiLoader.services['marketplacecommerceanalytics'], '2015-07-01', {\n get: function get() {\n var model = require('../apis/marketplacecommerceanalytics-2015-07-01.min.json');\n model.paginators = require('../apis/marketplacecommerceanalytics-2015-07-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MarketplaceCommerceAnalytics;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mediastoredata'] = {};\nAWS.MediaStoreData = Service.defineService('mediastoredata', ['2017-09-01']);\nObject.defineProperty(apiLoader.services['mediastoredata'], '2017-09-01', {\n get: function get() {\n var model = require('../apis/mediastore-data-2017-09-01.min.json');\n model.paginators = require('../apis/mediastore-data-2017-09-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MediaStoreData;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mobileanalytics'] = {};\nAWS.MobileAnalytics = Service.defineService('mobileanalytics', ['2014-06-05']);\nObject.defineProperty(apiLoader.services['mobileanalytics'], '2014-06-05', {\n get: function get() {\n var model = require('../apis/mobileanalytics-2014-06-05.min.json');\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MobileAnalytics;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mturk'] = {};\nAWS.MTurk = Service.defineService('mturk', ['2017-01-17']);\nObject.defineProperty(apiLoader.services['mturk'], '2017-01-17', {\n get: function get() {\n var model = require('../apis/mturk-requester-2017-01-17.min.json');\n model.paginators = require('../apis/mturk-requester-2017-01-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MTurk;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['opsworks'] = {};\nAWS.OpsWorks = Service.defineService('opsworks', ['2013-02-18']);\nObject.defineProperty(apiLoader.services['opsworks'], '2013-02-18', {\n get: function get() {\n var model = require('../apis/opsworks-2013-02-18.min.json');\n model.paginators = require('../apis/opsworks-2013-02-18.paginators.json').pagination;\n model.waiters = require('../apis/opsworks-2013-02-18.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.OpsWorks;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalize'] = {};\nAWS.Personalize = Service.defineService('personalize', ['2018-05-22']);\nObject.defineProperty(apiLoader.services['personalize'], '2018-05-22', {\n get: function get() {\n var model = require('../apis/personalize-2018-05-22.min.json');\n model.paginators = require('../apis/personalize-2018-05-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Personalize;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalizeevents'] = {};\nAWS.PersonalizeEvents = Service.defineService('personalizeevents', ['2018-03-22']);\nObject.defineProperty(apiLoader.services['personalizeevents'], '2018-03-22', {\n get: function get() {\n var model = require('../apis/personalize-events-2018-03-22.min.json');\n model.paginators = require('../apis/personalize-events-2018-03-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.PersonalizeEvents;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalizeruntime'] = {};\nAWS.PersonalizeRuntime = Service.defineService('personalizeruntime', ['2018-05-22']);\nObject.defineProperty(apiLoader.services['personalizeruntime'], '2018-05-22', {\n get: function get() {\n var model = require('../apis/personalize-runtime-2018-05-22.min.json');\n model.paginators = require('../apis/personalize-runtime-2018-05-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.PersonalizeRuntime;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['polly'] = {};\nAWS.Polly = Service.defineService('polly', ['2016-06-10']);\nrequire('../lib/services/polly');\nObject.defineProperty(apiLoader.services['polly'], '2016-06-10', {\n get: function get() {\n var model = require('../apis/polly-2016-06-10.min.json');\n model.paginators = require('../apis/polly-2016-06-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Polly;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['pricing'] = {};\nAWS.Pricing = Service.defineService('pricing', ['2017-10-15']);\nObject.defineProperty(apiLoader.services['pricing'], '2017-10-15', {\n get: function get() {\n var model = require('../apis/pricing-2017-10-15.min.json');\n model.paginators = require('../apis/pricing-2017-10-15.paginators.json').pagination;\n model.waiters = require('../apis/pricing-2017-10-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Pricing;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['rds'] = {};\nAWS.RDS = Service.defineService('rds', ['2013-01-10', '2013-02-12', '2013-09-09', '2014-09-01', '2014-09-01*', '2014-10-31']);\nrequire('../lib/services/rds');\nObject.defineProperty(apiLoader.services['rds'], '2013-01-10', {\n get: function get() {\n var model = require('../apis/rds-2013-01-10.min.json');\n model.paginators = require('../apis/rds-2013-01-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2013-02-12', {\n get: function get() {\n var model = require('../apis/rds-2013-02-12.min.json');\n model.paginators = require('../apis/rds-2013-02-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2013-09-09', {\n get: function get() {\n var model = require('../apis/rds-2013-09-09.min.json');\n model.paginators = require('../apis/rds-2013-09-09.paginators.json').pagination;\n model.waiters = require('../apis/rds-2013-09-09.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2014-09-01', {\n get: function get() {\n var model = require('../apis/rds-2014-09-01.min.json');\n model.paginators = require('../apis/rds-2014-09-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2014-10-31', {\n get: function get() {\n var model = require('../apis/rds-2014-10-31.min.json');\n model.paginators = require('../apis/rds-2014-10-31.paginators.json').pagination;\n model.waiters = require('../apis/rds-2014-10-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.RDS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['redshift'] = {};\nAWS.Redshift = Service.defineService('redshift', ['2012-12-01']);\nObject.defineProperty(apiLoader.services['redshift'], '2012-12-01', {\n get: function get() {\n var model = require('../apis/redshift-2012-12-01.min.json');\n model.paginators = require('../apis/redshift-2012-12-01.paginators.json').pagination;\n model.waiters = require('../apis/redshift-2012-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Redshift;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['rekognition'] = {};\nAWS.Rekognition = Service.defineService('rekognition', ['2016-06-27']);\nObject.defineProperty(apiLoader.services['rekognition'], '2016-06-27', {\n get: function get() {\n var model = require('../apis/rekognition-2016-06-27.min.json');\n model.paginators = require('../apis/rekognition-2016-06-27.paginators.json').pagination;\n model.waiters = require('../apis/rekognition-2016-06-27.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Rekognition;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['resourcegroups'] = {};\nAWS.ResourceGroups = Service.defineService('resourcegroups', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['resourcegroups'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/resource-groups-2017-11-27.min.json');\n model.paginators = require('../apis/resource-groups-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ResourceGroups;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['route53'] = {};\nAWS.Route53 = Service.defineService('route53', ['2013-04-01']);\nrequire('../lib/services/route53');\nObject.defineProperty(apiLoader.services['route53'], '2013-04-01', {\n get: function get() {\n var model = require('../apis/route53-2013-04-01.min.json');\n model.paginators = require('../apis/route53-2013-04-01.paginators.json').pagination;\n model.waiters = require('../apis/route53-2013-04-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Route53;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['route53domains'] = {};\nAWS.Route53Domains = Service.defineService('route53domains', ['2014-05-15']);\nObject.defineProperty(apiLoader.services['route53domains'], '2014-05-15', {\n get: function get() {\n var model = require('../apis/route53domains-2014-05-15.min.json');\n model.paginators = require('../apis/route53domains-2014-05-15.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Route53Domains;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['s3'] = {};\nAWS.S3 = Service.defineService('s3', ['2006-03-01']);\nrequire('../lib/services/s3');\nObject.defineProperty(apiLoader.services['s3'], '2006-03-01', {\n get: function get() {\n var model = require('../apis/s3-2006-03-01.min.json');\n model.paginators = require('../apis/s3-2006-03-01.paginators.json').pagination;\n model.waiters = require('../apis/s3-2006-03-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.S3;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['secretsmanager'] = {};\nAWS.SecretsManager = Service.defineService('secretsmanager', ['2017-10-17']);\nObject.defineProperty(apiLoader.services['secretsmanager'], '2017-10-17', {\n get: function get() {\n var model = require('../apis/secretsmanager-2017-10-17.min.json');\n model.paginators = require('../apis/secretsmanager-2017-10-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SecretsManager;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['servicecatalog'] = {};\nAWS.ServiceCatalog = Service.defineService('servicecatalog', ['2015-12-10']);\nObject.defineProperty(apiLoader.services['servicecatalog'], '2015-12-10', {\n get: function get() {\n var model = require('../apis/servicecatalog-2015-12-10.min.json');\n model.paginators = require('../apis/servicecatalog-2015-12-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ServiceCatalog;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ses'] = {};\nAWS.SES = Service.defineService('ses', ['2010-12-01']);\nObject.defineProperty(apiLoader.services['ses'], '2010-12-01', {\n get: function get() {\n var model = require('../apis/email-2010-12-01.min.json');\n model.paginators = require('../apis/email-2010-12-01.paginators.json').pagination;\n model.waiters = require('../apis/email-2010-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SES;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sns'] = {};\nAWS.SNS = Service.defineService('sns', ['2010-03-31']);\nObject.defineProperty(apiLoader.services['sns'], '2010-03-31', {\n get: function get() {\n var model = require('../apis/sns-2010-03-31.min.json');\n model.paginators = require('../apis/sns-2010-03-31.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SNS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sqs'] = {};\nAWS.SQS = Service.defineService('sqs', ['2012-11-05']);\nrequire('../lib/services/sqs');\nObject.defineProperty(apiLoader.services['sqs'], '2012-11-05', {\n get: function get() {\n var model = require('../apis/sqs-2012-11-05.min.json');\n model.paginators = require('../apis/sqs-2012-11-05.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SQS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ssm'] = {};\nAWS.SSM = Service.defineService('ssm', ['2014-11-06']);\nObject.defineProperty(apiLoader.services['ssm'], '2014-11-06', {\n get: function get() {\n var model = require('../apis/ssm-2014-11-06.min.json');\n model.paginators = require('../apis/ssm-2014-11-06.paginators.json').pagination;\n model.waiters = require('../apis/ssm-2014-11-06.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SSM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['storagegateway'] = {};\nAWS.StorageGateway = Service.defineService('storagegateway', ['2013-06-30']);\nObject.defineProperty(apiLoader.services['storagegateway'], '2013-06-30', {\n get: function get() {\n var model = require('../apis/storagegateway-2013-06-30.min.json');\n model.paginators = require('../apis/storagegateway-2013-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.StorageGateway;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sts'] = {};\nAWS.STS = Service.defineService('sts', ['2011-06-15']);\nrequire('../lib/services/sts');\nObject.defineProperty(apiLoader.services['sts'], '2011-06-15', {\n get: function get() {\n var model = require('../apis/sts-2011-06-15.min.json');\n model.paginators = require('../apis/sts-2011-06-15.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.STS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['translate'] = {};\nAWS.Translate = Service.defineService('translate', ['2017-07-01']);\nObject.defineProperty(apiLoader.services['translate'], '2017-07-01', {\n get: function get() {\n var model = require('../apis/translate-2017-07-01.min.json');\n model.paginators = require('../apis/translate-2017-07-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Translate;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['waf'] = {};\nAWS.WAF = Service.defineService('waf', ['2015-08-24']);\nObject.defineProperty(apiLoader.services['waf'], '2015-08-24', {\n get: function get() {\n var model = require('../apis/waf-2015-08-24.min.json');\n model.paginators = require('../apis/waf-2015-08-24.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.WAF;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['workdocs'] = {};\nAWS.WorkDocs = Service.defineService('workdocs', ['2016-05-01']);\nObject.defineProperty(apiLoader.services['workdocs'], '2016-05-01', {\n get: function get() {\n var model = require('../apis/workdocs-2016-05-01.min.json');\n model.paginators = require('../apis/workdocs-2016-05-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.WorkDocs;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['xray'] = {};\nAWS.XRay = Service.defineService('xray', ['2016-04-12']);\nObject.defineProperty(apiLoader.services['xray'], '2016-04-12', {\n get: function get() {\n var model = require('../apis/xray-2016-04-12.min.json');\n model.paginators = require('../apis/xray-2016-04-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.XRay;\n","function apiLoader(svc, version) {\n if (!apiLoader.services.hasOwnProperty(svc)) {\n throw new Error('InvalidService: Failed to load api for ' + svc);\n }\n return apiLoader.services[svc][version];\n}\n\n/**\n * @api private\n *\n * This member of AWS.apiLoader is private, but changing it will necessitate a\n * change to ../scripts/services-table-generator.ts\n */\napiLoader.services = {};\n\n/**\n * @api private\n */\nmodule.exports = apiLoader;\n","require('./browser_loader');\n\nvar AWS = require('./core');\n\nif (typeof window !== 'undefined') window.AWS = AWS;\nif (typeof module !== 'undefined') {\n /**\n * @api private\n */\n module.exports = AWS;\n}\nif (typeof self !== 'undefined') self.AWS = AWS;\n\n/**\n * @private\n * DO NOT REMOVE\n * browser builder will strip out this line if services are supplied on the command line.\n */\nrequire('../clients/browser_default');\n","var Hmac = require('./browserHmac');\nvar Md5 = require('./browserMd5');\nvar Sha1 = require('./browserSha1');\nvar Sha256 = require('./browserSha256');\n\n/**\n * @api private\n */\nmodule.exports = exports = {\n createHash: function createHash(alg) {\n alg = alg.toLowerCase();\n if (alg === 'md5') {\n return new Md5();\n } else if (alg === 'sha256') {\n return new Sha256();\n } else if (alg === 'sha1') {\n return new Sha1();\n }\n\n throw new Error('Hash algorithm ' + alg + ' is not supported in the browser SDK');\n },\n createHmac: function createHmac(alg, key) {\n alg = alg.toLowerCase();\n if (alg === 'md5') {\n return new Hmac(Md5, key);\n } else if (alg === 'sha256') {\n return new Hmac(Sha256, key);\n } else if (alg === 'sha1') {\n return new Hmac(Sha1, key);\n }\n\n throw new Error('HMAC algorithm ' + alg + ' is not supported in the browser SDK');\n },\n createSign: function() {\n throw new Error('createSign is not implemented in the browser');\n }\n };\n","var Buffer = require('buffer/').Buffer;\n\n/**\n * This is a polyfill for the static method `isView` of `ArrayBuffer`, which is\n * e.g. missing in IE 10.\n *\n * @api private\n */\nif (\n typeof ArrayBuffer !== 'undefined' &&\n typeof ArrayBuffer.isView === 'undefined'\n) {\n ArrayBuffer.isView = function(arg) {\n return viewStrings.indexOf(Object.prototype.toString.call(arg)) > -1;\n };\n}\n\n/**\n * @api private\n */\nvar viewStrings = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]',\n '[object DataView]',\n];\n\n/**\n * @api private\n */\nfunction isEmptyData(data) {\n if (typeof data === 'string') {\n return data.length === 0;\n }\n return data.byteLength === 0;\n}\n\n/**\n * @api private\n */\nfunction convertToBuffer(data) {\n if (typeof data === 'string') {\n data = new Buffer(data, 'utf8');\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n\n return new Uint8Array(data);\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = {\n isEmptyData: isEmptyData,\n convertToBuffer: convertToBuffer,\n};\n","var hashUtils = require('./browserHashUtils');\n\n/**\n * @api private\n */\nfunction Hmac(hashCtor, secret) {\n this.hash = new hashCtor();\n this.outer = new hashCtor();\n\n var inner = bufferFromSecret(hashCtor, secret);\n var outer = new Uint8Array(hashCtor.BLOCK_SIZE);\n outer.set(inner);\n\n for (var i = 0; i < hashCtor.BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n\n this.hash.update(inner);\n this.outer.update(outer);\n\n // Zero out the copied key buffer.\n for (var i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Hmac;\n\nHmac.prototype.update = function (toHash) {\n if (hashUtils.isEmptyData(toHash) || this.error) {\n return this;\n }\n\n try {\n this.hash.update(hashUtils.convertToBuffer(toHash));\n } catch (e) {\n this.error = e;\n }\n\n return this;\n};\n\nHmac.prototype.digest = function (encoding) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n\n return this.outer.digest(encoding);\n};\n\nfunction bufferFromSecret(hashCtor, secret) {\n var input = hashUtils.convertToBuffer(secret);\n if (input.byteLength > hashCtor.BLOCK_SIZE) {\n var bufferHash = new hashCtor;\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n var buffer = new Uint8Array(hashCtor.BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n","var hashUtils = require('./browserHashUtils');\nvar Buffer = require('buffer/').Buffer;\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 16;\n\nvar INIT = [\n 0x67452301,\n 0xefcdab89,\n 0x98badcfe,\n 0x10325476,\n];\n\n/**\n * @api private\n */\nfunction Md5() {\n this.state = [\n 0x67452301,\n 0xefcdab89,\n 0x98badcfe,\n 0x10325476,\n ];\n this.buffer = new DataView(new ArrayBuffer(BLOCK_SIZE));\n this.bufferLength = 0;\n this.bytesHashed = 0;\n this.finished = false;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Md5;\n\nMd5.BLOCK_SIZE = BLOCK_SIZE;\n\nMd5.prototype.update = function (sourceData) {\n if (hashUtils.isEmptyData(sourceData)) {\n return this;\n } else if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n var data = hashUtils.convertToBuffer(sourceData);\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n while (byteLength > 0) {\n this.buffer.setUint8(this.bufferLength++, data[position++]);\n byteLength--;\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n\n return this;\n};\n\nMd5.prototype.digest = function (encoding) {\n if (!this.finished) {\n var _a = this, buffer = _a.buffer, undecoratedLength = _a.bufferLength, bytesHashed = _a.bytesHashed;\n var bitsHashed = bytesHashed * 8;\n buffer.setUint8(this.bufferLength++, 128);\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (var i = this.bufferLength; i < BLOCK_SIZE; i++) {\n buffer.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (var i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n buffer.setUint8(i, 0);\n }\n buffer.setUint32(BLOCK_SIZE - 8, bitsHashed >>> 0, true);\n buffer.setUint32(BLOCK_SIZE - 4, Math.floor(bitsHashed / 0x100000000), true);\n this.hashBuffer();\n this.finished = true;\n }\n var out = new DataView(new ArrayBuffer(DIGEST_LENGTH));\n for (var i = 0; i < 4; i++) {\n out.setUint32(i * 4, this.state[i], true);\n }\n var buff = new Buffer(out.buffer, out.byteOffset, out.byteLength);\n return encoding ? buff.toString(encoding) : buff;\n};\n\nMd5.prototype.hashBuffer = function () {\n var _a = this, buffer = _a.buffer, state = _a.state;\n var a = state[0], b = state[1], c = state[2], d = state[3];\n a = ff(a, b, c, d, buffer.getUint32(0, true), 7, 0xd76aa478);\n d = ff(d, a, b, c, buffer.getUint32(4, true), 12, 0xe8c7b756);\n c = ff(c, d, a, b, buffer.getUint32(8, true), 17, 0x242070db);\n b = ff(b, c, d, a, buffer.getUint32(12, true), 22, 0xc1bdceee);\n a = ff(a, b, c, d, buffer.getUint32(16, true), 7, 0xf57c0faf);\n d = ff(d, a, b, c, buffer.getUint32(20, true), 12, 0x4787c62a);\n c = ff(c, d, a, b, buffer.getUint32(24, true), 17, 0xa8304613);\n b = ff(b, c, d, a, buffer.getUint32(28, true), 22, 0xfd469501);\n a = ff(a, b, c, d, buffer.getUint32(32, true), 7, 0x698098d8);\n d = ff(d, a, b, c, buffer.getUint32(36, true), 12, 0x8b44f7af);\n c = ff(c, d, a, b, buffer.getUint32(40, true), 17, 0xffff5bb1);\n b = ff(b, c, d, a, buffer.getUint32(44, true), 22, 0x895cd7be);\n a = ff(a, b, c, d, buffer.getUint32(48, true), 7, 0x6b901122);\n d = ff(d, a, b, c, buffer.getUint32(52, true), 12, 0xfd987193);\n c = ff(c, d, a, b, buffer.getUint32(56, true), 17, 0xa679438e);\n b = ff(b, c, d, a, buffer.getUint32(60, true), 22, 0x49b40821);\n a = gg(a, b, c, d, buffer.getUint32(4, true), 5, 0xf61e2562);\n d = gg(d, a, b, c, buffer.getUint32(24, true), 9, 0xc040b340);\n c = gg(c, d, a, b, buffer.getUint32(44, true), 14, 0x265e5a51);\n b = gg(b, c, d, a, buffer.getUint32(0, true), 20, 0xe9b6c7aa);\n a = gg(a, b, c, d, buffer.getUint32(20, true), 5, 0xd62f105d);\n d = gg(d, a, b, c, buffer.getUint32(40, true), 9, 0x02441453);\n c = gg(c, d, a, b, buffer.getUint32(60, true), 14, 0xd8a1e681);\n b = gg(b, c, d, a, buffer.getUint32(16, true), 20, 0xe7d3fbc8);\n a = gg(a, b, c, d, buffer.getUint32(36, true), 5, 0x21e1cde6);\n d = gg(d, a, b, c, buffer.getUint32(56, true), 9, 0xc33707d6);\n c = gg(c, d, a, b, buffer.getUint32(12, true), 14, 0xf4d50d87);\n b = gg(b, c, d, a, buffer.getUint32(32, true), 20, 0x455a14ed);\n a = gg(a, b, c, d, buffer.getUint32(52, true), 5, 0xa9e3e905);\n d = gg(d, a, b, c, buffer.getUint32(8, true), 9, 0xfcefa3f8);\n c = gg(c, d, a, b, buffer.getUint32(28, true), 14, 0x676f02d9);\n b = gg(b, c, d, a, buffer.getUint32(48, true), 20, 0x8d2a4c8a);\n a = hh(a, b, c, d, buffer.getUint32(20, true), 4, 0xfffa3942);\n d = hh(d, a, b, c, buffer.getUint32(32, true), 11, 0x8771f681);\n c = hh(c, d, a, b, buffer.getUint32(44, true), 16, 0x6d9d6122);\n b = hh(b, c, d, a, buffer.getUint32(56, true), 23, 0xfde5380c);\n a = hh(a, b, c, d, buffer.getUint32(4, true), 4, 0xa4beea44);\n d = hh(d, a, b, c, buffer.getUint32(16, true), 11, 0x4bdecfa9);\n c = hh(c, d, a, b, buffer.getUint32(28, true), 16, 0xf6bb4b60);\n b = hh(b, c, d, a, buffer.getUint32(40, true), 23, 0xbebfbc70);\n a = hh(a, b, c, d, buffer.getUint32(52, true), 4, 0x289b7ec6);\n d = hh(d, a, b, c, buffer.getUint32(0, true), 11, 0xeaa127fa);\n c = hh(c, d, a, b, buffer.getUint32(12, true), 16, 0xd4ef3085);\n b = hh(b, c, d, a, buffer.getUint32(24, true), 23, 0x04881d05);\n a = hh(a, b, c, d, buffer.getUint32(36, true), 4, 0xd9d4d039);\n d = hh(d, a, b, c, buffer.getUint32(48, true), 11, 0xe6db99e5);\n c = hh(c, d, a, b, buffer.getUint32(60, true), 16, 0x1fa27cf8);\n b = hh(b, c, d, a, buffer.getUint32(8, true), 23, 0xc4ac5665);\n a = ii(a, b, c, d, buffer.getUint32(0, true), 6, 0xf4292244);\n d = ii(d, a, b, c, buffer.getUint32(28, true), 10, 0x432aff97);\n c = ii(c, d, a, b, buffer.getUint32(56, true), 15, 0xab9423a7);\n b = ii(b, c, d, a, buffer.getUint32(20, true), 21, 0xfc93a039);\n a = ii(a, b, c, d, buffer.getUint32(48, true), 6, 0x655b59c3);\n d = ii(d, a, b, c, buffer.getUint32(12, true), 10, 0x8f0ccc92);\n c = ii(c, d, a, b, buffer.getUint32(40, true), 15, 0xffeff47d);\n b = ii(b, c, d, a, buffer.getUint32(4, true), 21, 0x85845dd1);\n a = ii(a, b, c, d, buffer.getUint32(32, true), 6, 0x6fa87e4f);\n d = ii(d, a, b, c, buffer.getUint32(60, true), 10, 0xfe2ce6e0);\n c = ii(c, d, a, b, buffer.getUint32(24, true), 15, 0xa3014314);\n b = ii(b, c, d, a, buffer.getUint32(52, true), 21, 0x4e0811a1);\n a = ii(a, b, c, d, buffer.getUint32(16, true), 6, 0xf7537e82);\n d = ii(d, a, b, c, buffer.getUint32(44, true), 10, 0xbd3af235);\n c = ii(c, d, a, b, buffer.getUint32(8, true), 15, 0x2ad7d2bb);\n b = ii(b, c, d, a, buffer.getUint32(36, true), 21, 0xeb86d391);\n state[0] = (a + state[0]) & 0xFFFFFFFF;\n state[1] = (b + state[1]) & 0xFFFFFFFF;\n state[2] = (c + state[2]) & 0xFFFFFFFF;\n state[3] = (d + state[3]) & 0xFFFFFFFF;\n};\n\nfunction cmn(q, a, b, x, s, t) {\n a = (((a + q) & 0xFFFFFFFF) + ((x + t) & 0xFFFFFFFF)) & 0xFFFFFFFF;\n return (((a << s) | (a >>> (32 - s))) + b) & 0xFFFFFFFF;\n}\n\nfunction ff(a, b, c, d, x, s, t) {\n return cmn((b & c) | ((~b) & d), a, b, x, s, t);\n}\n\nfunction gg(a, b, c, d, x, s, t) {\n return cmn((b & d) | (c & (~d)), a, b, x, s, t);\n}\n\nfunction hh(a, b, c, d, x, s, t) {\n return cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction ii(a, b, c, d, x, s, t) {\n return cmn(c ^ (b | (~d)), a, b, x, s, t);\n}\n","var Buffer = require('buffer/').Buffer;\nvar hashUtils = require('./browserHashUtils');\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 20;\n\nvar KEY = new Uint32Array([\n 0x5a827999,\n 0x6ed9eba1,\n 0x8f1bbcdc | 0,\n 0xca62c1d6 | 0\n]);\n\nvar INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n];\n\nvar MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;\n\n/**\n * @api private\n */\nfunction Sha1() {\n this.h0 = 0x67452301;\n this.h1 = 0xEFCDAB89;\n this.h2 = 0x98BADCFE;\n this.h3 = 0x10325476;\n this.h4 = 0xC3D2E1F0;\n // The first 64 bytes (16 words) is the data chunk\n this.block = new Uint32Array(80);\n this.offset = 0;\n this.shift = 24;\n this.totalLength = 0;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Sha1;\n\nSha1.BLOCK_SIZE = BLOCK_SIZE;\n\nSha1.prototype.update = function (data) {\n if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n if (hashUtils.isEmptyData(data)) {\n return this;\n }\n\n data = hashUtils.convertToBuffer(data);\n\n var length = data.length;\n this.totalLength += length * 8;\n for (var i = 0; i < length; i++) {\n this.write(data[i]);\n }\n\n return this;\n};\n\nSha1.prototype.write = function write(byte) {\n this.block[this.offset] |= (byte & 0xff) << this.shift;\n if (this.shift) {\n this.shift -= 8;\n } else {\n this.offset++;\n this.shift = 24;\n }\n\n if (this.offset === 16) this.processBlock();\n};\n\nSha1.prototype.digest = function (encoding) {\n // Pad\n this.write(0x80);\n if (this.offset > 14 || (this.offset === 14 && this.shift < 24)) {\n this.processBlock();\n }\n this.offset = 14;\n this.shift = 24;\n\n // 64-bit length big-endian\n this.write(0x00); // numbers this big aren't accurate in javascript anyway\n this.write(0x00); // ..So just hard-code to zero.\n this.write(this.totalLength > 0xffffffffff ? this.totalLength / 0x10000000000 : 0x00);\n this.write(this.totalLength > 0xffffffff ? this.totalLength / 0x100000000 : 0x00);\n for (var s = 24; s >= 0; s -= 8) {\n this.write(this.totalLength >> s);\n }\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n var out = new Buffer(DIGEST_LENGTH);\n var outView = new DataView(out.buffer);\n outView.setUint32(0, this.h0, false);\n outView.setUint32(4, this.h1, false);\n outView.setUint32(8, this.h2, false);\n outView.setUint32(12, this.h3, false);\n outView.setUint32(16, this.h4, false);\n\n return encoding ? out.toString(encoding) : out;\n};\n\nSha1.prototype.processBlock = function processBlock() {\n // Extend the sixteen 32-bit words into eighty 32-bit words:\n for (var i = 16; i < 80; i++) {\n var w = this.block[i - 3] ^ this.block[i - 8] ^ this.block[i - 14] ^ this.block[i - 16];\n this.block[i] = (w << 1) | (w >>> 31);\n }\n\n // Initialize hash value for this chunk:\n var a = this.h0;\n var b = this.h1;\n var c = this.h2;\n var d = this.h3;\n var e = this.h4;\n var f, k;\n\n // Main loop:\n for (i = 0; i < 80; i++) {\n if (i < 20) {\n f = d ^ (b & (c ^ d));\n k = 0x5A827999;\n }\n else if (i < 40) {\n f = b ^ c ^ d;\n k = 0x6ED9EBA1;\n }\n else if (i < 60) {\n f = (b & c) | (d & (b | c));\n k = 0x8F1BBCDC;\n }\n else {\n f = b ^ c ^ d;\n k = 0xCA62C1D6;\n }\n var temp = (a << 5 | a >>> 27) + f + e + k + (this.block[i]|0);\n e = d;\n d = c;\n c = (b << 30 | b >>> 2);\n b = a;\n a = temp;\n }\n\n // Add this chunk's hash to result so far:\n this.h0 = (this.h0 + a) | 0;\n this.h1 = (this.h1 + b) | 0;\n this.h2 = (this.h2 + c) | 0;\n this.h3 = (this.h3 + d) | 0;\n this.h4 = (this.h4 + e) | 0;\n\n // The block is now reusable.\n this.offset = 0;\n for (i = 0; i < 16; i++) {\n this.block[i] = 0;\n }\n};\n","var Buffer = require('buffer/').Buffer;\nvar hashUtils = require('./browserHashUtils');\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 32;\n\nvar KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n\nvar INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n];\n\nvar MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;\n\n/**\n * @private\n */\nfunction Sha256() {\n this.state = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n ];\n this.temp = new Int32Array(64);\n this.buffer = new Uint8Array(64);\n this.bufferLength = 0;\n this.bytesHashed = 0;\n /**\n * @private\n */\n this.finished = false;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Sha256;\n\nSha256.BLOCK_SIZE = BLOCK_SIZE;\n\nSha256.prototype.update = function (data) {\n if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n if (hashUtils.isEmptyData(data)) {\n return this;\n }\n\n data = hashUtils.convertToBuffer(data);\n\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n throw new Error('Cannot hash more than 2^53 - 1 bits');\n }\n\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n\n return this;\n};\n\nSha256.prototype.digest = function (encoding) {\n if (!this.finished) {\n var bitsHashed = this.bytesHashed * 8;\n var bufferView = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n var undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (var i = this.bufferLength; i < BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (var i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(BLOCK_SIZE - 8, Math.floor(bitsHashed / 0x100000000), true);\n bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);\n this.hashBuffer();\n this.finished = true;\n }\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n var out = new Buffer(DIGEST_LENGTH);\n for (var i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n return encoding ? out.toString(encoding) : out;\n};\n\nSha256.prototype.hashBuffer = function () {\n var _a = this,\n buffer = _a.buffer,\n state = _a.state;\n var state0 = state[0],\n state1 = state[1],\n state2 = state[2],\n state3 = state[3],\n state4 = state[4],\n state5 = state[5],\n state6 = state[6],\n state7 = state[7];\n for (var i = 0; i < BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] = (((buffer[i * 4] & 0xff) << 24) |\n ((buffer[(i * 4) + 1] & 0xff) << 16) |\n ((buffer[(i * 4) + 2] & 0xff) << 8) |\n (buffer[(i * 4) + 3] & 0xff));\n }\n else {\n var u = this.temp[i - 2];\n var t1_1 = (u >>> 17 | u << 15) ^\n (u >>> 19 | u << 13) ^\n (u >>> 10);\n u = this.temp[i - 15];\n var t2_1 = (u >>> 7 | u << 25) ^\n (u >>> 18 | u << 14) ^\n (u >>> 3);\n this.temp[i] = (t1_1 + this.temp[i - 7] | 0) +\n (t2_1 + this.temp[i - 16] | 0);\n }\n var t1 = (((((state4 >>> 6 | state4 << 26) ^\n (state4 >>> 11 | state4 << 21) ^\n (state4 >>> 25 | state4 << 7))\n + ((state4 & state5) ^ (~state4 & state6))) | 0)\n + ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) | 0;\n var t2 = (((state0 >>> 2 | state0 << 30) ^\n (state0 >>> 13 | state0 << 19) ^\n (state0 >>> 22 | state0 << 10)) + ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) | 0;\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n};\n","var util = require('./util');\n\n// browser specific modules\nutil.crypto.lib = require('./browserCryptoLib');\nutil.Buffer = require('buffer/').Buffer;\nutil.url = require('url/');\nutil.querystring = require('querystring/');\nutil.realClock = require('./realclock/browserClock');\nutil.environment = 'js';\nutil.createEventStream = require('./event-stream/buffered-create-event-stream').createEventStream;\nutil.isBrowser = function() { return true; };\nutil.isNode = function() { return false; };\n\nvar AWS = require('./core');\n\n/**\n * @api private\n */\nmodule.exports = AWS;\n\nrequire('./credentials');\nrequire('./credentials/credential_provider_chain');\nrequire('./credentials/temporary_credentials');\nrequire('./credentials/chainable_temporary_credentials');\nrequire('./credentials/web_identity_credentials');\nrequire('./credentials/cognito_identity_credentials');\nrequire('./credentials/saml_credentials');\n\n// Load the DOMParser XML parser\nAWS.XML.Parser = require('./xml/browser_parser');\n\n// Load the XHR HttpClient\nrequire('./http/xhr');\n\nif (typeof process === 'undefined') {\n var process = {\n browser: true\n };\n}\n","var AWS = require('../core'),\n url = AWS.util.url,\n crypto = AWS.util.crypto.lib,\n base64Encode = AWS.util.base64.encode,\n inherit = AWS.util.inherit;\n\nvar queryEncode = function (string) {\n var replacements = {\n '+': '-',\n '=': '_',\n '/': '~'\n };\n return string.replace(/[\\+=\\/]/g, function (match) {\n return replacements[match];\n });\n};\n\nvar signPolicy = function (policy, privateKey) {\n var sign = crypto.createSign('RSA-SHA1');\n sign.write(policy);\n return queryEncode(sign.sign(privateKey, 'base64'));\n};\n\nvar signWithCannedPolicy = function (url, expires, keyPairId, privateKey) {\n var policy = JSON.stringify({\n Statement: [\n {\n Resource: url,\n Condition: { DateLessThan: { 'AWS:EpochTime': expires } }\n }\n ]\n });\n\n return {\n Expires: expires,\n 'Key-Pair-Id': keyPairId,\n Signature: signPolicy(policy.toString(), privateKey)\n };\n};\n\nvar signWithCustomPolicy = function (policy, keyPairId, privateKey) {\n policy = policy.replace(/\\s/mg, '');\n\n return {\n Policy: queryEncode(base64Encode(policy)),\n 'Key-Pair-Id': keyPairId,\n Signature: signPolicy(policy, privateKey)\n };\n};\n\nvar determineScheme = function (url) {\n var parts = url.split('://');\n if (parts.length < 2) {\n throw new Error('Invalid URL.');\n }\n\n return parts[0].replace('*', '');\n};\n\nvar getRtmpUrl = function (rtmpUrl) {\n var parsed = url.parse(rtmpUrl);\n return parsed.path.replace(/^\\//, '') + (parsed.hash || '');\n};\n\nvar getResource = function (url) {\n switch (determineScheme(url)) {\n case 'http':\n case 'https':\n return url;\n case 'rtmp':\n return getRtmpUrl(url);\n default:\n throw new Error('Invalid URI scheme. Scheme must be one of'\n + ' http, https, or rtmp');\n }\n};\n\nvar handleError = function (err, callback) {\n if (!callback || typeof callback !== 'function') {\n throw err;\n }\n\n callback(err);\n};\n\nvar handleSuccess = function (result, callback) {\n if (!callback || typeof callback !== 'function') {\n return result;\n }\n\n callback(null, result);\n};\n\nAWS.CloudFront.Signer = inherit({\n /**\n * A signer object can be used to generate signed URLs and cookies for granting\n * access to content on restricted CloudFront distributions.\n *\n * @see http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html\n *\n * @param keyPairId [String] (Required) The ID of the CloudFront key pair\n * being used.\n * @param privateKey [String] (Required) A private key in RSA format.\n */\n constructor: function Signer(keyPairId, privateKey) {\n if (keyPairId === void 0 || privateKey === void 0) {\n throw new Error('A key pair ID and private key are required');\n }\n\n this.keyPairId = keyPairId;\n this.privateKey = privateKey;\n },\n\n /**\n * Create a signed Amazon CloudFront Cookie.\n *\n * @param options [Object] The options to create a signed cookie.\n * @option options url [String] The URL to which the signature will grant\n * access. Required unless you pass in a full\n * policy.\n * @option options expires [Number] A Unix UTC timestamp indicating when the\n * signature should expire. Required unless you\n * pass in a full policy.\n * @option options policy [String] A CloudFront JSON policy. Required unless\n * you pass in a url and an expiry time.\n *\n * @param cb [Function] if a callback is provided, this function will\n * pass the hash as the second parameter (after the error parameter) to\n * the callback function.\n *\n * @return [Object] if called synchronously (with no callback), returns the\n * signed cookie parameters.\n * @return [null] nothing is returned if a callback is provided.\n */\n getSignedCookie: function (options, cb) {\n var signatureHash = 'policy' in options\n ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey)\n : signWithCannedPolicy(options.url, options.expires, this.keyPairId, this.privateKey);\n\n var cookieHash = {};\n for (var key in signatureHash) {\n if (Object.prototype.hasOwnProperty.call(signatureHash, key)) {\n cookieHash['CloudFront-' + key] = signatureHash[key];\n }\n }\n\n return handleSuccess(cookieHash, cb);\n },\n\n /**\n * Create a signed Amazon CloudFront URL.\n *\n * Keep in mind that URLs meant for use in media/flash players may have\n * different requirements for URL formats (e.g. some require that the\n * extension be removed, some require the file name to be prefixed\n * - mp4:, some require you to add \"/cfx/st\" into your URL).\n *\n * @param options [Object] The options to create a signed URL.\n * @option options url [String] The URL to which the signature will grant\n * access. Any query params included with\n * the URL should be encoded. Required.\n * @option options expires [Number] A Unix UTC timestamp indicating when the\n * signature should expire. Required unless you\n * pass in a full policy.\n * @option options policy [String] A CloudFront JSON policy. Required unless\n * you pass in a url and an expiry time.\n *\n * @param cb [Function] if a callback is provided, this function will\n * pass the URL as the second parameter (after the error parameter) to\n * the callback function.\n *\n * @return [String] if called synchronously (with no callback), returns the\n * signed URL.\n * @return [null] nothing is returned if a callback is provided.\n */\n getSignedUrl: function (options, cb) {\n try {\n var resource = getResource(options.url);\n } catch (err) {\n return handleError(err, cb);\n }\n\n var parsedUrl = url.parse(options.url, true),\n signatureHash = Object.prototype.hasOwnProperty.call(options, 'policy')\n ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey)\n : signWithCannedPolicy(resource, options.expires, this.keyPairId, this.privateKey);\n\n parsedUrl.search = null;\n for (var key in signatureHash) {\n if (Object.prototype.hasOwnProperty.call(signatureHash, key)) {\n parsedUrl.query[key] = signatureHash[key];\n }\n }\n\n try {\n var signedUrl = determineScheme(options.url) === 'rtmp'\n ? getRtmpUrl(url.format(parsedUrl))\n : url.format(parsedUrl);\n } catch (err) {\n return handleError(err, cb);\n }\n\n return handleSuccess(signedUrl, cb);\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.CloudFront.Signer;\n","var AWS = require('./core');\nrequire('./credentials');\nrequire('./credentials/credential_provider_chain');\nvar PromisesDependency;\n\n/**\n * The main configuration class used by all service objects to set\n * the region, credentials, and other options for requests.\n *\n * By default, credentials and region settings are left unconfigured.\n * This should be configured by the application before using any\n * AWS service APIs.\n *\n * In order to set global configuration options, properties should\n * be assigned to the global {AWS.config} object.\n *\n * @see AWS.config\n *\n * @!group General Configuration Options\n *\n * @!attribute credentials\n * @return [AWS.Credentials] the AWS credentials to sign requests with.\n *\n * @!attribute region\n * @example Set the global region setting to us-west-2\n * AWS.config.update({region: 'us-west-2'});\n * @return [AWS.Credentials] The region to send service requests to.\n * @see http://docs.amazonwebservices.com/general/latest/gr/rande.html\n * A list of available endpoints for each AWS service\n *\n * @!attribute maxRetries\n * @return [Integer] the maximum amount of retries to perform for a\n * service request. By default this value is calculated by the specific\n * service object that the request is being made to.\n *\n * @!attribute maxRedirects\n * @return [Integer] the maximum amount of redirects to follow for a\n * service request. Defaults to 10.\n *\n * @!attribute paramValidation\n * @return [Boolean|map] whether input parameters should be validated against\n * the operation description before sending the request. Defaults to true.\n * Pass a map to enable any of the following specific 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 * @!attribute computeChecksums\n * @return [Boolean] whether to compute checksums for payload bodies when\n * the service accepts it (currently supported in S3 and SQS only).\n *\n * @!attribute convertResponseTypes\n * @return [Boolean] whether types are converted when parsing response data.\n * Currently only supported for JSON based services. Turning this off may\n * improve performance on large response payloads. Defaults to `true`.\n *\n * @!attribute correctClockSkew\n * @return [Boolean] whether to apply a clock skew correction and retry\n * requests that fail because of an skewed client clock. Defaults to\n * `false`.\n *\n * @!attribute sslEnabled\n * @return [Boolean] whether SSL is enabled for requests\n *\n * @!attribute s3ForcePathStyle\n * @return [Boolean] whether to force path style URLs for S3 objects\n *\n * @!attribute s3BucketEndpoint\n * @note Setting this configuration option requires an `endpoint` to be\n * provided explicitly to the service constructor.\n * @return [Boolean] whether the provided endpoint addresses an individual\n * bucket (false if it addresses the root API endpoint).\n *\n * @!attribute s3DisableBodySigning\n * @return [Boolean] whether to disable S3 body signing when using signature version `v4`.\n * Body signing can only be disabled when using https. Defaults to `true`.\n *\n * @!attribute s3UsEast1RegionalEndpoint\n * @return ['legacy'|'regional'] when region is set to 'us-east-1', whether to send s3\n * request to global endpoints or 'us-east-1' regional endpoints. This config is only\n * applicable to S3 client;\n * Defaults to 'legacy'\n * @!attribute s3UseArnRegion\n * @return [Boolean] whether to override the request region with the region inferred\n * from requested resource's ARN. Only available for S3 buckets\n * Defaults to `true`\n *\n * @!attribute useAccelerateEndpoint\n * @note This configuration option is only compatible with S3 while accessing\n * dns-compatible buckets.\n * @return [Boolean] Whether to use the Accelerate endpoint with the S3 service.\n * Defaults to `false`.\n *\n * @!attribute retryDelayOptions\n * @example Set the base retry delay for all services to 300 ms\n * AWS.config.update({retryDelayOptions: {base: 300}});\n * // Delays with maxRetries = 3: 300, 600, 1200\n * @example Set a custom backoff function to provide delay values on retries\n * AWS.config.update({retryDelayOptions: {customBackoff: function(retryCount, err) {\n * // returns delay in ms\n * }}});\n * @return [map] A set of options to configure the retry delay on retryable errors.\n * Currently supported options are:\n *\n * * **base** [Integer] — The base number of milliseconds to use in the\n * exponential backoff for operation retries. Defaults to 100 ms for all services except\n * DynamoDB, where it defaults to 50ms.\n *\n * * **customBackoff ** [function] — A custom function that accepts a\n * retry count and error and returns the amount of time to delay in\n * milliseconds. If the result is a non-zero negative value, no further\n * retry attempts will be made. The `base` option will be ignored if this\n * option is supplied. The function is only called for retryable errors.\n *\n * @!attribute httpOptions\n * @return [map] A set of options to pass to the low-level HTTP request.\n * Currently supported options are:\n *\n * * **proxy** [String] — the URL to proxy requests through\n * * **agent** [http.Agent, https.Agent] — the Agent object to perform\n * HTTP requests with. Used for connection pooling. Note that for\n * SSL connections, a special Agent object is used in order to enable\n * peer certificate verification. This feature is only supported in the\n * Node.js environment.\n * * **connectTimeout** [Integer] — Sets the socket to timeout after\n * failing to establish a connection with the server after\n * `connectTimeout` milliseconds. This timeout has no effect once a socket\n * connection has been established.\n * * **timeout** [Integer] — The number of milliseconds a request can\n * take before automatically being terminated.\n * Defaults to two minutes (120000).\n * * **xhrAsync** [Boolean] — Whether the SDK will send asynchronous\n * HTTP requests. Used in the browser environment only. Set to false to\n * send requests synchronously. Defaults to true (async on).\n * * **xhrWithCredentials** [Boolean] — Sets the \"withCredentials\"\n * property of an XMLHttpRequest object. Used in the browser environment\n * only. Defaults to false.\n * @!attribute logger\n * @return [#write,#log] an object that responds to .write() (like a stream)\n * or .log() (like the console object) in order to log information about\n * requests\n *\n * @!attribute systemClockOffset\n * @return [Number] an offset value in milliseconds to apply to all signing\n * times. Use this to compensate for clock skew when your system may be\n * out of sync with the service time. Note that this configuration option\n * can only be applied to the global `AWS.config` object and cannot be\n * overridden in service-specific configuration. Defaults to 0 milliseconds.\n *\n * @!attribute signatureVersion\n * @return [String] the signature version to sign requests with (overriding\n * the API configuration). Possible values are: 'v2', 'v3', 'v4'.\n *\n * @!attribute signatureCache\n * @return [Boolean] whether the signature to sign requests with (overriding\n * the API configuration) is cached. Only applies to the signature version 'v4'.\n * Defaults to `true`.\n *\n * @!attribute endpointDiscoveryEnabled\n * @return [Boolean|undefined] whether to call operations with endpoints\n * given by service dynamically. Setting this config to `true` will enable\n * endpoint discovery for all applicable operations. Setting it to `false`\n * will explicitly disable endpoint discovery even though operations that\n * require endpoint discovery will presumably fail. Leaving it to\n * `undefined` means SDK only do endpoint discovery when it's required.\n * Defaults to `undefined`\n *\n * @!attribute endpointCacheSize\n * @return [Number] the size of the global cache storing endpoints from endpoint\n * discovery operations. Once endpoint cache is created, updating this setting\n * cannot change existing cache size.\n * Defaults to 1000\n *\n * @!attribute hostPrefixEnabled\n * @return [Boolean] whether to marshal request parameters to the prefix of\n * hostname. Defaults to `true`.\n *\n * @!attribute stsRegionalEndpoints\n * @return ['legacy'|'regional'] whether to send sts request to global endpoints or\n * regional endpoints.\n * Defaults to 'legacy'.\n *\n * @!attribute useFipsEndpoint\n * @return [Boolean] Enables FIPS compatible endpoints. Defaults to `false`.\n *\n * @!attribute useDualstackEndpoint\n * @return [Boolean] Enables IPv6 dualstack endpoint. Defaults to `false`.\n */\nAWS.Config = AWS.util.inherit({\n /**\n * @!endgroup\n */\n\n /**\n * Creates a new configuration object. This is the object that passes\n * option data along to service requests, including credentials, security,\n * region information, and some service specific settings.\n *\n * @example Creating a new configuration object with credentials and region\n * var config = new AWS.Config({\n * accessKeyId: 'AKID', secretAccessKey: 'SECRET', region: 'us-west-2'\n * });\n * @option options accessKeyId [String] your AWS access key ID.\n * @option options secretAccessKey [String] your AWS secret access key.\n * @option options sessionToken [AWS.Credentials] the optional AWS\n * session token to sign requests with.\n * @option options credentials [AWS.Credentials] the AWS credentials\n * to sign requests with. You can either specify this object, or\n * specify the accessKeyId and secretAccessKey options directly.\n * @option options credentialProvider [AWS.CredentialProviderChain] the\n * provider chain used to resolve credentials if no static `credentials`\n * property is set.\n * @option options region [String] the region to send service requests to.\n * See {region} for more information.\n * @option options maxRetries [Integer] the maximum amount of retries to\n * attempt with a request. See {maxRetries} for more information.\n * @option options maxRedirects [Integer] the maximum amount of redirects to\n * follow with a request. See {maxRedirects} for more information.\n * @option options sslEnabled [Boolean] whether to enable SSL for\n * requests.\n * @option options paramValidation [Boolean|map] whether input parameters\n * should be validated against the operation description before sending\n * the request. Defaults to true. Pass a map to enable any of the\n * following specific 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 * @option options computeChecksums [Boolean] whether to compute checksums\n * for payload bodies when the service accepts it (currently supported\n * in S3 only)\n * @option options convertResponseTypes [Boolean] whether types are converted\n * when parsing response data. Currently only supported for JSON based\n * services. Turning this off may improve performance on large response\n * payloads. Defaults to `true`.\n * @option options correctClockSkew [Boolean] whether to apply a clock skew\n * correction and retry requests that fail because of an skewed client\n * clock. Defaults to `false`.\n * @option options s3ForcePathStyle [Boolean] whether to force path\n * style URLs for S3 objects.\n * @option options s3BucketEndpoint [Boolean] whether the provided endpoint\n * addresses an individual bucket (false if it addresses the root API\n * endpoint). Note that setting this configuration option requires an\n * `endpoint` to be provided explicitly to the service constructor.\n * @option options s3DisableBodySigning [Boolean] whether S3 body signing\n * should be disabled when using signature version `v4`. Body signing\n * can only be disabled when using https. Defaults to `true`.\n * @option options s3UsEast1RegionalEndpoint ['legacy'|'regional'] when region\n * is set to 'us-east-1', whether to send s3 request to global endpoints or\n * 'us-east-1' regional endpoints. This config is only applicable to S3 client.\n * Defaults to `legacy`\n * @option options s3UseArnRegion [Boolean] whether to override the request region\n * with the region inferred from requested resource's ARN. Only available for S3 buckets\n * Defaults to `true`\n *\n * @option options retryDelayOptions [map] A set of options to configure\n * the retry delay on retryable errors. Currently supported options are:\n *\n * * **base** [Integer] — The base number of milliseconds to use in the\n * exponential backoff for operation retries. Defaults to 100 ms for all\n * services except DynamoDB, where it defaults to 50ms.\n * * **customBackoff ** [function] — A custom function that accepts a\n * retry count and error and returns the amount of time to delay in\n * milliseconds. If the result is a non-zero negative value, no further\n * retry attempts will be made. The `base` option will be ignored if this\n * option is supplied. The function is only called for retryable errors.\n * @option options httpOptions [map] A set of options to pass to the low-level\n * HTTP request. Currently supported options are:\n *\n * * **proxy** [String] — the URL to proxy requests through\n * * **agent** [http.Agent, https.Agent] — the Agent object to perform\n * HTTP requests with. Used for connection pooling. Defaults to the global\n * agent (`http.globalAgent`) for non-SSL connections. Note that for\n * SSL connections, a special Agent object is used in order to enable\n * peer certificate verification. This feature is only available in the\n * Node.js environment.\n * * **connectTimeout** [Integer] — Sets the socket to timeout after\n * failing to establish a connection with the server after\n * `connectTimeout` milliseconds. This timeout has no effect once a socket\n * connection has been established.\n * * **timeout** [Integer] — Sets the socket to timeout after timeout\n * milliseconds of inactivity on the socket. Defaults to two minutes\n * (120000).\n * * **xhrAsync** [Boolean] — Whether the SDK will send asynchronous\n * HTTP requests. Used in the browser environment only. Set to false to\n * send requests synchronously. Defaults to true (async on).\n * * **xhrWithCredentials** [Boolean] — Sets the \"withCredentials\"\n * property of an XMLHttpRequest object. Used in the browser environment\n * only. Defaults to false.\n * @option options apiVersion [String, Date] a String in YYYY-MM-DD format\n * (or a date) that represents the latest possible API version that can be\n * used in all services (unless overridden by `apiVersions`). Specify\n * 'latest' to use the latest possible version.\n * @option options apiVersions [map] a map of service\n * identifiers (the lowercase service class name) with the API version to\n * use when instantiating a service. Specify 'latest' for each individual\n * that can use the latest available version.\n * @option options logger [#write,#log] an object that responds to .write()\n * (like a stream) or .log() (like the console object) in order to log\n * information about requests\n * @option options systemClockOffset [Number] an offset value in milliseconds\n * to apply to all signing times. Use this to compensate for clock skew\n * when your system may be out of sync with the service time. Note that\n * this configuration option can only be applied to the global `AWS.config`\n * object and cannot be overridden in service-specific configuration.\n * Defaults to 0 milliseconds.\n * @option options signatureVersion [String] the signature version to sign\n * requests with (overriding the API configuration). Possible values are:\n * 'v2', 'v3', 'v4'.\n * @option options signatureCache [Boolean] whether the signature to sign\n * requests with (overriding the API configuration) is cached. Only applies\n * to the signature version 'v4'. Defaults to `true`.\n * @option options dynamoDbCrc32 [Boolean] whether to validate the CRC32\n * checksum of HTTP response bodies returned by DynamoDB. Default: `true`.\n * @option options useAccelerateEndpoint [Boolean] Whether to use the\n * S3 Transfer Acceleration endpoint with the S3 service. Default: `false`.\n * @option options clientSideMonitoring [Boolean] whether to collect and\n * publish this client's performance metrics of all its API requests.\n * @option options endpointDiscoveryEnabled [Boolean|undefined] whether to\n * call operations with endpoints given by service dynamically. Setting this\n * config to `true` will enable endpoint discovery for all applicable operations.\n * Setting it to `false` will explicitly disable endpoint discovery even though\n * operations that require endpoint discovery will presumably fail. Leaving it\n * to `undefined` means SDK will only do endpoint discovery when it's required.\n * Defaults to `undefined`\n * @option options endpointCacheSize [Number] the size of the global cache storing\n * endpoints from endpoint discovery operations. Once endpoint cache is created,\n * updating this setting cannot change existing cache size.\n * Defaults to 1000\n * @option options hostPrefixEnabled [Boolean] whether to marshal request\n * parameters to the prefix of hostname.\n * Defaults to `true`.\n * @option options stsRegionalEndpoints ['legacy'|'regional'] whether to send sts request\n * to global endpoints or regional endpoints.\n * Defaults to 'legacy'.\n * @option options useFipsEndpoint [Boolean] Enables FIPS compatible endpoints.\n * Defaults to `false`.\n * @option options useDualstackEndpoint [Boolean] Enables IPv6 dualstack endpoint.\n * Defaults to `false`.\n */\n constructor: function Config(options) {\n if (options === undefined) options = {};\n options = this.extractCredentials(options);\n\n AWS.util.each.call(this, this.keys, function (key, value) {\n this.set(key, options[key], value);\n });\n },\n\n /**\n * @!group Managing Credentials\n */\n\n /**\n * Loads credentials from the configuration object. This is used internally\n * by the SDK to ensure that refreshable {Credentials} objects are properly\n * refreshed and loaded when sending a request. If you want to ensure that\n * your credentials are loaded prior to a request, you can use this method\n * directly to provide accurate credential data stored in the object.\n *\n * @note If you configure the SDK with static or environment credentials,\n * the credential data should already be present in {credentials} attribute.\n * This method is primarily necessary to load credentials from asynchronous\n * sources, or sources that can refresh credentials periodically.\n * @example Getting your access key\n * AWS.config.getCredentials(function(err) {\n * if (err) console.log(err.stack); // credentials not loaded\n * else console.log(\"Access Key:\", AWS.config.credentials.accessKeyId);\n * })\n * @callback callback function(err)\n * Called when the {credentials} have been properly set on the configuration\n * object.\n *\n * @param err [Error] if this is set, credentials were not successfully\n * loaded and this error provides information why.\n * @see credentials\n * @see Credentials\n */\n getCredentials: function getCredentials(callback) {\n var self = this;\n\n function finish(err) {\n callback(err, err ? null : self.credentials);\n }\n\n function credError(msg, err) {\n return new AWS.util.error(err || new Error(), {\n code: 'CredentialsError',\n message: msg,\n name: 'CredentialsError'\n });\n }\n\n function getAsyncCredentials() {\n self.credentials.get(function(err) {\n if (err) {\n var msg = 'Could not load credentials from ' +\n self.credentials.constructor.name;\n err = credError(msg, err);\n }\n finish(err);\n });\n }\n\n function getStaticCredentials() {\n var err = null;\n if (!self.credentials.accessKeyId || !self.credentials.secretAccessKey) {\n err = credError('Missing credentials');\n }\n finish(err);\n }\n\n if (self.credentials) {\n if (typeof self.credentials.get === 'function') {\n getAsyncCredentials();\n } else { // static credentials\n getStaticCredentials();\n }\n } else if (self.credentialProvider) {\n self.credentialProvider.resolve(function(err, creds) {\n if (err) {\n err = credError('Could not load credentials from any providers', err);\n }\n self.credentials = creds;\n finish(err);\n });\n } else {\n finish(credError('No credentials to load'));\n }\n },\n\n /**\n * Loads token from the configuration object. This is used internally\n * by the SDK to ensure that refreshable {Token} objects are properly\n * refreshed and loaded when sending a request. If you want to ensure that\n * your token is loaded prior to a request, you can use this method\n * directly to provide accurate token data stored in the object.\n *\n * @note If you configure the SDK with static token, the token data should\n * already be present in {token} attribute. This method is primarily necessary\n * to load token from asynchronous sources, or sources that can refresh\n * token periodically.\n * @example Getting your access token\n * AWS.config.getToken(function(err) {\n * if (err) console.log(err.stack); // token not loaded\n * else console.log(\"Token:\", AWS.config.token.token);\n * })\n * @callback callback function(err)\n * Called when the {token} have been properly set on the configuration object.\n *\n * @param err [Error] if this is set, token was not successfully loaded and\n * this error provides information why.\n * @see token\n */\n getToken: function getToken(callback) {\n var self = this;\n\n function finish(err) {\n callback(err, err ? null : self.token);\n }\n\n function tokenError(msg, err) {\n return new AWS.util.error(err || new Error(), {\n code: 'TokenError',\n message: msg,\n name: 'TokenError'\n });\n }\n\n function getAsyncToken() {\n self.token.get(function(err) {\n if (err) {\n var msg = 'Could not load token from ' +\n self.token.constructor.name;\n err = tokenError(msg, err);\n }\n finish(err);\n });\n }\n\n function getStaticToken() {\n var err = null;\n if (!self.token.token) {\n err = tokenError('Missing token');\n }\n finish(err);\n }\n\n if (self.token) {\n if (typeof self.token.get === 'function') {\n getAsyncToken();\n } else { // static token\n getStaticToken();\n }\n } else if (self.tokenProvider) {\n self.tokenProvider.resolve(function(err, token) {\n if (err) {\n err = tokenError('Could not load token from any providers', err);\n }\n self.token = token;\n finish(err);\n });\n } else {\n finish(tokenError('No token to load'));\n }\n },\n\n /**\n * @!group Loading and Setting Configuration Options\n */\n\n /**\n * @overload update(options, allowUnknownKeys = false)\n * Updates the current configuration object with new options.\n *\n * @example Update maxRetries property of a configuration object\n * config.update({maxRetries: 10});\n * @param [Object] options a map of option keys and values.\n * @param [Boolean] allowUnknownKeys whether unknown keys can be set on\n * the configuration object. Defaults to `false`.\n * @see constructor\n */\n update: function update(options, allowUnknownKeys) {\n allowUnknownKeys = allowUnknownKeys || false;\n options = this.extractCredentials(options);\n AWS.util.each.call(this, options, function (key, value) {\n if (allowUnknownKeys || Object.prototype.hasOwnProperty.call(this.keys, key) ||\n AWS.Service.hasService(key)) {\n this.set(key, value);\n }\n });\n },\n\n /**\n * Loads configuration data from a JSON file into this config object.\n * @note Loading configuration will reset all existing configuration\n * on the object.\n * @!macro nobrowser\n * @param path [String] the path relative to your process's current\n * working directory to load configuration from.\n * @return [AWS.Config] the same configuration object\n */\n loadFromPath: function loadFromPath(path) {\n this.clear();\n\n var options = JSON.parse(AWS.util.readFileSync(path));\n var fileSystemCreds = new AWS.FileSystemCredentials(path);\n var chain = new AWS.CredentialProviderChain();\n chain.providers.unshift(fileSystemCreds);\n chain.resolve(function (err, creds) {\n if (err) throw err;\n else options.credentials = creds;\n });\n\n this.constructor(options);\n\n return this;\n },\n\n /**\n * Clears configuration data on this object\n *\n * @api private\n */\n clear: function clear() {\n /*jshint forin:false */\n AWS.util.each.call(this, this.keys, function (key) {\n delete this[key];\n });\n\n // reset credential provider\n this.set('credentials', undefined);\n this.set('credentialProvider', undefined);\n },\n\n /**\n * Sets a property on the configuration object, allowing for a\n * default value\n * @api private\n */\n set: function set(property, value, defaultValue) {\n if (value === undefined) {\n if (defaultValue === undefined) {\n defaultValue = this.keys[property];\n }\n if (typeof defaultValue === 'function') {\n this[property] = defaultValue.call(this);\n } else {\n this[property] = defaultValue;\n }\n } else if (property === 'httpOptions' && this[property]) {\n // deep merge httpOptions\n this[property] = AWS.util.merge(this[property], value);\n } else {\n this[property] = value;\n }\n },\n\n /**\n * All of the keys with their default values.\n *\n * @constant\n * @api private\n */\n keys: {\n credentials: null,\n credentialProvider: null,\n region: null,\n logger: null,\n apiVersions: {},\n apiVersion: null,\n endpoint: undefined,\n httpOptions: {\n timeout: 120000\n },\n maxRetries: undefined,\n maxRedirects: 10,\n paramValidation: true,\n sslEnabled: true,\n s3ForcePathStyle: false,\n s3BucketEndpoint: false,\n s3DisableBodySigning: true,\n s3UsEast1RegionalEndpoint: 'legacy',\n s3UseArnRegion: undefined,\n computeChecksums: true,\n convertResponseTypes: true,\n correctClockSkew: false,\n customUserAgent: null,\n dynamoDbCrc32: true,\n systemClockOffset: 0,\n signatureVersion: null,\n signatureCache: true,\n retryDelayOptions: {},\n useAccelerateEndpoint: false,\n clientSideMonitoring: false,\n endpointDiscoveryEnabled: undefined,\n endpointCacheSize: 1000,\n hostPrefixEnabled: true,\n stsRegionalEndpoints: 'legacy',\n useFipsEndpoint: false,\n useDualstackEndpoint: false,\n token: null\n },\n\n /**\n * Extracts accessKeyId, secretAccessKey and sessionToken\n * from a configuration hash.\n *\n * @api private\n */\n extractCredentials: function extractCredentials(options) {\n if (options.accessKeyId && options.secretAccessKey) {\n options = AWS.util.copy(options);\n options.credentials = new AWS.Credentials(options);\n }\n return options;\n },\n\n /**\n * Sets the promise dependency the SDK will use wherever Promises are returned.\n * Passing `null` will force the SDK to use native Promises if they are available.\n * If native Promises are not available, passing `null` will have no effect.\n * @param [Constructor] dep A reference to a Promise constructor\n */\n setPromisesDependency: function setPromisesDependency(dep) {\n PromisesDependency = dep;\n // if null was passed in, we should try to use native promises\n if (dep === null && typeof Promise === 'function') {\n PromisesDependency = Promise;\n }\n var constructors = [AWS.Request, AWS.Credentials, AWS.CredentialProviderChain];\n if (AWS.S3) {\n constructors.push(AWS.S3);\n if (AWS.S3.ManagedUpload) {\n constructors.push(AWS.S3.ManagedUpload);\n }\n }\n AWS.util.addPromises(constructors, PromisesDependency);\n },\n\n /**\n * Gets the promise dependency set by `AWS.config.setPromisesDependency`.\n */\n getPromisesDependency: function getPromisesDependency() {\n return PromisesDependency;\n }\n});\n\n/**\n * @return [AWS.Config] The global configuration object singleton instance\n * @readonly\n * @see AWS.Config\n */\nAWS.config = new AWS.Config();\n","var AWS = require('./core');\n/**\n * @api private\n */\nfunction validateRegionalEndpointsFlagValue(configValue, errorOptions) {\n if (typeof configValue !== 'string') return undefined;\n else if (['legacy', 'regional'].indexOf(configValue.toLowerCase()) >= 0) {\n return configValue.toLowerCase();\n } else {\n throw AWS.util.error(new Error(), errorOptions);\n }\n}\n\n/**\n * Resolve the configuration value for regional endpoint from difference sources: client\n * config, environmental variable, shared config file. Value can be case-insensitive\n * 'legacy' or 'reginal'.\n * @param originalConfig user-supplied config object to resolve\n * @param options a map of config property names from individual configuration source\n * - env: name of environmental variable that refers to the config\n * - sharedConfig: name of shared configuration file property that refers to the config\n * - clientConfig: name of client configuration property that refers to the config\n *\n * @api private\n */\nfunction resolveRegionalEndpointsFlag(originalConfig, options) {\n originalConfig = originalConfig || {};\n //validate config value\n var resolved;\n if (originalConfig[options.clientConfig]) {\n resolved = validateRegionalEndpointsFlagValue(originalConfig[options.clientConfig], {\n code: 'InvalidConfiguration',\n message: 'invalid \"' + options.clientConfig + '\" configuration. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + originalConfig[options.clientConfig] + '\".'\n });\n if (resolved) return resolved;\n }\n if (!AWS.util.isNode()) return resolved;\n //validate environmental variable\n if (Object.prototype.hasOwnProperty.call(process.env, options.env)) {\n var envFlag = process.env[options.env];\n resolved = validateRegionalEndpointsFlagValue(envFlag, {\n code: 'InvalidEnvironmentalVariable',\n message: 'invalid ' + options.env + ' environmental variable. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + process.env[options.env] + '\".'\n });\n if (resolved) return resolved;\n }\n //validate shared config file\n var profile = {};\n try {\n var profiles = AWS.util.getProfilesFromSharedConfig(AWS.util.iniLoader);\n profile = profiles[process.env.AWS_PROFILE || AWS.util.defaultProfile];\n } catch (e) {};\n if (profile && Object.prototype.hasOwnProperty.call(profile, options.sharedConfig)) {\n var fileFlag = profile[options.sharedConfig];\n resolved = validateRegionalEndpointsFlagValue(fileFlag, {\n code: 'InvalidConfiguration',\n message: 'invalid ' + options.sharedConfig + ' profile config. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + profile[options.sharedConfig] + '\".'\n });\n if (resolved) return resolved;\n }\n return resolved;\n}\n\nmodule.exports = resolveRegionalEndpointsFlag;\n","/**\n * The main AWS namespace\n */\nvar AWS = { util: require('./util') };\n\n/**\n * @api private\n * @!macro [new] nobrowser\n * @note This feature is not supported in the browser environment of the SDK.\n */\nvar _hidden = {}; _hidden.toString(); // hack to parse macro\n\n/**\n * @api private\n */\nmodule.exports = AWS;\n\nAWS.util.update(AWS, {\n\n /**\n * @constant\n */\n VERSION: '2.1632.0',\n\n /**\n * @api private\n */\n Signers: {},\n\n /**\n * @api private\n */\n Protocol: {\n Json: require('./protocol/json'),\n Query: require('./protocol/query'),\n Rest: require('./protocol/rest'),\n RestJson: require('./protocol/rest_json'),\n RestXml: require('./protocol/rest_xml')\n },\n\n /**\n * @api private\n */\n XML: {\n Builder: require('./xml/builder'),\n Parser: null // conditionally set based on environment\n },\n\n /**\n * @api private\n */\n JSON: {\n Builder: require('./json/builder'),\n Parser: require('./json/parser')\n },\n\n /**\n * @api private\n */\n Model: {\n Api: require('./model/api'),\n Operation: require('./model/operation'),\n Shape: require('./model/shape'),\n Paginator: require('./model/paginator'),\n ResourceWaiter: require('./model/resource_waiter')\n },\n\n /**\n * @api private\n */\n apiLoader: require('./api_loader'),\n\n /**\n * @api private\n */\n EndpointCache: require('../vendor/endpoint-cache').EndpointCache\n});\nrequire('./sequential_executor');\nrequire('./service');\nrequire('./config');\nrequire('./http');\nrequire('./event_listeners');\nrequire('./request');\nrequire('./response');\nrequire('./resource_waiter');\nrequire('./signers/request_signer');\nrequire('./param_validator');\nrequire('./maintenance_mode_message');\n\n/**\n * @readonly\n * @return [AWS.SequentialExecutor] a collection of global event listeners that\n * are attached to every sent request.\n * @see AWS.Request AWS.Request for a list of events to listen for\n * @example Logging the time taken to send a request\n * AWS.events.on('send', function startSend(resp) {\n * resp.startTime = new Date().getTime();\n * }).on('complete', function calculateTime(resp) {\n * var time = (new Date().getTime() - resp.startTime) / 1000;\n * console.log('Request took ' + time + ' seconds');\n * });\n *\n * new AWS.S3().listBuckets(); // prints 'Request took 0.285 seconds'\n */\nAWS.events = new AWS.SequentialExecutor();\n\n//create endpoint cache lazily\nAWS.util.memoizedProperty(AWS, 'endpointCache', function() {\n return new AWS.EndpointCache(AWS.config.endpointCacheSize);\n}, true);\n","var AWS = require('./core');\n\n/**\n * Represents your AWS security credentials, specifically the\n * {accessKeyId}, {secretAccessKey}, and optional {sessionToken}.\n * Creating a `Credentials` object allows you to pass around your\n * security information to configuration and service objects.\n *\n * Note that this class typically does not need to be constructed manually,\n * as the {AWS.Config} and {AWS.Service} classes both accept simple\n * options hashes with the three keys. These structures will be converted\n * into Credentials objects automatically.\n *\n * ## Expiring and Refreshing Credentials\n *\n * Occasionally credentials can expire in the middle of a long-running\n * application. In this case, the SDK will automatically attempt to\n * refresh the credentials from the storage location if the Credentials\n * class implements the {refresh} method.\n *\n * If you are implementing a credential storage location, you\n * will want to create a subclass of the `Credentials` class and\n * override the {refresh} method. This method allows credentials to be\n * retrieved from the backing store, be it a file system, database, or\n * some network storage. The method should reset the credential attributes\n * on the object.\n *\n * @!attribute expired\n * @return [Boolean] whether the credentials have been expired and\n * require a refresh. Used in conjunction with {expireTime}.\n * @!attribute expireTime\n * @return [Date] a time when credentials should be considered expired. Used\n * in conjunction with {expired}.\n * @!attribute accessKeyId\n * @return [String] the AWS access key ID\n * @!attribute secretAccessKey\n * @return [String] the AWS secret access key\n * @!attribute sessionToken\n * @return [String] an optional AWS session token\n */\nAWS.Credentials = AWS.util.inherit({\n /**\n * A credentials object can be created using positional arguments or an options\n * hash.\n *\n * @overload AWS.Credentials(accessKeyId, secretAccessKey, sessionToken=null)\n * Creates a Credentials object with a given set of credential information\n * as positional arguments.\n * @param accessKeyId [String] the AWS access key ID\n * @param secretAccessKey [String] the AWS secret access key\n * @param sessionToken [String] the optional AWS session token\n * @example Create a credentials object with AWS credentials\n * var creds = new AWS.Credentials('akid', 'secret', 'session');\n * @overload AWS.Credentials(options)\n * Creates a Credentials object with a given set of credential information\n * as an options hash.\n * @option options accessKeyId [String] the AWS access key ID\n * @option options secretAccessKey [String] the AWS secret access key\n * @option options sessionToken [String] the optional AWS session token\n * @example Create a credentials object with AWS credentials\n * var creds = new AWS.Credentials({\n * accessKeyId: 'akid', secretAccessKey: 'secret', sessionToken: 'session'\n * });\n */\n constructor: function Credentials() {\n // hide secretAccessKey from being displayed with util.inspect\n AWS.util.hideProperties(this, ['secretAccessKey']);\n\n this.expired = false;\n this.expireTime = null;\n this.refreshCallbacks = [];\n if (arguments.length === 1 && typeof arguments[0] === 'object') {\n var creds = arguments[0].credentials || arguments[0];\n this.accessKeyId = creds.accessKeyId;\n this.secretAccessKey = creds.secretAccessKey;\n this.sessionToken = creds.sessionToken;\n } else {\n this.accessKeyId = arguments[0];\n this.secretAccessKey = arguments[1];\n this.sessionToken = arguments[2];\n }\n },\n\n /**\n * @return [Integer] the number of seconds before {expireTime} during which\n * the credentials will be considered expired.\n */\n expiryWindow: 15,\n\n /**\n * @return [Boolean] whether the credentials object should call {refresh}\n * @note Subclasses should override this method to provide custom refresh\n * logic.\n */\n needsRefresh: function needsRefresh() {\n var currentTime = AWS.util.date.getDate().getTime();\n var adjustedTime = new Date(currentTime + this.expiryWindow * 1000);\n\n if (this.expireTime && adjustedTime > this.expireTime) {\n return true;\n } else {\n return this.expired || !this.accessKeyId || !this.secretAccessKey;\n }\n },\n\n /**\n * Gets the existing credentials, refreshing them if they are not yet loaded\n * or have expired. Users should call this method before using {refresh},\n * as this will not attempt to reload credentials when they are already\n * loaded into the object.\n *\n * @callback callback function(err)\n * When this callback is called with no error, it means either credentials\n * do not need to be refreshed or refreshed credentials information has\n * been loaded into the object (as the `accessKeyId`, `secretAccessKey`,\n * and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n */\n get: function get(callback) {\n var self = this;\n if (this.needsRefresh()) {\n this.refresh(function(err) {\n if (!err) self.expired = false; // reset expired flag\n if (callback) callback(err);\n });\n } else if (callback) {\n callback();\n }\n },\n\n /**\n * @!method getPromise()\n * Returns a 'thenable' promise.\n * Gets the existing credentials, refreshing them if they are not yet loaded\n * or have expired. Users should call this method before using {refresh},\n * as this will not attempt to reload credentials when they are already\n * loaded into the object.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function()\n * Called if the promise is fulfilled. When this callback is called, it\n * means either credentials do not need to be refreshed or refreshed\n * credentials information has been loaded into the object (as the\n * `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `get` call.\n * @example Calling the `getPromise` method.\n * var promise = credProvider.getPromise();\n * promise.then(function() { ... }, function(err) { ... });\n */\n\n /**\n * @!method refreshPromise()\n * Returns a 'thenable' promise.\n * Refreshes the credentials. Users should call {get} before attempting\n * to forcibly refresh credentials.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function()\n * Called if the promise is fulfilled. When this callback is called, it\n * means refreshed credentials information has been loaded into the object\n * (as the `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `refresh` call.\n * @example Calling the `refreshPromise` method.\n * var promise = credProvider.refreshPromise();\n * promise.then(function() { ... }, function(err) { ... });\n */\n\n /**\n * Refreshes the credentials. Users should call {get} before attempting\n * to forcibly refresh credentials.\n *\n * @callback callback function(err)\n * When this callback is called with no error, it means refreshed\n * credentials information has been loaded into the object (as the\n * `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @note Subclasses should override this class to reset the\n * {accessKeyId}, {secretAccessKey} and optional {sessionToken}\n * on the credentials object and then call the callback with\n * any error information.\n * @see get\n */\n refresh: function refresh(callback) {\n this.expired = false;\n callback();\n },\n\n /**\n * @api private\n * @param callback\n */\n coalesceRefresh: function coalesceRefresh(callback, sync) {\n var self = this;\n if (self.refreshCallbacks.push(callback) === 1) {\n self.load(function onLoad(err) {\n AWS.util.arrayEach(self.refreshCallbacks, function(callback) {\n if (sync) {\n callback(err);\n } else {\n // callback could throw, so defer to ensure all callbacks are notified\n AWS.util.defer(function () {\n callback(err);\n });\n }\n });\n self.refreshCallbacks.length = 0;\n });\n }\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n callback();\n }\n});\n\n/**\n * @api private\n */\nAWS.Credentials.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.getPromise = AWS.util.promisifyMethod('get', PromiseDependency);\n this.prototype.refreshPromise = AWS.util.promisifyMethod('refresh', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.Credentials.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.getPromise;\n delete this.prototype.refreshPromise;\n};\n\nAWS.util.addPromises(AWS.Credentials);\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents temporary credentials retrieved from {AWS.STS}. Without any\n * extra parameters, credentials will be fetched from the\n * {AWS.STS.getSessionToken} operation. If an IAM role is provided, the\n * {AWS.STS.assumeRole} operation will be used to fetch credentials for the\n * role instead.\n *\n * AWS.ChainableTemporaryCredentials differs from AWS.TemporaryCredentials in\n * the way masterCredentials and refreshes are handled.\n * AWS.ChainableTemporaryCredentials refreshes expired credentials using the\n * masterCredentials passed by the user to support chaining of STS credentials.\n * However, AWS.TemporaryCredentials recursively collapses the masterCredentials\n * during instantiation, precluding the ability to refresh credentials which\n * require intermediate, temporary credentials.\n *\n * For example, if the application should use RoleA, which must be assumed from\n * RoleB, and the environment provides credentials which can assume RoleB, then\n * AWS.ChainableTemporaryCredentials must be used to support refreshing the\n * temporary credentials for RoleA:\n *\n * ```javascript\n * var roleACreds = new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: 'RoleA'},\n * masterCredentials: new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: 'RoleB'},\n * masterCredentials: new AWS.EnvironmentCredentials('AWS')\n * })\n * });\n * ```\n *\n * If AWS.TemporaryCredentials had been used in the previous example,\n * `roleACreds` would fail to refresh because `roleACreds` would\n * use the environment credentials for the AssumeRole request.\n *\n * Another difference is that AWS.ChainableTemporaryCredentials creates the STS\n * service instance during instantiation while AWS.TemporaryCredentials creates\n * the STS service instance during the first refresh. Creating the service\n * instance during instantiation effectively captures the master credentials\n * from the global config, so that subsequent changes to the global config do\n * not affect the master credentials used to refresh the temporary credentials.\n *\n * This allows an instance of AWS.ChainableTemporaryCredentials to be assigned\n * to AWS.config.credentials:\n *\n * ```javascript\n * var envCreds = new AWS.EnvironmentCredentials('AWS');\n * AWS.config.credentials = envCreds;\n * // masterCredentials will be envCreds\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: '...'}\n * });\n * ```\n *\n * Similarly, to use the CredentialProviderChain's default providers as the\n * master credentials, simply create a new instance of\n * AWS.ChainableTemporaryCredentials:\n *\n * ```javascript\n * AWS.config.credentials = new ChainableTemporaryCredentials({\n * params: {RoleArn: '...'}\n * });\n * ```\n *\n * @!attribute service\n * @return [AWS.STS] the STS service instance used to\n * get and refresh temporary credentials from AWS STS.\n * @note (see constructor)\n */\nAWS.ChainableTemporaryCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new temporary credentials object.\n *\n * @param options [map] a set of options\n * @option options params [map] ({}) a map of options that are passed to the\n * {AWS.STS.assumeRole} or {AWS.STS.getSessionToken} operations.\n * If a `RoleArn` parameter is passed in, credentials will be based on the\n * IAM role. If a `SerialNumber` parameter is passed in, {tokenCodeFn} must\n * also be passed in or an error will be thrown.\n * @option options masterCredentials [AWS.Credentials] the master credentials\n * used to get and refresh temporary credentials from AWS STS. By default,\n * AWS.config.credentials or AWS.config.credentialProvider will be used.\n * @option options tokenCodeFn [Function] (null) Function to provide\n * `TokenCode`, if `SerialNumber` is provided for profile in {params}. Function\n * is called with value of `SerialNumber` and `callback`, and should provide\n * the `TokenCode` or an error to the callback in the format\n * `callback(err, token)`.\n * @example Creating a new credentials object for generic temporary credentials\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials();\n * @example Creating a new credentials object for an IAM role\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials({\n * params: {\n * RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials'\n * }\n * });\n * @see AWS.STS.assumeRole\n * @see AWS.STS.getSessionToken\n */\n constructor: function ChainableTemporaryCredentials(options) {\n AWS.Credentials.call(this);\n options = options || {};\n this.errorCode = 'ChainableTemporaryCredentialsProviderFailure';\n this.expired = true;\n this.tokenCodeFn = null;\n\n var params = AWS.util.copy(options.params) || {};\n if (params.RoleArn) {\n params.RoleSessionName = params.RoleSessionName || 'temporary-credentials';\n }\n if (params.SerialNumber) {\n if (!options.tokenCodeFn || (typeof options.tokenCodeFn !== 'function')) {\n throw new AWS.util.error(\n new Error('tokenCodeFn must be a function when params.SerialNumber is given'),\n {code: this.errorCode}\n );\n } else {\n this.tokenCodeFn = options.tokenCodeFn;\n }\n }\n var config = AWS.util.merge(\n {\n params: params,\n credentials: options.masterCredentials || AWS.config.credentials\n },\n options.stsConfig || {}\n );\n this.service = new STS(config);\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRole} or\n * {AWS.STS.getSessionToken}, depending on whether an IAM role ARN was passed\n * to the credentials {constructor}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see AWS.Credentials.get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n var self = this;\n var operation = self.service.config.params.RoleArn ? 'assumeRole' : 'getSessionToken';\n this.getTokenCode(function (err, tokenCode) {\n var params = {};\n if (err) {\n callback(err);\n return;\n }\n if (tokenCode) {\n params.TokenCode = tokenCode;\n }\n self.service[operation](params, function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n });\n },\n\n /**\n * @api private\n */\n getTokenCode: function getTokenCode(callback) {\n var self = this;\n if (this.tokenCodeFn) {\n this.tokenCodeFn(this.service.config.params.SerialNumber, function (err, token) {\n if (err) {\n var message = err;\n if (err instanceof Error) {\n message = err.message;\n }\n callback(\n AWS.util.error(\n new Error('Error fetching MFA token: ' + message),\n { code: self.errorCode}\n )\n );\n return;\n }\n callback(null, token);\n });\n } else {\n callback(null);\n }\n }\n});\n","var AWS = require('../core');\nvar CognitoIdentity = require('../../clients/cognitoidentity');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS Web Identity Federation using\n * the Amazon Cognito Identity service.\n *\n * By default this provider gets credentials using the\n * {AWS.CognitoIdentity.getCredentialsForIdentity} service operation, which\n * requires either an `IdentityId` or an `IdentityPoolId` (Amazon Cognito\n * Identity Pool ID), which is used to call {AWS.CognitoIdentity.getId} to\n * obtain an `IdentityId`. If the identity or identity pool is not configured in\n * the Amazon Cognito Console to use IAM roles with the appropriate permissions,\n * then additionally a `RoleArn` is required containing the ARN of the IAM trust\n * policy for the Amazon Cognito role that the user will log into. If a `RoleArn`\n * is provided, then this provider gets credentials using the\n * {AWS.STS.assumeRoleWithWebIdentity} service operation, after first getting an\n * Open ID token from {AWS.CognitoIdentity.getOpenIdToken}.\n *\n * In addition, if this credential provider is used to provide authenticated\n * login, the `Logins` map may be set to the tokens provided by the respective\n * identity providers. See {constructor} for an example on creating a credentials\n * object with proper property values.\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the WebIdentityToken, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.Logins['graph.facebook.com'] = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.CognitoIdentity.getId},\n * {AWS.CognitoIdentity.getOpenIdToken}, and\n * {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the\n * `params.WebIdentityToken` property.\n * @!attribute data\n * @return [map] the raw data response from the call to\n * {AWS.CognitoIdentity.getCredentialsForIdentity}, or\n * {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get\n * access to other properties from the response.\n * @!attribute identityId\n * @return [String] the Cognito ID returned by the last call to\n * {AWS.CognitoIdentity.getOpenIdToken}. This ID represents the actual\n * final resolved identity ID from Amazon Cognito.\n */\nAWS.CognitoIdentityCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * @api private\n */\n localStorageKey: {\n id: 'aws.cognito.identity-id.',\n providers: 'aws.cognito.identity-providers.'\n },\n\n /**\n * Creates a new credentials object.\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.CognitoIdentityCredentials({\n *\n * // either IdentityPoolId or IdentityId is required\n * // See the IdentityPoolId param for AWS.CognitoIdentity.getID (linked below)\n * // See the IdentityId param for AWS.CognitoIdentity.getCredentialsForIdentity\n * // or AWS.CognitoIdentity.getOpenIdToken (linked below)\n * IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030',\n * IdentityId: 'us-east-1:128d0a74-c82f-4553-916d-90053e4a8b0f'\n *\n * // optional, only necessary when the identity pool is not configured\n * // to use IAM roles in the Amazon Cognito Console\n * // See the RoleArn param for AWS.STS.assumeRoleWithWebIdentity (linked below)\n * RoleArn: 'arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity',\n *\n * // optional tokens, used for authenticated login\n * // See the Logins param for AWS.CognitoIdentity.getID (linked below)\n * Logins: {\n * 'graph.facebook.com': 'FBTOKEN',\n * 'www.amazon.com': 'AMAZONTOKEN',\n * 'accounts.google.com': 'GOOGLETOKEN',\n * 'api.twitter.com': 'TWITTERTOKEN',\n * 'www.digits.com': 'DIGITSTOKEN'\n * },\n *\n * // optional name, defaults to web-identity\n * // See the RoleSessionName param for AWS.STS.assumeRoleWithWebIdentity (linked below)\n * RoleSessionName: 'web',\n *\n * // optional, only necessary when application runs in a browser\n * // and multiple users are signed in at once, used for caching\n * LoginId: 'example@gmail.com'\n *\n * }, {\n * // optionally provide configuration to apply to the underlying service clients\n * // if configuration is not provided, then configuration will be pulled from AWS.config\n *\n * // region should match the region your identity pool is located in\n * region: 'us-east-1',\n *\n * // specify timeout options\n * httpOptions: {\n * timeout: 100\n * }\n * });\n * @see AWS.CognitoIdentity.getId\n * @see AWS.CognitoIdentity.getCredentialsForIdentity\n * @see AWS.STS.assumeRoleWithWebIdentity\n * @see AWS.CognitoIdentity.getOpenIdToken\n * @see AWS.Config\n * @note If a region is not provided in the global AWS.config, or\n * specified in the `clientConfig` to the CognitoIdentityCredentials\n * constructor, you may encounter a 'Missing credentials in config' error\n * when calling making a service call.\n */\n constructor: function CognitoIdentityCredentials(params, clientConfig) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n this.data = null;\n this._identityId = null;\n this._clientConfig = AWS.util.copy(clientConfig || {});\n this.loadCachedId();\n var self = this;\n Object.defineProperty(this, 'identityId', {\n get: function() {\n self.loadCachedId();\n return self._identityId || self.params.IdentityId;\n },\n set: function(identityId) {\n self._identityId = identityId;\n }\n });\n },\n\n /**\n * Refreshes credentials using {AWS.CognitoIdentity.getCredentialsForIdentity},\n * or {AWS.STS.assumeRoleWithWebIdentity}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see AWS.Credentials.get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.data = null;\n self._identityId = null;\n self.getId(function(err) {\n if (!err) {\n if (!self.params.RoleArn) {\n self.getCredentialsForIdentity(callback);\n } else {\n self.getCredentialsFromSTS(callback);\n }\n } else {\n self.clearIdOnNotAuthorized(err);\n callback(err);\n }\n });\n },\n\n /**\n * Clears the cached Cognito ID associated with the currently configured\n * identity pool ID. Use this to manually invalidate your cache if\n * the identity pool ID was deleted.\n */\n clearCachedId: function clearCache() {\n this._identityId = null;\n delete this.params.IdentityId;\n\n var poolId = this.params.IdentityPoolId;\n var loginId = this.params.LoginId || '';\n delete this.storage[this.localStorageKey.id + poolId + loginId];\n delete this.storage[this.localStorageKey.providers + poolId + loginId];\n },\n\n /**\n * @api private\n */\n clearIdOnNotAuthorized: function clearIdOnNotAuthorized(err) {\n var self = this;\n if (err.code == 'NotAuthorizedException') {\n self.clearCachedId();\n }\n },\n\n /**\n * Retrieves a Cognito ID, loading from cache if it was already retrieved\n * on this device.\n *\n * @callback callback function(err, identityId)\n * @param err [Error, null] an error object if the call failed or null if\n * it succeeded.\n * @param identityId [String, null] if successful, the callback will return\n * the Cognito ID.\n * @note If not loaded explicitly, the Cognito ID is loaded and stored in\n * localStorage in the browser environment of a device.\n * @api private\n */\n getId: function getId(callback) {\n var self = this;\n if (typeof self.params.IdentityId === 'string') {\n return callback(null, self.params.IdentityId);\n }\n\n self.cognito.getId(function(err, data) {\n if (!err && data.IdentityId) {\n self.params.IdentityId = data.IdentityId;\n callback(null, data.IdentityId);\n } else {\n callback(err);\n }\n });\n },\n\n\n /**\n * @api private\n */\n loadCredentials: function loadCredentials(data, credentials) {\n if (!data || !credentials) return;\n credentials.expired = false;\n credentials.accessKeyId = data.Credentials.AccessKeyId;\n credentials.secretAccessKey = data.Credentials.SecretKey;\n credentials.sessionToken = data.Credentials.SessionToken;\n credentials.expireTime = data.Credentials.Expiration;\n },\n\n /**\n * @api private\n */\n getCredentialsForIdentity: function getCredentialsForIdentity(callback) {\n var self = this;\n self.cognito.getCredentialsForIdentity(function(err, data) {\n if (!err) {\n self.cacheId(data);\n self.data = data;\n self.loadCredentials(self.data, self);\n } else {\n self.clearIdOnNotAuthorized(err);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n getCredentialsFromSTS: function getCredentialsFromSTS(callback) {\n var self = this;\n self.cognito.getOpenIdToken(function(err, data) {\n if (!err) {\n self.cacheId(data);\n self.params.WebIdentityToken = data.Token;\n self.webIdentityCredentials.refresh(function(webErr) {\n if (!webErr) {\n self.data = self.webIdentityCredentials.data;\n self.sts.credentialsFrom(self.data, self);\n }\n callback(webErr);\n });\n } else {\n self.clearIdOnNotAuthorized(err);\n callback(err);\n }\n });\n },\n\n /**\n * @api private\n */\n loadCachedId: function loadCachedId() {\n var self = this;\n\n // in the browser we source default IdentityId from localStorage\n if (AWS.util.isBrowser() && !self.params.IdentityId) {\n var id = self.getStorage('id');\n if (id && self.params.Logins) {\n var actualProviders = Object.keys(self.params.Logins);\n var cachedProviders =\n (self.getStorage('providers') || '').split(',');\n\n // only load ID if at least one provider used this ID before\n var intersect = cachedProviders.filter(function(n) {\n return actualProviders.indexOf(n) !== -1;\n });\n if (intersect.length !== 0) {\n self.params.IdentityId = id;\n }\n } else if (id) {\n self.params.IdentityId = id;\n }\n }\n },\n\n /**\n * @api private\n */\n createClients: function() {\n var clientConfig = this._clientConfig;\n this.webIdentityCredentials = this.webIdentityCredentials ||\n new AWS.WebIdentityCredentials(this.params, clientConfig);\n if (!this.cognito) {\n var cognitoConfig = AWS.util.merge({}, clientConfig);\n cognitoConfig.params = this.params;\n this.cognito = new CognitoIdentity(cognitoConfig);\n }\n this.sts = this.sts || new STS(clientConfig);\n },\n\n /**\n * @api private\n */\n cacheId: function cacheId(data) {\n this._identityId = data.IdentityId;\n this.params.IdentityId = this._identityId;\n\n // cache this IdentityId in browser localStorage if possible\n if (AWS.util.isBrowser()) {\n this.setStorage('id', data.IdentityId);\n\n if (this.params.Logins) {\n this.setStorage('providers', Object.keys(this.params.Logins).join(','));\n }\n }\n },\n\n /**\n * @api private\n */\n getStorage: function getStorage(key) {\n return this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')];\n },\n\n /**\n * @api private\n */\n setStorage: function setStorage(key, val) {\n try {\n this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')] = val;\n } catch (_) {}\n },\n\n /**\n * @api private\n */\n storage: (function() {\n try {\n var storage = AWS.util.isBrowser() && window.localStorage !== null && typeof window.localStorage === 'object' ?\n window.localStorage : {};\n\n // Test set/remove which would throw an error in Safari's private browsing\n storage['aws.test-storage'] = 'foobar';\n delete storage['aws.test-storage'];\n\n return storage;\n } catch (_) {\n return {};\n }\n })()\n});\n","var AWS = require('../core');\n\n/**\n * Creates a credential provider chain that searches for AWS credentials\n * in a list of credential providers specified by the {providers} property.\n *\n * By default, the chain will use the {defaultProviders} to resolve credentials.\n * These providers will look in the environment using the\n * {AWS.EnvironmentCredentials} class with the 'AWS' and 'AMAZON' prefixes.\n *\n * ## Setting Providers\n *\n * Each provider in the {providers} list should be a function that returns\n * a {AWS.Credentials} object, or a hardcoded credentials object. The function\n * form allows for delayed execution of the credential construction.\n *\n * ## Resolving Credentials from a Chain\n *\n * Call {resolve} to return the first valid credential object that can be\n * loaded by the provider chain.\n *\n * For example, to resolve a chain with a custom provider that checks a file\n * on disk after the set of {defaultProviders}:\n *\n * ```javascript\n * var diskProvider = new AWS.FileSystemCredentials('./creds.json');\n * var chain = new AWS.CredentialProviderChain();\n * chain.providers.push(diskProvider);\n * chain.resolve();\n * ```\n *\n * The above code will return the `diskProvider` object if the\n * file contains credentials and the `defaultProviders` do not contain\n * any credential settings.\n *\n * @!attribute providers\n * @return [Array]\n * a list of credentials objects or functions that return credentials\n * objects. If the provider is a function, the function will be\n * executed lazily when the provider needs to be checked for valid\n * credentials. By default, this object will be set to the\n * {defaultProviders}.\n * @see defaultProviders\n */\nAWS.CredentialProviderChain = AWS.util.inherit(AWS.Credentials, {\n\n /**\n * Creates a new CredentialProviderChain with a default set of providers\n * specified by {defaultProviders}.\n */\n constructor: function CredentialProviderChain(providers) {\n if (providers) {\n this.providers = providers;\n } else {\n this.providers = AWS.CredentialProviderChain.defaultProviders.slice(0);\n }\n this.resolveCallbacks = [];\n },\n\n /**\n * @!method resolvePromise()\n * Returns a 'thenable' promise.\n * Resolves the provider chain by searching for the first set of\n * credentials in {providers}.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(credentials)\n * Called if the promise is fulfilled and the provider resolves the chain\n * to a credentials object\n * @param credentials [AWS.Credentials] the credentials object resolved\n * by the provider chain.\n * @callback rejectedCallback function(error)\n * Called if the promise is rejected.\n * @param err [Error] the error object returned if no credentials are found.\n * @return [Promise] A promise that represents the state of the `resolve` method call.\n * @example Calling the `resolvePromise` method.\n * var promise = chain.resolvePromise();\n * promise.then(function(credentials) { ... }, function(err) { ... });\n */\n\n /**\n * Resolves the provider chain by searching for the first set of\n * credentials in {providers}.\n *\n * @callback callback function(err, credentials)\n * Called when the provider resolves the chain to a credentials object\n * or null if no credentials can be found.\n *\n * @param err [Error] the error object returned if no credentials are\n * found.\n * @param credentials [AWS.Credentials] the credentials object resolved\n * by the provider chain.\n * @return [AWS.CredentialProviderChain] the provider, for chaining.\n */\n resolve: function resolve(callback) {\n var self = this;\n if (self.providers.length === 0) {\n callback(new Error('No providers'));\n return self;\n }\n\n if (self.resolveCallbacks.push(callback) === 1) {\n var index = 0;\n var providers = self.providers.slice(0);\n\n function resolveNext(err, creds) {\n if ((!err && creds) || index === providers.length) {\n AWS.util.arrayEach(self.resolveCallbacks, function (callback) {\n callback(err, creds);\n });\n self.resolveCallbacks.length = 0;\n return;\n }\n\n var provider = providers[index++];\n if (typeof provider === 'function') {\n creds = provider.call();\n } else {\n creds = provider;\n }\n\n if (creds.get) {\n creds.get(function (getErr) {\n resolveNext(getErr, getErr ? null : creds);\n });\n } else {\n resolveNext(null, creds);\n }\n }\n\n resolveNext();\n }\n\n return self;\n }\n});\n\n/**\n * The default set of providers used by a vanilla CredentialProviderChain.\n *\n * In the browser:\n *\n * ```javascript\n * AWS.CredentialProviderChain.defaultProviders = []\n * ```\n *\n * In Node.js:\n *\n * ```javascript\n * AWS.CredentialProviderChain.defaultProviders = [\n * function () { return new AWS.EnvironmentCredentials('AWS'); },\n * function () { return new AWS.EnvironmentCredentials('AMAZON'); },\n * function () { return new AWS.SsoCredentials(); },\n * function () { return new AWS.SharedIniFileCredentials(); },\n * function () { return new AWS.ECSCredentials(); },\n * function () { return new AWS.ProcessCredentials(); },\n * function () { return new AWS.TokenFileWebIdentityCredentials(); },\n * function () { return new AWS.EC2MetadataCredentials() }\n * ]\n * ```\n */\nAWS.CredentialProviderChain.defaultProviders = [];\n\n/**\n * @api private\n */\nAWS.CredentialProviderChain.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.resolvePromise = AWS.util.promisifyMethod('resolve', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.CredentialProviderChain.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.resolvePromise;\n};\n\nAWS.util.addPromises(AWS.CredentialProviderChain);\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS SAML support.\n *\n * By default this provider gets credentials using the\n * {AWS.STS.assumeRoleWithSAML} service operation. This operation\n * requires a `RoleArn` containing the ARN of the IAM trust policy for the\n * application for which credentials will be given, as well as a `PrincipalArn`\n * representing the ARN for the SAML identity provider. In addition, the\n * `SAMLAssertion` must be set to the token provided by the identity\n * provider. See {constructor} for an example on creating a credentials\n * object with proper `RoleArn`, `PrincipalArn`, and `SAMLAssertion` values.\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the SAMLAssertion, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.SAMLAssertion = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.STS.assumeRoleWithSAML}. To update the token, set the\n * `params.SAMLAssertion` property.\n */\nAWS.SAMLCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new credentials object.\n * @param (see AWS.STS.assumeRoleWithSAML)\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.SAMLCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/SAMLRole',\n * PrincipalArn: 'arn:aws:iam::1234567890:role/SAMLPrincipal',\n * SAMLAssertion: 'base64-token', // base64-encoded token from IdP\n * });\n * @see AWS.STS.assumeRoleWithSAML\n */\n constructor: function SAMLCredentials(params) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRoleWithSAML}\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.service.assumeRoleWithSAML(function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n createClients: function() {\n this.service = this.service || new STS({params: this.params});\n }\n\n});\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents temporary credentials retrieved from {AWS.STS}. Without any\n * extra parameters, credentials will be fetched from the\n * {AWS.STS.getSessionToken} operation. If an IAM role is provided, the\n * {AWS.STS.assumeRole} operation will be used to fetch credentials for the\n * role instead.\n *\n * @note AWS.TemporaryCredentials is deprecated, but remains available for\n * backwards compatibility. {AWS.ChainableTemporaryCredentials} is the\n * preferred class for temporary credentials.\n *\n * To setup temporary credentials, configure a set of master credentials\n * using the standard credentials providers (environment, EC2 instance metadata,\n * or from the filesystem), then set the global credentials to a new\n * temporary credentials object:\n *\n * ```javascript\n * // Note that environment credentials are loaded by default,\n * // the following line is shown for clarity:\n * AWS.config.credentials = new AWS.EnvironmentCredentials('AWS');\n *\n * // Now set temporary credentials seeded from the master credentials\n * AWS.config.credentials = new AWS.TemporaryCredentials();\n *\n * // subsequent requests will now use temporary credentials from AWS STS.\n * new AWS.S3().listBucket(function(err, data) { ... });\n * ```\n *\n * @!attribute masterCredentials\n * @return [AWS.Credentials] the master (non-temporary) credentials used to\n * get and refresh temporary credentials from AWS STS.\n * @note (see constructor)\n */\nAWS.TemporaryCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new temporary credentials object.\n *\n * @note In order to create temporary credentials, you first need to have\n * \"master\" credentials configured in {AWS.Config.credentials}. These\n * master credentials are necessary to retrieve the temporary credentials,\n * as well as refresh the credentials when they expire.\n * @param params [map] a map of options that are passed to the\n * {AWS.STS.assumeRole} or {AWS.STS.getSessionToken} operations.\n * If a `RoleArn` parameter is passed in, credentials will be based on the\n * IAM role.\n * @param masterCredentials [AWS.Credentials] the master (non-temporary) credentials\n * used to get and refresh temporary credentials from AWS STS.\n * @example Creating a new credentials object for generic temporary credentials\n * AWS.config.credentials = new AWS.TemporaryCredentials();\n * @example Creating a new credentials object for an IAM role\n * AWS.config.credentials = new AWS.TemporaryCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials',\n * });\n * @see AWS.STS.assumeRole\n * @see AWS.STS.getSessionToken\n */\n constructor: function TemporaryCredentials(params, masterCredentials) {\n AWS.Credentials.call(this);\n this.loadMasterCredentials(masterCredentials);\n this.expired = true;\n\n this.params = params || {};\n if (this.params.RoleArn) {\n this.params.RoleSessionName =\n this.params.RoleSessionName || 'temporary-credentials';\n }\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRole} or\n * {AWS.STS.getSessionToken}, depending on whether an IAM role ARN was passed\n * to the credentials {constructor}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh (callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load (callback) {\n var self = this;\n self.createClients();\n self.masterCredentials.get(function () {\n self.service.config.credentials = self.masterCredentials;\n var operation = self.params.RoleArn ?\n self.service.assumeRole : self.service.getSessionToken;\n operation.call(self.service, function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n });\n },\n\n /**\n * @api private\n */\n loadMasterCredentials: function loadMasterCredentials (masterCredentials) {\n this.masterCredentials = masterCredentials || AWS.config.credentials;\n while (this.masterCredentials.masterCredentials) {\n this.masterCredentials = this.masterCredentials.masterCredentials;\n }\n\n if (typeof this.masterCredentials.get !== 'function') {\n this.masterCredentials = new AWS.Credentials(this.masterCredentials);\n }\n },\n\n /**\n * @api private\n */\n createClients: function () {\n this.service = this.service || new STS({params: this.params});\n }\n\n});\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS Web Identity Federation support.\n *\n * By default this provider gets credentials using the\n * {AWS.STS.assumeRoleWithWebIdentity} service operation. This operation\n * requires a `RoleArn` containing the ARN of the IAM trust policy for the\n * application for which credentials will be given. In addition, the\n * `WebIdentityToken` must be set to the token provided by the identity\n * provider. See {constructor} for an example on creating a credentials\n * object with proper `RoleArn` and `WebIdentityToken` values.\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the WebIdentityToken, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.WebIdentityToken = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the\n * `params.WebIdentityToken` property.\n * @!attribute data\n * @return [map] the raw data response from the call to\n * {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get\n * access to other properties from the response.\n */\nAWS.WebIdentityCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new credentials object.\n * @param (see AWS.STS.assumeRoleWithWebIdentity)\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.WebIdentityCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/WebIdentity',\n * WebIdentityToken: 'ABCDEFGHIJKLMNOP', // token from identity service\n * RoleSessionName: 'web' // optional name, defaults to web-identity\n * }, {\n * // optionally provide configuration to apply to the underlying AWS.STS service client\n * // if configuration is not provided, then configuration will be pulled from AWS.config\n *\n * // specify timeout options\n * httpOptions: {\n * timeout: 100\n * }\n * });\n * @see AWS.STS.assumeRoleWithWebIdentity\n * @see AWS.Config\n */\n constructor: function WebIdentityCredentials(params, clientConfig) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n this.params.RoleSessionName = this.params.RoleSessionName || 'web-identity';\n this.data = null;\n this._clientConfig = AWS.util.copy(clientConfig || {});\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRoleWithWebIdentity}\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.service.assumeRoleWithWebIdentity(function (err, data) {\n self.data = null;\n if (!err) {\n self.data = data;\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n createClients: function() {\n if (!this.service) {\n var stsConfig = AWS.util.merge({}, this._clientConfig);\n stsConfig.params = this.params;\n this.service = new STS(stsConfig);\n }\n }\n\n});\n","var AWS = require('./core');\nvar util = require('./util');\nvar endpointDiscoveryEnabledEnvs = ['AWS_ENABLE_ENDPOINT_DISCOVERY', 'AWS_ENDPOINT_DISCOVERY_ENABLED'];\n\n/**\n * Generate key (except resources and operation part) to index the endpoints in the cache\n * If input shape has endpointdiscoveryid trait then use\n * accessKey + operation + resources + region + service as cache key\n * If input shape doesn't have endpointdiscoveryid trait then use\n * accessKey + region + service as cache key\n * @return [map] object with keys to index endpoints.\n * @api private\n */\nfunction getCacheKey(request) {\n var service = request.service;\n var api = service.api || {};\n var operations = api.operations;\n var identifiers = {};\n if (service.config.region) {\n identifiers.region = service.config.region;\n }\n if (api.serviceId) {\n identifiers.serviceId = api.serviceId;\n }\n if (service.config.credentials.accessKeyId) {\n identifiers.accessKeyId = service.config.credentials.accessKeyId;\n }\n return identifiers;\n}\n\n/**\n * Recursive helper for marshallCustomIdentifiers().\n * Looks for required string input members that have 'endpointdiscoveryid' trait.\n * @api private\n */\nfunction marshallCustomIdentifiersHelper(result, params, shape) {\n if (!shape || params === undefined || params === null) return;\n if (shape.type === 'structure' && shape.required && shape.required.length > 0) {\n util.arrayEach(shape.required, function(name) {\n var memberShape = shape.members[name];\n if (memberShape.endpointDiscoveryId === true) {\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n result[locationName] = String(params[name]);\n } else {\n marshallCustomIdentifiersHelper(result, params[name], memberShape);\n }\n });\n }\n}\n\n/**\n * Get custom identifiers for cache key.\n * Identifies custom identifiers by checking each shape's `endpointDiscoveryId` trait.\n * @param [object] request object\n * @param [object] input shape of the given operation's api\n * @api private\n */\nfunction marshallCustomIdentifiers(request, shape) {\n var identifiers = {};\n marshallCustomIdentifiersHelper(identifiers, request.params, shape);\n return identifiers;\n}\n\n/**\n * Call endpoint discovery operation when it's optional.\n * When endpoint is available in cache then use the cached endpoints. If endpoints\n * are unavailable then use regional endpoints and call endpoint discovery operation\n * asynchronously. This is turned off by default.\n * @param [object] request object\n * @api private\n */\nfunction optionalDiscoverEndpoint(request) {\n var service = request.service;\n var api = service.api;\n var operationModel = api.operations ? api.operations[request.operation] : undefined;\n var inputShape = operationModel ? operationModel.input : undefined;\n\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operationModel) cacheKey.operation = operationModel.name;\n }\n var endpoints = AWS.endpointCache.get(cacheKey);\n if (endpoints && endpoints.length === 1 && endpoints[0].Address === '') {\n //endpoint operation is being made but response not yet received\n //or endpoint operation just failed in 1 minute\n return;\n } else if (endpoints && endpoints.length > 0) {\n //found endpoint record from cache\n request.httpRequest.updateEndpoint(endpoints[0].Address);\n } else {\n //endpoint record not in cache or outdated. make discovery operation\n var endpointRequest = service.makeRequest(api.endpointOperation, {\n Operation: operationModel.name,\n Identifiers: identifiers,\n });\n addApiVersionHeader(endpointRequest);\n endpointRequest.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n endpointRequest.removeListener('retry', AWS.EventListeners.Core.RETRY_CHECK);\n //put in a placeholder for endpoints already requested, prevent\n //too much in-flight calls\n AWS.endpointCache.put(cacheKey, [{\n Address: '',\n CachePeriodInMinutes: 1\n }]);\n endpointRequest.send(function(err, data) {\n if (data && data.Endpoints) {\n AWS.endpointCache.put(cacheKey, data.Endpoints);\n } else if (err) {\n AWS.endpointCache.put(cacheKey, [{\n Address: '',\n CachePeriodInMinutes: 1 //not to make more endpoint operation in next 1 minute\n }]);\n }\n });\n }\n}\n\nvar requestQueue = {};\n\n/**\n * Call endpoint discovery operation when it's required.\n * When endpoint is available in cache then use cached ones. If endpoints are\n * unavailable then SDK should call endpoint operation then use returned new\n * endpoint for the api call. SDK will automatically attempt to do endpoint\n * discovery. This is turned off by default\n * @param [object] request object\n * @api private\n */\nfunction requiredDiscoverEndpoint(request, done) {\n var service = request.service;\n var api = service.api;\n var operationModel = api.operations ? api.operations[request.operation] : undefined;\n var inputShape = operationModel ? operationModel.input : undefined;\n\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operationModel) cacheKey.operation = operationModel.name;\n }\n var cacheKeyStr = AWS.EndpointCache.getKeyString(cacheKey);\n var endpoints = AWS.endpointCache.get(cacheKeyStr); //endpoint cache also accepts string keys\n if (endpoints && endpoints.length === 1 && endpoints[0].Address === '') {\n //endpoint operation is being made but response not yet received\n //push request object to a pending queue\n if (!requestQueue[cacheKeyStr]) requestQueue[cacheKeyStr] = [];\n requestQueue[cacheKeyStr].push({request: request, callback: done});\n return;\n } else if (endpoints && endpoints.length > 0) {\n request.httpRequest.updateEndpoint(endpoints[0].Address);\n done();\n } else {\n var endpointRequest = service.makeRequest(api.endpointOperation, {\n Operation: operationModel.name,\n Identifiers: identifiers,\n });\n endpointRequest.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n addApiVersionHeader(endpointRequest);\n\n //put in a placeholder for endpoints already requested, prevent\n //too much in-flight calls\n AWS.endpointCache.put(cacheKeyStr, [{\n Address: '',\n CachePeriodInMinutes: 60 //long-live cache\n }]);\n endpointRequest.send(function(err, data) {\n if (err) {\n request.response.error = util.error(err, { retryable: false });\n AWS.endpointCache.remove(cacheKey);\n\n //fail all the pending requests in batch\n if (requestQueue[cacheKeyStr]) {\n var pendingRequests = requestQueue[cacheKeyStr];\n util.arrayEach(pendingRequests, function(requestContext) {\n requestContext.request.response.error = util.error(err, { retryable: false });\n requestContext.callback();\n });\n delete requestQueue[cacheKeyStr];\n }\n } else if (data) {\n AWS.endpointCache.put(cacheKeyStr, data.Endpoints);\n request.httpRequest.updateEndpoint(data.Endpoints[0].Address);\n\n //update the endpoint for all the pending requests in batch\n if (requestQueue[cacheKeyStr]) {\n var pendingRequests = requestQueue[cacheKeyStr];\n util.arrayEach(pendingRequests, function(requestContext) {\n requestContext.request.httpRequest.updateEndpoint(data.Endpoints[0].Address);\n requestContext.callback();\n });\n delete requestQueue[cacheKeyStr];\n }\n }\n done();\n });\n }\n}\n\n/**\n * add api version header to endpoint operation\n * @api private\n */\nfunction addApiVersionHeader(endpointRequest) {\n var api = endpointRequest.service.api;\n var apiVersion = api.apiVersion;\n if (apiVersion && !endpointRequest.httpRequest.headers['x-amz-api-version']) {\n endpointRequest.httpRequest.headers['x-amz-api-version'] = apiVersion;\n }\n}\n\n/**\n * If api call gets invalid endpoint exception, SDK should attempt to remove the invalid\n * endpoint from cache.\n * @api private\n */\nfunction invalidateCachedEndpoints(response) {\n var error = response.error;\n var httpResponse = response.httpResponse;\n if (error &&\n (error.code === 'InvalidEndpointException' || httpResponse.statusCode === 421)\n ) {\n var request = response.request;\n var operations = request.service.api.operations || {};\n var inputShape = operations[request.operation] ? operations[request.operation].input : undefined;\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operations[request.operation]) cacheKey.operation = operations[request.operation].name;\n }\n AWS.endpointCache.remove(cacheKey);\n }\n}\n\n/**\n * If endpoint is explicitly configured, SDK should not do endpoint discovery in anytime.\n * @param [object] client Service client object.\n * @api private\n */\nfunction hasCustomEndpoint(client) {\n //if set endpoint is set for specific client, enable endpoint discovery will raise an error.\n if (client._originalConfig && client._originalConfig.endpoint && client._originalConfig.endpointDiscoveryEnabled === true) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'Custom endpoint is supplied; endpointDiscoveryEnabled must not be true.'\n });\n };\n var svcConfig = AWS.config[client.serviceIdentifier] || {};\n return Boolean(AWS.config.endpoint || svcConfig.endpoint || (client._originalConfig && client._originalConfig.endpoint));\n}\n\n/**\n * @api private\n */\nfunction isFalsy(value) {\n return ['false', '0'].indexOf(value) >= 0;\n}\n\n/**\n * If endpoint discovery should perform for this request when no operation requires endpoint\n * discovery for the given service.\n * SDK performs config resolution in order like below:\n * 1. If set in client configuration.\n * 2. If set in env AWS_ENABLE_ENDPOINT_DISCOVERY.\n * 3. If set in shared ini config file with key 'endpoint_discovery_enabled'.\n * @param [object] request request object.\n * @returns [boolean|undefined] if endpoint discovery config is not set in any source, this\n * function returns undefined\n * @api private\n */\nfunction resolveEndpointDiscoveryConfig(request) {\n var service = request.service || {};\n if (service.config.endpointDiscoveryEnabled !== undefined) {\n return service.config.endpointDiscoveryEnabled;\n }\n\n //shared ini file is only available in Node\n //not to check env in browser\n if (util.isBrowser()) return undefined;\n\n // If any of recognized endpoint discovery config env is set\n for (var i = 0; i < endpointDiscoveryEnabledEnvs.length; i++) {\n var env = endpointDiscoveryEnabledEnvs[i];\n if (Object.prototype.hasOwnProperty.call(process.env, env)) {\n if (process.env[env] === '' || process.env[env] === undefined) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'environmental variable ' + env + ' cannot be set to nothing'\n });\n }\n return !isFalsy(process.env[env]);\n }\n }\n\n var configFile = {};\n try {\n configFile = AWS.util.iniLoader ? AWS.util.iniLoader.loadFrom({\n isConfig: true,\n filename: process.env[AWS.util.sharedConfigFileEnv]\n }) : {};\n } catch (e) {}\n var sharedFileConfig = configFile[\n process.env.AWS_PROFILE || AWS.util.defaultProfile\n ] || {};\n if (Object.prototype.hasOwnProperty.call(sharedFileConfig, 'endpoint_discovery_enabled')) {\n if (sharedFileConfig.endpoint_discovery_enabled === undefined) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'config file entry \\'endpoint_discovery_enabled\\' cannot be set to nothing'\n });\n }\n return !isFalsy(sharedFileConfig.endpoint_discovery_enabled);\n }\n return undefined;\n}\n\n/**\n * attach endpoint discovery logic to request object\n * @param [object] request\n * @api private\n */\nfunction discoverEndpoint(request, done) {\n var service = request.service || {};\n if (hasCustomEndpoint(service) || request.isPresigned()) return done();\n\n var operations = service.api.operations || {};\n var operationModel = operations[request.operation];\n var isEndpointDiscoveryRequired = operationModel ? operationModel.endpointDiscoveryRequired : 'NULL';\n var isEnabled = resolveEndpointDiscoveryConfig(request);\n var hasRequiredEndpointDiscovery = service.api.hasRequiredEndpointDiscovery;\n if (isEnabled || hasRequiredEndpointDiscovery) {\n // Once a customer enables endpoint discovery, the SDK should start appending\n // the string endpoint-discovery to the user-agent on all requests.\n request.httpRequest.appendToUserAgent('endpoint-discovery');\n }\n switch (isEndpointDiscoveryRequired) {\n case 'OPTIONAL':\n if (isEnabled || hasRequiredEndpointDiscovery) {\n // For a given service; if at least one operation requires endpoint discovery then the SDK must enable endpoint discovery\n // by default for all operations of that service, including operations where endpoint discovery is optional.\n optionalDiscoverEndpoint(request);\n request.addNamedListener('INVALIDATE_CACHED_ENDPOINTS', 'extractError', invalidateCachedEndpoints);\n }\n done();\n break;\n case 'REQUIRED':\n if (isEnabled === false) {\n // For a given operation; if endpoint discovery is required and it has been disabled on the SDK client,\n // then the SDK must return a clear and actionable exception.\n request.response.error = util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'Endpoint Discovery is disabled but ' + service.api.className + '.' + request.operation +\n '() requires it. Please check your configurations.'\n });\n done();\n break;\n }\n request.addNamedListener('INVALIDATE_CACHED_ENDPOINTS', 'extractError', invalidateCachedEndpoints);\n requiredDiscoverEndpoint(request, done);\n break;\n case 'NULL':\n default:\n done();\n break;\n }\n}\n\nmodule.exports = {\n discoverEndpoint: discoverEndpoint,\n requiredDiscoverEndpoint: requiredDiscoverEndpoint,\n optionalDiscoverEndpoint: optionalDiscoverEndpoint,\n marshallCustomIdentifiers: marshallCustomIdentifiers,\n getCacheKey: getCacheKey,\n invalidateCachedEndpoint: invalidateCachedEndpoints,\n};\n","var AWS = require('../core');\nvar util = AWS.util;\nvar typeOf = require('./types').typeOf;\nvar DynamoDBSet = require('./set');\nvar NumberValue = require('./numberValue');\n\nAWS.DynamoDB.Converter = {\n /**\n * Convert a JavaScript value to its equivalent DynamoDB AttributeValue type\n *\n * @param data [any] The data to convert to a DynamoDB AttributeValue\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n * @return [map] An object in the Amazon DynamoDB AttributeValue format\n *\n * @see AWS.DynamoDB.Converter.marshall AWS.DynamoDB.Converter.marshall to\n * convert entire records (rather than individual attributes)\n */\n input: function convertInput(data, options) {\n options = options || {};\n var type = typeOf(data);\n if (type === 'Object') {\n return formatMap(data, options);\n } else if (type === 'Array') {\n return formatList(data, options);\n } else if (type === 'Set') {\n return formatSet(data, options);\n } else if (type === 'String') {\n if (data.length === 0 && options.convertEmptyValues) {\n return convertInput(null);\n }\n return { S: data };\n } else if (type === 'Number' || type === 'NumberValue') {\n return { N: data.toString() };\n } else if (type === 'Binary') {\n if (data.length === 0 && options.convertEmptyValues) {\n return convertInput(null);\n }\n return { B: data };\n } else if (type === 'Boolean') {\n return { BOOL: data };\n } else if (type === 'null') {\n return { NULL: true };\n } else if (type !== 'undefined' && type !== 'Function') {\n // this value has a custom constructor\n return formatMap(data, options);\n }\n },\n\n /**\n * Convert a JavaScript object into a DynamoDB record.\n *\n * @param data [any] The data to convert to a DynamoDB record\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [map] An object in the DynamoDB record format.\n *\n * @example Convert a JavaScript object into a DynamoDB record\n * var marshalled = AWS.DynamoDB.Converter.marshall({\n * string: 'foo',\n * list: ['fizz', 'buzz', 'pop'],\n * map: {\n * nestedMap: {\n * key: 'value',\n * }\n * },\n * number: 123,\n * nullValue: null,\n * boolValue: true,\n * stringSet: new DynamoDBSet(['foo', 'bar', 'baz'])\n * });\n */\n marshall: function marshallItem(data, options) {\n return AWS.DynamoDB.Converter.input(data, options).M;\n },\n\n /**\n * Convert a DynamoDB AttributeValue object to its equivalent JavaScript type.\n *\n * @param data [map] An object in the Amazon DynamoDB AttributeValue format\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [Object|Array|String|Number|Boolean|null]\n *\n * @see AWS.DynamoDB.Converter.unmarshall AWS.DynamoDB.Converter.unmarshall to\n * convert entire records (rather than individual attributes)\n */\n output: function convertOutput(data, options) {\n options = options || {};\n var list, map, i;\n for (var type in data) {\n var values = data[type];\n if (type === 'M') {\n map = {};\n for (var key in values) {\n map[key] = convertOutput(values[key], options);\n }\n return map;\n } else if (type === 'L') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(convertOutput(values[i], options));\n }\n return list;\n } else if (type === 'SS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(values[i] + '');\n }\n return new DynamoDBSet(list);\n } else if (type === 'NS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(convertNumber(values[i], options.wrapNumbers));\n }\n return new DynamoDBSet(list);\n } else if (type === 'BS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(AWS.util.buffer.toBuffer(values[i]));\n }\n return new DynamoDBSet(list);\n } else if (type === 'S') {\n return values + '';\n } else if (type === 'N') {\n return convertNumber(values, options.wrapNumbers);\n } else if (type === 'B') {\n return util.buffer.toBuffer(values);\n } else if (type === 'BOOL') {\n return (values === 'true' || values === 'TRUE' || values === true);\n } else if (type === 'NULL') {\n return null;\n }\n }\n },\n\n /**\n * Convert a DynamoDB record into a JavaScript object.\n *\n * @param data [any] The DynamoDB record\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [map] An object whose properties have been converted from\n * DynamoDB's AttributeValue format into their corresponding native\n * JavaScript types.\n *\n * @example Convert a record received from a DynamoDB stream\n * var unmarshalled = AWS.DynamoDB.Converter.unmarshall({\n * string: {S: 'foo'},\n * list: {L: [{S: 'fizz'}, {S: 'buzz'}, {S: 'pop'}]},\n * map: {\n * M: {\n * nestedMap: {\n * M: {\n * key: {S: 'value'}\n * }\n * }\n * }\n * },\n * number: {N: '123'},\n * nullValue: {NULL: true},\n * boolValue: {BOOL: true}\n * });\n */\n unmarshall: function unmarshall(data, options) {\n return AWS.DynamoDB.Converter.output({M: data}, options);\n }\n};\n\n/**\n * @api private\n * @param data [Array]\n * @param options [map]\n */\nfunction formatList(data, options) {\n var list = {L: []};\n for (var i = 0; i < data.length; i++) {\n list['L'].push(AWS.DynamoDB.Converter.input(data[i], options));\n }\n return list;\n}\n\n/**\n * @api private\n * @param value [String]\n * @param wrapNumbers [Boolean]\n */\nfunction convertNumber(value, wrapNumbers) {\n return wrapNumbers ? new NumberValue(value) : Number(value);\n}\n\n/**\n * @api private\n * @param data [map]\n * @param options [map]\n */\nfunction formatMap(data, options) {\n var map = {M: {}};\n for (var key in data) {\n var formatted = AWS.DynamoDB.Converter.input(data[key], options);\n if (formatted !== void 0) {\n map['M'][key] = formatted;\n }\n }\n return map;\n}\n\n/**\n * @api private\n */\nfunction formatSet(data, options) {\n options = options || {};\n var values = data.values;\n if (options.convertEmptyValues) {\n values = filterEmptySetValues(data);\n if (values.length === 0) {\n return AWS.DynamoDB.Converter.input(null);\n }\n }\n\n var map = {};\n switch (data.type) {\n case 'String': map['SS'] = values; break;\n case 'Binary': map['BS'] = values; break;\n case 'Number': map['NS'] = values.map(function (value) {\n return value.toString();\n });\n }\n return map;\n}\n\n/**\n * @api private\n */\nfunction filterEmptySetValues(set) {\n var nonEmptyValues = [];\n var potentiallyEmptyTypes = {\n String: true,\n Binary: true,\n Number: false\n };\n if (potentiallyEmptyTypes[set.type]) {\n for (var i = 0; i < set.values.length; i++) {\n if (set.values[i].length === 0) {\n continue;\n }\n nonEmptyValues.push(set.values[i]);\n }\n\n return nonEmptyValues;\n }\n\n return set.values;\n}\n\n/**\n * @api private\n */\nmodule.exports = AWS.DynamoDB.Converter;\n","var AWS = require('../core');\nvar Translator = require('./translator');\nvar DynamoDBSet = require('./set');\n\n/**\n * The document client simplifies working with items in Amazon DynamoDB\n * by abstracting away the notion of attribute values. This abstraction\n * annotates native JavaScript types supplied as input parameters, as well\n * as converts annotated response data to native JavaScript types.\n *\n * ## Marshalling Input and Unmarshalling Response Data\n *\n * The document client affords developers the use of native JavaScript types\n * instead of `AttributeValue`s to simplify the JavaScript development\n * experience with Amazon DynamoDB. JavaScript objects passed in as parameters\n * are marshalled into `AttributeValue` shapes required by Amazon DynamoDB.\n * Responses from DynamoDB are unmarshalled into plain JavaScript objects\n * by the `DocumentClient`. The `DocumentClient`, does not accept\n * `AttributeValue`s in favor of native JavaScript types.\n *\n * | JavaScript Type | DynamoDB AttributeValue |\n * |:----------------------------------------------------------------------:|-------------------------|\n * | String | S |\n * | Number | N |\n * | Boolean | BOOL |\n * | null | NULL |\n * | Array | L |\n * | Object | M |\n * | Buffer, File, Blob, ArrayBuffer, DataView, and JavaScript typed arrays | B |\n *\n * ## Support for Sets\n *\n * The `DocumentClient` offers a convenient way to create sets from\n * JavaScript Arrays. The type of set is inferred from the first element\n * in the array. DynamoDB supports string, number, and binary sets. To\n * learn more about supported types see the\n * [Amazon DynamoDB Data Model Documentation](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html)\n * For more information see {AWS.DynamoDB.DocumentClient.createSet}\n *\n */\nAWS.DynamoDB.DocumentClient = AWS.util.inherit({\n\n /**\n * Creates a DynamoDB document client 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.DynamoDB] An optional pre-configured instance\n * of the AWS.DynamoDB service object. This instance's config will be\n * copied to a new instance used by this client. You should not need to\n * retain a reference to the input object, and may destroy it or allow it\n * to be garbage collected.\n * @option options convertEmptyValues [Boolean] set to true if you would like\n * the document client to convert empty values (0-length strings, binary\n * buffers, and sets) to be converted to NULL types when persisting to\n * DynamoDB.\n * @option options wrapNumbers [Boolean] Set to true to return numbers as a\n * NumberValue object instead of converting them to native JavaScript numbers.\n * This allows for the safe round-trip transport of numbers of arbitrary size.\n * @see AWS.DynamoDB.constructor\n *\n */\n constructor: function DocumentClient(options) {\n var self = this;\n self.options = options || {};\n self.configure(self.options);\n },\n\n /**\n * @api private\n */\n configure: function configure(options) {\n var self = this;\n self.service = options.service;\n self.bindServiceObject(options);\n self.attrValue = options.attrValue =\n self.service.api.operations.putItem.input.members.Item.value.shape;\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(options) {\n var self = this;\n options = options || {};\n\n if (!self.service) {\n self.service = new AWS.DynamoDB(options);\n } else {\n var config = AWS.util.copy(self.service.config);\n self.service = new self.service.constructor.__super__(config);\n self.service.config.params =\n AWS.util.merge(self.service.config.params || {}, options.params);\n }\n },\n\n /**\n * @api private\n */\n makeServiceRequest: function(operation, params, callback) {\n var self = this;\n var request = self.service[operation](params);\n self.setupRequest(request);\n self.setupResponse(request);\n if (typeof callback === 'function') {\n request.send(callback);\n }\n return request;\n },\n\n /**\n * @api private\n */\n serviceClientOperationsMap: {\n batchGet: 'batchGetItem',\n batchWrite: 'batchWriteItem',\n delete: 'deleteItem',\n get: 'getItem',\n put: 'putItem',\n query: 'query',\n scan: 'scan',\n update: 'updateItem',\n transactGet: 'transactGetItems',\n transactWrite: 'transactWriteItems'\n },\n\n /**\n * Returns the attributes of one or more items from one or more tables\n * by delegating to `AWS.DynamoDB.batchGetItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.batchGetItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.batchGetItem\n * @example Get items from multiple tables\n * var params = {\n * RequestItems: {\n * 'Table-1': {\n * Keys: [\n * {\n * HashKey: 'haskey',\n * NumberRangeKey: 1\n * }\n * ]\n * },\n * 'Table-2': {\n * Keys: [\n * { foo: 'bar' },\n * ]\n * }\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.batchGet(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n batchGet: function(params, callback) {\n var operation = this.serviceClientOperationsMap['batchGet'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Puts or deletes multiple items in one or more tables by delegating\n * to `AWS.DynamoDB.batchWriteItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.batchWriteItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.batchWriteItem\n * @example Write to and delete from a table\n * var params = {\n * RequestItems: {\n * 'Table-1': [\n * {\n * DeleteRequest: {\n * Key: { HashKey: 'someKey' }\n * }\n * },\n * {\n * PutRequest: {\n * Item: {\n * HashKey: 'anotherKey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar' }\n * }\n * }\n * }\n * ]\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.batchWrite(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n batchWrite: function(params, callback) {\n var operation = this.serviceClientOperationsMap['batchWrite'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Deletes a single item in a table by primary key by delegating to\n * `AWS.DynamoDB.deleteItem()`\n *\n * Supply the same parameters as {AWS.DynamoDB.deleteItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.deleteItem\n * @example Delete an item from a table\n * var params = {\n * TableName : 'Table',\n * Key: {\n * HashKey: 'hashkey',\n * NumberRangeKey: 1\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.delete(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n delete: function(params, callback) {\n var operation = this.serviceClientOperationsMap['delete'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Returns a set of attributes for the item with the given primary key\n * by delegating to `AWS.DynamoDB.getItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.getItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.getItem\n * @example Get an item from a table\n * var params = {\n * TableName : 'Table',\n * Key: {\n * HashKey: 'hashkey'\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.get(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n get: function(params, callback) {\n var operation = this.serviceClientOperationsMap['get'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Creates a new item, or replaces an old item with a new item by\n * delegating to `AWS.DynamoDB.putItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.putItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.putItem\n * @example Create a new item in a table\n * var params = {\n * TableName : 'Table',\n * Item: {\n * HashKey: 'haskey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar'},\n * NullAttribute: null\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.put(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n put: function(params, callback) {\n var operation = this.serviceClientOperationsMap['put'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Edits an existing item's attributes, or adds a new item to the table if\n * it does not already exist by delegating to `AWS.DynamoDB.updateItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.updateItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.updateItem\n * @example Update an item with expressions\n * var params = {\n * TableName: 'Table',\n * Key: { HashKey : 'hashkey' },\n * UpdateExpression: 'set #a = :x + :y',\n * ConditionExpression: '#a < :MAX',\n * ExpressionAttributeNames: {'#a' : 'Sum'},\n * ExpressionAttributeValues: {\n * ':x' : 20,\n * ':y' : 45,\n * ':MAX' : 100,\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.update(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n update: function(params, callback) {\n var operation = this.serviceClientOperationsMap['update'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Returns one or more items and item attributes by accessing every item\n * in a table or a secondary index.\n *\n * Supply the same parameters as {AWS.DynamoDB.scan} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.scan\n * @example Scan the table with a filter expression\n * var params = {\n * TableName : 'Table',\n * FilterExpression : 'Year = :this_year',\n * ExpressionAttributeValues : {':this_year' : 2015}\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.scan(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n scan: function(params, callback) {\n var operation = this.serviceClientOperationsMap['scan'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Directly access items from a table by primary key or a secondary index.\n *\n * Supply the same parameters as {AWS.DynamoDB.query} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.query\n * @example Query an index\n * var params = {\n * TableName: 'Table',\n * IndexName: 'Index',\n * KeyConditionExpression: 'HashKey = :hkey and RangeKey > :rkey',\n * ExpressionAttributeValues: {\n * ':hkey': 'key',\n * ':rkey': 2015\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.query(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n query: function(params, callback) {\n var operation = this.serviceClientOperationsMap['query'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Synchronous write operation that groups up to 100 action requests.\n *\n * Supply the same parameters as {AWS.DynamoDB.transactWriteItems} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.transactWriteItems\n * @example Get items from multiple tables\n * var params = {\n * TransactItems: [{\n * Put: {\n * TableName : 'Table0',\n * Item: {\n * HashKey: 'haskey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar'},\n * NullAttribute: null\n * }\n * }\n * }, {\n * Update: {\n * TableName: 'Table1',\n * Key: { HashKey : 'hashkey' },\n * UpdateExpression: 'set #a = :x + :y',\n * ConditionExpression: '#a < :MAX',\n * ExpressionAttributeNames: {'#a' : 'Sum'},\n * ExpressionAttributeValues: {\n * ':x' : 20,\n * ':y' : 45,\n * ':MAX' : 100,\n * }\n * }\n * }]\n * };\n *\n * documentClient.transactWrite(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n */\n transactWrite: function(params, callback) {\n var operation = this.serviceClientOperationsMap['transactWrite'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Atomically retrieves multiple items from one or more tables (but not from indexes)\n * in a single account and region.\n *\n * Supply the same parameters as {AWS.DynamoDB.transactGetItems} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.transactGetItems\n * @example Get items from multiple tables\n * var params = {\n * TransactItems: [{\n * Get: {\n * TableName : 'Table0',\n * Key: {\n * HashKey: 'hashkey0'\n * }\n * }\n * }, {\n * Get: {\n * TableName : 'Table1',\n * Key: {\n * HashKey: 'hashkey1'\n * }\n * }\n * }]\n * };\n *\n * documentClient.transactGet(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n */\n transactGet: function(params, callback) {\n var operation = this.serviceClientOperationsMap['transactGet'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Creates a set of elements inferring the type of set from\n * the type of the first element. Amazon DynamoDB currently supports\n * the number sets, string sets, and binary sets. For more information\n * about DynamoDB data types see the documentation on the\n * [Amazon DynamoDB Data Model](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModel.DataTypes).\n *\n * @param list [Array] Collection to represent your DynamoDB Set\n * @param options [map]\n * * **validate** [Boolean] set to true if you want to validate the type\n * of each element in the set. Defaults to `false`.\n * @example Creating a number set\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * var params = {\n * Item: {\n * hashkey: 'hashkey'\n * numbers: documentClient.createSet([1, 2, 3]);\n * }\n * };\n *\n * documentClient.put(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n createSet: function(list, options) {\n options = options || {};\n return new DynamoDBSet(list, options);\n },\n\n /**\n * @api private\n */\n getTranslator: function() {\n return new Translator(this.options);\n },\n\n /**\n * @api private\n */\n setupRequest: function setupRequest(request) {\n var self = this;\n var translator = self.getTranslator();\n var operation = request.operation;\n var inputShape = request.service.api.operations[operation].input;\n request._events.validate.unshift(function(req) {\n req.rawParams = AWS.util.copy(req.params);\n req.params = translator.translateInput(req.rawParams, inputShape);\n });\n },\n\n /**\n * @api private\n */\n setupResponse: function setupResponse(request) {\n var self = this;\n var translator = self.getTranslator();\n var outputShape = self.service.api.operations[request.operation].output;\n request.on('extractData', function(response) {\n response.data = translator.translateOutput(response.data, outputShape);\n });\n\n var response = request.response;\n response.nextPage = function(cb) {\n var resp = this;\n var req = resp.request;\n var config;\n var service = req.service;\n var operation = req.operation;\n try {\n config = service.paginationConfig(operation, true);\n } catch (e) { resp.error = e; }\n\n if (!resp.hasNextPage()) {\n if (cb) cb(resp.error, null);\n else if (resp.error) throw resp.error;\n return null;\n }\n\n var params = AWS.util.copy(req.rawParams);\n if (!resp.nextPageTokens) {\n return cb ? cb(null, null) : null;\n } else {\n var inputTokens = config.inputToken;\n if (typeof inputTokens === 'string') inputTokens = [inputTokens];\n for (var i = 0; i < inputTokens.length; i++) {\n params[inputTokens[i]] = resp.nextPageTokens[i];\n }\n return self[operation](params, cb);\n }\n };\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.DynamoDB.DocumentClient;\n","var util = require('../core').util;\n\n/**\n * An object recognizable as a numeric value that stores the underlying number\n * as a string.\n *\n * Intended to be a deserialization target for the DynamoDB Document Client when\n * the `wrapNumbers` flag is set. This allows for numeric values that lose\n * precision when converted to JavaScript's `number` type.\n */\nvar DynamoDBNumberValue = util.inherit({\n constructor: function NumberValue(value) {\n this.wrapperName = 'NumberValue';\n this.value = value.toString();\n },\n\n /**\n * Render the underlying value as a number when converting to JSON.\n */\n toJSON: function () {\n return this.toNumber();\n },\n\n /**\n * Convert the underlying value to a JavaScript number.\n */\n toNumber: function () {\n return Number(this.value);\n },\n\n /**\n * Return a string representing the unaltered value provided to the\n * constructor.\n */\n toString: function () {\n return this.value;\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = DynamoDBNumberValue;\n","var util = require('../core').util;\nvar typeOf = require('./types').typeOf;\n\n/**\n * @api private\n */\nvar memberTypeToSetType = {\n 'String': 'String',\n 'Number': 'Number',\n 'NumberValue': 'Number',\n 'Binary': 'Binary'\n};\n\n/**\n * @api private\n */\nvar DynamoDBSet = util.inherit({\n\n constructor: function Set(list, options) {\n options = options || {};\n this.wrapperName = 'Set';\n this.initialize(list, options.validate);\n },\n\n initialize: function(list, validate) {\n var self = this;\n self.values = [].concat(list);\n self.detectType();\n if (validate) {\n self.validate();\n }\n },\n\n detectType: function() {\n this.type = memberTypeToSetType[typeOf(this.values[0])];\n if (!this.type) {\n throw util.error(new Error(), {\n code: 'InvalidSetType',\n message: 'Sets can contain string, number, or binary values'\n });\n }\n },\n\n validate: function() {\n var self = this;\n var length = self.values.length;\n var values = self.values;\n for (var i = 0; i < length; i++) {\n if (memberTypeToSetType[typeOf(values[i])] !== self.type) {\n throw util.error(new Error(), {\n code: 'InvalidType',\n message: self.type + ' Set contains ' + typeOf(values[i]) + ' value'\n });\n }\n }\n },\n\n /**\n * Render the underlying values only when converting to JSON.\n */\n toJSON: function() {\n var self = this;\n return self.values;\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = DynamoDBSet;\n","var util = require('../core').util;\nvar convert = require('./converter');\n\nvar Translator = function(options) {\n options = options || {};\n this.attrValue = options.attrValue;\n this.convertEmptyValues = Boolean(options.convertEmptyValues);\n this.wrapNumbers = Boolean(options.wrapNumbers);\n};\n\nTranslator.prototype.translateInput = function(value, shape) {\n this.mode = 'input';\n return this.translate(value, shape);\n};\n\nTranslator.prototype.translateOutput = function(value, shape) {\n this.mode = 'output';\n return this.translate(value, shape);\n};\n\nTranslator.prototype.translate = function(value, shape) {\n var self = this;\n if (!shape || value === undefined) return undefined;\n\n if (shape.shape === self.attrValue) {\n return convert[self.mode](value, {\n convertEmptyValues: self.convertEmptyValues,\n wrapNumbers: self.wrapNumbers,\n });\n }\n switch (shape.type) {\n case 'structure': return self.translateStructure(value, shape);\n case 'map': return self.translateMap(value, shape);\n case 'list': return self.translateList(value, shape);\n default: return self.translateScalar(value, shape);\n }\n};\n\nTranslator.prototype.translateStructure = function(structure, shape) {\n var self = this;\n if (structure == null) return undefined;\n\n var struct = {};\n util.each(structure, function(name, value) {\n var memberShape = shape.members[name];\n if (memberShape) {\n var result = self.translate(value, memberShape);\n if (result !== undefined) struct[name] = result;\n }\n });\n return struct;\n};\n\nTranslator.prototype.translateList = function(list, shape) {\n var self = this;\n if (list == null) return undefined;\n\n var out = [];\n util.arrayEach(list, function(value) {\n var result = self.translate(value, shape.member);\n if (result === undefined) out.push(null);\n else out.push(result);\n });\n return out;\n};\n\nTranslator.prototype.translateMap = function(map, shape) {\n var self = this;\n if (map == null) return undefined;\n\n var out = {};\n util.each(map, function(key, value) {\n var result = self.translate(value, shape.value);\n if (result === undefined) out[key] = null;\n else out[key] = result;\n });\n return out;\n};\n\nTranslator.prototype.translateScalar = function(value, shape) {\n return shape.toType(value);\n};\n\n/**\n * @api private\n */\nmodule.exports = Translator;\n","var util = require('../core').util;\n\nfunction typeOf(data) {\n if (data === null && typeof data === 'object') {\n return 'null';\n } else if (data !== undefined && isBinary(data)) {\n return 'Binary';\n } else if (data !== undefined && data.constructor) {\n return data.wrapperName || util.typeName(data.constructor);\n } else if (data !== undefined && typeof data === 'object') {\n // this object is the result of Object.create(null), hence the absence of a\n // defined constructor\n return 'Object';\n } else {\n return 'undefined';\n }\n}\n\nfunction isBinary(data) {\n var types = [\n 'Buffer', 'File', 'Blob', 'ArrayBuffer', 'DataView',\n 'Int8Array', 'Uint8Array', 'Uint8ClampedArray',\n 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array',\n 'Float32Array', 'Float64Array'\n ];\n if (util.isNode()) {\n var Stream = util.stream.Stream;\n if (util.Buffer.isBuffer(data) || data instanceof Stream) {\n return true;\n }\n }\n\n for (var i = 0; i < types.length; i++) {\n if (data !== undefined && data.constructor) {\n if (util.isType(data, types[i])) return true;\n if (util.typeName(data.constructor) === types[i]) return true;\n }\n }\n\n return false;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n typeOf: typeOf,\n isBinary: isBinary\n};\n","var eventMessageChunker = require('../event-stream/event-message-chunker').eventMessageChunker;\nvar parseEvent = require('./parse-event').parseEvent;\n\nfunction createEventStream(body, parser, model) {\n var eventMessages = eventMessageChunker(body);\n\n var events = [];\n\n for (var i = 0; i < eventMessages.length; i++) {\n events.push(parseEvent(parser, eventMessages[i], model));\n }\n\n return events;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n createEventStream: createEventStream\n};\n","/**\n * Takes in a buffer of event messages and splits them into individual messages.\n * @param {Buffer} buffer\n * @api private\n */\nfunction eventMessageChunker(buffer) {\n /** @type Buffer[] */\n var messages = [];\n var offset = 0;\n\n while (offset < buffer.length) {\n var totalLength = buffer.readInt32BE(offset);\n\n // create new buffer for individual message (shares memory with original)\n var message = buffer.slice(offset, totalLength + offset);\n // increment offset to it starts at the next message\n offset += totalLength;\n\n messages.push(message);\n }\n\n return messages;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n eventMessageChunker: eventMessageChunker\n};\n","var util = require('../core').util;\nvar toBuffer = util.buffer.toBuffer;\n\n/**\n * A lossless representation of a signed, 64-bit integer. Instances of this\n * class may be used in arithmetic expressions as if they were numeric\n * primitives, but the binary representation will be preserved unchanged as the\n * `bytes` property of the object. The bytes should be encoded as big-endian,\n * two's complement integers.\n * @param {Buffer} bytes\n *\n * @api private\n */\nfunction Int64(bytes) {\n if (bytes.length !== 8) {\n throw new Error('Int64 buffers must be exactly 8 bytes');\n }\n if (!util.Buffer.isBuffer(bytes)) bytes = toBuffer(bytes);\n\n this.bytes = bytes;\n}\n\n/**\n * @param {number} number\n * @returns {Int64}\n *\n * @api private\n */\nInt64.fromNumber = function(number) {\n if (number > 9223372036854775807 || number < -9223372036854775808) {\n throw new Error(\n number + ' is too large (or, if negative, too small) to represent as an Int64'\n );\n }\n\n var bytes = new Uint8Array(8);\n for (\n var i = 7, remaining = Math.abs(Math.round(number));\n i > -1 && remaining > 0;\n i--, remaining /= 256\n ) {\n bytes[i] = remaining;\n }\n\n if (number < 0) {\n negate(bytes);\n }\n\n return new Int64(bytes);\n};\n\n/**\n * @returns {number}\n *\n * @api private\n */\nInt64.prototype.valueOf = function() {\n var bytes = this.bytes.slice(0);\n var negative = bytes[0] & 128;\n if (negative) {\n negate(bytes);\n }\n\n return parseInt(bytes.toString('hex'), 16) * (negative ? -1 : 1);\n};\n\nInt64.prototype.toString = function() {\n return String(this.valueOf());\n};\n\n/**\n * @param {Buffer} bytes\n *\n * @api private\n */\nfunction negate(bytes) {\n for (var i = 0; i < 8; i++) {\n bytes[i] ^= 0xFF;\n }\n for (var i = 7; i > -1; i--) {\n bytes[i]++;\n if (bytes[i] !== 0) {\n break;\n }\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n Int64: Int64\n};\n","var parseMessage = require('./parse-message').parseMessage;\n\n/**\n *\n * @param {*} parser\n * @param {Buffer} message\n * @param {*} shape\n * @api private\n */\nfunction parseEvent(parser, message, shape) {\n var parsedMessage = parseMessage(message);\n\n // check if message is an event or error\n var messageType = parsedMessage.headers[':message-type'];\n if (messageType) {\n if (messageType.value === 'error') {\n throw parseError(parsedMessage);\n } else if (messageType.value !== 'event') {\n // not sure how to parse non-events/non-errors, ignore for now\n return;\n }\n }\n\n // determine event type\n var eventType = parsedMessage.headers[':event-type'];\n // check that the event type is modeled\n var eventModel = shape.members[eventType.value];\n if (!eventModel) {\n return;\n }\n\n var result = {};\n // check if an event payload exists\n var eventPayloadMemberName = eventModel.eventPayloadMemberName;\n if (eventPayloadMemberName) {\n var payloadShape = eventModel.members[eventPayloadMemberName];\n // if the shape is binary, return the byte array\n if (payloadShape.type === 'binary') {\n result[eventPayloadMemberName] = parsedMessage.body;\n } else {\n result[eventPayloadMemberName] = parser.parse(parsedMessage.body.toString(), payloadShape);\n }\n }\n\n // read event headers\n var eventHeaderNames = eventModel.eventHeaderMemberNames;\n for (var i = 0; i < eventHeaderNames.length; i++) {\n var name = eventHeaderNames[i];\n if (parsedMessage.headers[name]) {\n // parse the header!\n result[name] = eventModel.members[name].toType(parsedMessage.headers[name].value);\n }\n }\n\n var output = {};\n output[eventType.value] = result;\n return output;\n}\n\nfunction parseError(message) {\n var errorCode = message.headers[':error-code'];\n var errorMessage = message.headers[':error-message'];\n var error = new Error(errorMessage.value || errorMessage);\n error.code = error.name = errorCode.value || errorCode;\n return error;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n parseEvent: parseEvent\n};\n","var Int64 = require('./int64').Int64;\n\nvar splitMessage = require('./split-message').splitMessage;\n\nvar BOOLEAN_TAG = 'boolean';\nvar BYTE_TAG = 'byte';\nvar SHORT_TAG = 'short';\nvar INT_TAG = 'integer';\nvar LONG_TAG = 'long';\nvar BINARY_TAG = 'binary';\nvar STRING_TAG = 'string';\nvar TIMESTAMP_TAG = 'timestamp';\nvar UUID_TAG = 'uuid';\n\n/**\n * @api private\n *\n * @param {Buffer} headers\n */\nfunction parseHeaders(headers) {\n var out = {};\n var position = 0;\n while (position < headers.length) {\n var nameLength = headers.readUInt8(position++);\n var name = headers.slice(position, position + nameLength).toString();\n position += nameLength;\n switch (headers.readUInt8(position++)) {\n case 0 /* boolTrue */:\n out[name] = {\n type: BOOLEAN_TAG,\n value: true\n };\n break;\n case 1 /* boolFalse */:\n out[name] = {\n type: BOOLEAN_TAG,\n value: false\n };\n break;\n case 2 /* byte */:\n out[name] = {\n type: BYTE_TAG,\n value: headers.readInt8(position++)\n };\n break;\n case 3 /* short */:\n out[name] = {\n type: SHORT_TAG,\n value: headers.readInt16BE(position)\n };\n position += 2;\n break;\n case 4 /* integer */:\n out[name] = {\n type: INT_TAG,\n value: headers.readInt32BE(position)\n };\n position += 4;\n break;\n case 5 /* long */:\n out[name] = {\n type: LONG_TAG,\n value: new Int64(headers.slice(position, position + 8))\n };\n position += 8;\n break;\n case 6 /* byteArray */:\n var binaryLength = headers.readUInt16BE(position);\n position += 2;\n out[name] = {\n type: BINARY_TAG,\n value: headers.slice(position, position + binaryLength)\n };\n position += binaryLength;\n break;\n case 7 /* string */:\n var stringLength = headers.readUInt16BE(position);\n position += 2;\n out[name] = {\n type: STRING_TAG,\n value: headers.slice(\n position,\n position + stringLength\n ).toString()\n };\n position += stringLength;\n break;\n case 8 /* timestamp */:\n out[name] = {\n type: TIMESTAMP_TAG,\n value: new Date(\n new Int64(headers.slice(position, position + 8))\n .valueOf()\n )\n };\n position += 8;\n break;\n case 9 /* uuid */:\n var uuidChars = headers.slice(position, position + 16)\n .toString('hex');\n position += 16;\n out[name] = {\n type: UUID_TAG,\n value: uuidChars.substr(0, 8) + '-' +\n uuidChars.substr(8, 4) + '-' +\n uuidChars.substr(12, 4) + '-' +\n uuidChars.substr(16, 4) + '-' +\n uuidChars.substr(20)\n };\n break;\n default:\n throw new Error('Unrecognized header type tag');\n }\n }\n return out;\n}\n\nfunction parseMessage(message) {\n var parsed = splitMessage(message);\n return { headers: parseHeaders(parsed.headers), body: parsed.body };\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n parseMessage: parseMessage\n};\n","var util = require('../core').util;\nvar toBuffer = util.buffer.toBuffer;\n\n// All prelude components are unsigned, 32-bit integers\nvar PRELUDE_MEMBER_LENGTH = 4;\n// The prelude consists of two components\nvar PRELUDE_LENGTH = PRELUDE_MEMBER_LENGTH * 2;\n// Checksums are always CRC32 hashes.\nvar CHECKSUM_LENGTH = 4;\n// Messages must include a full prelude, a prelude checksum, and a message checksum\nvar MINIMUM_MESSAGE_LENGTH = PRELUDE_LENGTH + CHECKSUM_LENGTH * 2;\n\n/**\n * @api private\n *\n * @param {Buffer} message\n */\nfunction splitMessage(message) {\n if (!util.Buffer.isBuffer(message)) message = toBuffer(message);\n\n if (message.length < MINIMUM_MESSAGE_LENGTH) {\n throw new Error('Provided message too short to accommodate event stream message overhead');\n }\n\n if (message.length !== message.readUInt32BE(0)) {\n throw new Error('Reported message length does not match received message length');\n }\n\n var expectedPreludeChecksum = message.readUInt32BE(PRELUDE_LENGTH);\n\n if (\n expectedPreludeChecksum !== util.crypto.crc32(\n message.slice(0, PRELUDE_LENGTH)\n )\n ) {\n throw new Error(\n 'The prelude checksum specified in the message (' +\n expectedPreludeChecksum +\n ') does not match the calculated CRC32 checksum.'\n );\n }\n\n var expectedMessageChecksum = message.readUInt32BE(message.length - CHECKSUM_LENGTH);\n\n if (\n expectedMessageChecksum !== util.crypto.crc32(\n message.slice(0, message.length - CHECKSUM_LENGTH)\n )\n ) {\n throw new Error(\n 'The message checksum did not match the expected value of ' +\n expectedMessageChecksum\n );\n }\n\n var headersStart = PRELUDE_LENGTH + CHECKSUM_LENGTH;\n var headersEnd = headersStart + message.readUInt32BE(PRELUDE_MEMBER_LENGTH);\n\n return {\n headers: message.slice(headersStart, headersEnd),\n body: message.slice(headersEnd, message.length - CHECKSUM_LENGTH),\n };\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n splitMessage: splitMessage\n};\n","var AWS = require('./core');\nvar SequentialExecutor = require('./sequential_executor');\nvar DISCOVER_ENDPOINT = require('./discover_endpoint').discoverEndpoint;\n/**\n * The namespace used to register global event listeners for request building\n * and sending.\n */\nAWS.EventListeners = {\n /**\n * @!attribute VALIDATE_CREDENTIALS\n * A request listener that validates whether the request is being\n * sent with credentials.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating credentials\n * var listener = AWS.EventListeners.Core.VALIDATE_CREDENTIALS;\n * request.removeListener('validate', listener);\n * @readonly\n * @return [Function]\n * @!attribute VALIDATE_REGION\n * A request listener that validates whether the region is set\n * for a request.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating region configuration\n * var listener = AWS.EventListeners.Core.VALIDATE_REGION;\n * request.removeListener('validate', listener);\n * @readonly\n * @return [Function]\n * @!attribute VALIDATE_PARAMETERS\n * A request listener that validates input parameters in a request.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating parameters\n * var listener = AWS.EventListeners.Core.VALIDATE_PARAMETERS;\n * request.removeListener('validate', listener);\n * @example Disable parameter validation globally\n * AWS.EventListeners.Core.removeListener('validate',\n * AWS.EventListeners.Core.VALIDATE_REGION);\n * @readonly\n * @return [Function]\n * @!attribute SEND\n * A request listener that initiates the HTTP connection for a\n * request being sent. Handles the {AWS.Request~send 'send' Request event}\n * @example Replacing the HTTP handler\n * var listener = AWS.EventListeners.Core.SEND;\n * request.removeListener('send', listener);\n * request.on('send', function(response) {\n * customHandler.send(response);\n * });\n * @return [Function]\n * @readonly\n * @!attribute HTTP_DATA\n * A request listener that reads data from the HTTP connection in order\n * to build the response data.\n * Handles the {AWS.Request~httpData 'httpData' Request event}.\n * Remove this handler if you are overriding the 'httpData' event and\n * do not want extra data processing and buffering overhead.\n * @example Disabling default data processing\n * var listener = AWS.EventListeners.Core.HTTP_DATA;\n * request.removeListener('httpData', listener);\n * @return [Function]\n * @readonly\n */\n Core: {} /* doc hack */\n};\n\n/**\n * @api private\n */\nfunction getOperationAuthtype(req) {\n if (!req.service.api.operations) {\n return '';\n }\n var operation = req.service.api.operations[req.operation];\n return operation ? operation.authtype : '';\n}\n\n/**\n * @api private\n */\nfunction getIdentityType(req) {\n var service = req.service;\n\n if (service.config.signatureVersion) {\n return service.config.signatureVersion;\n }\n\n if (service.api.signatureVersion) {\n return service.api.signatureVersion;\n }\n\n return getOperationAuthtype(req);\n}\n\nAWS.EventListeners = {\n Core: new SequentialExecutor().addNamedListeners(function(add, addAsync) {\n addAsync(\n 'VALIDATE_CREDENTIALS', 'validate',\n function VALIDATE_CREDENTIALS(req, done) {\n if (!req.service.api.signatureVersion && !req.service.config.signatureVersion) return done(); // none\n\n var identityType = getIdentityType(req);\n if (identityType === 'bearer') {\n req.service.config.getToken(function(err) {\n if (err) {\n req.response.error = AWS.util.error(err, {code: 'TokenError'});\n }\n done();\n });\n return;\n }\n\n req.service.config.getCredentials(function(err) {\n if (err) {\n req.response.error = AWS.util.error(err,\n {\n code: 'CredentialsError',\n message: 'Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1'\n }\n );\n }\n done();\n });\n });\n\n add('VALIDATE_REGION', 'validate', function VALIDATE_REGION(req) {\n if (!req.service.isGlobalEndpoint) {\n var dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!req.service.config.region) {\n req.response.error = AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Missing region in config'});\n } else if (!dnsHostRegex.test(req.service.config.region)) {\n req.response.error = AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Invalid region in config'});\n }\n }\n });\n\n add('BUILD_IDEMPOTENCY_TOKENS', 'validate', function BUILD_IDEMPOTENCY_TOKENS(req) {\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n if (!operation) {\n return;\n }\n var idempotentMembers = operation.idempotentMembers;\n if (!idempotentMembers.length) {\n return;\n }\n // creates a copy of params so user's param object isn't mutated\n var params = AWS.util.copy(req.params);\n for (var i = 0, iLen = idempotentMembers.length; i < iLen; i++) {\n if (!params[idempotentMembers[i]]) {\n // add the member\n params[idempotentMembers[i]] = AWS.util.uuid.v4();\n }\n }\n req.params = params;\n });\n\n add('VALIDATE_PARAMETERS', 'validate', function VALIDATE_PARAMETERS(req) {\n if (!req.service.api.operations) {\n return;\n }\n var rules = req.service.api.operations[req.operation].input;\n var validation = req.service.config.paramValidation;\n new AWS.ParamValidator(validation).validate(rules, req.params);\n });\n\n add('COMPUTE_CHECKSUM', 'afterBuild', function COMPUTE_CHECKSUM(req) {\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n if (!operation) {\n return;\n }\n var body = req.httpRequest.body;\n var isNonStreamingPayload = body && (AWS.util.Buffer.isBuffer(body) || typeof body === 'string');\n var headers = req.httpRequest.headers;\n if (\n operation.httpChecksumRequired &&\n req.service.config.computeChecksums &&\n isNonStreamingPayload &&\n !headers['Content-MD5']\n ) {\n var md5 = AWS.util.crypto.md5(body, 'base64');\n headers['Content-MD5'] = md5;\n }\n });\n\n addAsync('COMPUTE_SHA256', 'afterBuild', function COMPUTE_SHA256(req, done) {\n req.haltHandlersOnError();\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n var authtype = operation ? operation.authtype : '';\n if (!req.service.api.signatureVersion && !authtype && !req.service.config.signatureVersion) return done(); // none\n if (req.service.getSignerClass(req) === AWS.Signers.V4) {\n var body = req.httpRequest.body || '';\n if (authtype.indexOf('unsigned-body') >= 0) {\n req.httpRequest.headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD';\n return done();\n }\n AWS.util.computeSha256(body, function(err, sha) {\n if (err) {\n done(err);\n }\n else {\n req.httpRequest.headers['X-Amz-Content-Sha256'] = sha;\n done();\n }\n });\n } else {\n done();\n }\n });\n\n add('SET_CONTENT_LENGTH', 'afterBuild', function SET_CONTENT_LENGTH(req) {\n var authtype = getOperationAuthtype(req);\n var payloadMember = AWS.util.getRequestPayloadShape(req);\n if (req.httpRequest.headers['Content-Length'] === undefined) {\n try {\n var length = AWS.util.string.byteLength(req.httpRequest.body);\n req.httpRequest.headers['Content-Length'] = length;\n } catch (err) {\n if (payloadMember && payloadMember.isStreaming) {\n if (payloadMember.requiresLength) {\n //streaming payload requires length(s3, glacier)\n throw err;\n } else if (authtype.indexOf('unsigned-body') >= 0) {\n //unbounded streaming payload(lex, mediastore)\n req.httpRequest.headers['Transfer-Encoding'] = 'chunked';\n return;\n } else {\n throw err;\n }\n }\n throw err;\n }\n }\n });\n\n add('SET_HTTP_HOST', 'afterBuild', function SET_HTTP_HOST(req) {\n req.httpRequest.headers['Host'] = req.httpRequest.endpoint.host;\n });\n\n add('SET_TRACE_ID', 'afterBuild', function SET_TRACE_ID(req) {\n var traceIdHeaderName = 'X-Amzn-Trace-Id';\n if (AWS.util.isNode() && !Object.hasOwnProperty.call(req.httpRequest.headers, traceIdHeaderName)) {\n var ENV_LAMBDA_FUNCTION_NAME = 'AWS_LAMBDA_FUNCTION_NAME';\n var ENV_TRACE_ID = '_X_AMZN_TRACE_ID';\n var functionName = process.env[ENV_LAMBDA_FUNCTION_NAME];\n var traceId = process.env[ENV_TRACE_ID];\n if (\n typeof functionName === 'string' &&\n functionName.length > 0 &&\n typeof traceId === 'string' &&\n traceId.length > 0\n ) {\n req.httpRequest.headers[traceIdHeaderName] = traceId;\n }\n }\n });\n\n add('RESTART', 'restart', function RESTART() {\n var err = this.response.error;\n if (!err || !err.retryable) return;\n\n this.httpRequest = new AWS.HttpRequest(\n this.service.endpoint,\n this.service.region\n );\n\n if (this.response.retryCount < this.service.config.maxRetries) {\n this.response.retryCount++;\n } else {\n this.response.error = null;\n }\n });\n\n var addToHead = true;\n addAsync('DISCOVER_ENDPOINT', 'sign', DISCOVER_ENDPOINT, addToHead);\n\n addAsync('SIGN', 'sign', function SIGN(req, done) {\n var service = req.service;\n var identityType = getIdentityType(req);\n if (!identityType || identityType.length === 0) return done(); // none\n\n if (identityType === 'bearer') {\n service.config.getToken(function (err, token) {\n if (err) {\n req.response.error = err;\n return done();\n }\n\n try {\n var SignerClass = service.getSignerClass(req);\n var signer = new SignerClass(req.httpRequest);\n signer.addAuthorization(token);\n } catch (e) {\n req.response.error = e;\n }\n done();\n });\n } else {\n service.config.getCredentials(function (err, credentials) {\n if (err) {\n req.response.error = err;\n return done();\n }\n\n try {\n var date = service.getSkewCorrectedDate();\n var SignerClass = service.getSignerClass(req);\n var operations = req.service.api.operations || {};\n var operation = operations[req.operation];\n var signer = new SignerClass(req.httpRequest,\n service.getSigningName(req),\n {\n signatureCache: service.config.signatureCache,\n operation: operation,\n signatureVersion: service.api.signatureVersion\n });\n signer.setServiceClientId(service._clientId);\n\n // clear old authorization headers\n delete req.httpRequest.headers['Authorization'];\n delete req.httpRequest.headers['Date'];\n delete req.httpRequest.headers['X-Amz-Date'];\n\n // add new authorization\n signer.addAuthorization(credentials, date);\n req.signedAt = date;\n } catch (e) {\n req.response.error = e;\n }\n done();\n });\n\n }\n });\n\n add('VALIDATE_RESPONSE', 'validateResponse', function VALIDATE_RESPONSE(resp) {\n if (this.service.successfulResponse(resp, this)) {\n resp.data = {};\n resp.error = null;\n } else {\n resp.data = null;\n resp.error = AWS.util.error(new Error(),\n {code: 'UnknownError', message: 'An unknown error occurred.'});\n }\n });\n\n add('ERROR', 'error', function ERROR(err, resp) {\n var awsQueryCompatible = resp.request.service.api.awsQueryCompatible;\n if (awsQueryCompatible) {\n var headers = resp.httpResponse.headers;\n var queryErrorCode = headers ? headers['x-amzn-query-error'] : undefined;\n if (queryErrorCode && queryErrorCode.includes(';')) {\n resp.error.code = queryErrorCode.split(';')[0];\n }\n }\n }, true);\n\n addAsync('SEND', 'send', function SEND(resp, done) {\n resp.httpResponse._abortCallback = done;\n resp.error = null;\n resp.data = null;\n\n function callback(httpResp) {\n resp.httpResponse.stream = httpResp;\n var stream = resp.request.httpRequest.stream;\n var service = resp.request.service;\n var api = service.api;\n var operationName = resp.request.operation;\n var operation = api.operations[operationName] || {};\n\n httpResp.on('headers', function onHeaders(statusCode, headers, statusMessage) {\n resp.request.emit(\n 'httpHeaders',\n [statusCode, headers, resp, statusMessage]\n );\n\n if (!resp.httpResponse.streaming) {\n if (AWS.HttpClient.streamsApiVersion === 2) { // streams2 API check\n // if we detect event streams, we're going to have to\n // return the stream immediately\n if (operation.hasEventOutput && service.successfulResponse(resp)) {\n // skip reading the IncomingStream\n resp.request.emit('httpDone');\n done();\n return;\n }\n\n httpResp.on('readable', function onReadable() {\n var data = httpResp.read();\n if (data !== null) {\n resp.request.emit('httpData', [data, resp]);\n }\n });\n } else { // legacy streams API\n httpResp.on('data', function onData(data) {\n resp.request.emit('httpData', [data, resp]);\n });\n }\n }\n });\n\n httpResp.on('end', function onEnd() {\n if (!stream || !stream.didCallback) {\n if (AWS.HttpClient.streamsApiVersion === 2 && (operation.hasEventOutput && service.successfulResponse(resp))) {\n // don't concatenate response chunks when streaming event stream data when response is successful\n return;\n }\n resp.request.emit('httpDone');\n done();\n }\n });\n }\n\n function progress(httpResp) {\n httpResp.on('sendProgress', function onSendProgress(value) {\n resp.request.emit('httpUploadProgress', [value, resp]);\n });\n\n httpResp.on('receiveProgress', function onReceiveProgress(value) {\n resp.request.emit('httpDownloadProgress', [value, resp]);\n });\n }\n\n function error(err) {\n if (err.code !== 'RequestAbortedError') {\n var errCode = err.code === 'TimeoutError' ? err.code : 'NetworkingError';\n err = AWS.util.error(err, {\n code: errCode,\n region: resp.request.httpRequest.region,\n hostname: resp.request.httpRequest.endpoint.hostname,\n retryable: true\n });\n }\n resp.error = err;\n resp.request.emit('httpError', [resp.error, resp], function() {\n done();\n });\n }\n\n function executeSend() {\n var http = AWS.HttpClient.getInstance();\n var httpOptions = resp.request.service.config.httpOptions || {};\n try {\n var stream = http.handleRequest(resp.request.httpRequest, httpOptions,\n callback, error);\n progress(stream);\n } catch (err) {\n error(err);\n }\n }\n var timeDiff = (resp.request.service.getSkewCorrectedDate() - this.signedAt) / 1000;\n if (timeDiff >= 60 * 10) { // if we signed 10min ago, re-sign\n this.emit('sign', [this], function(err) {\n if (err) done(err);\n else executeSend();\n });\n } else {\n executeSend();\n }\n });\n\n add('HTTP_HEADERS', 'httpHeaders',\n function HTTP_HEADERS(statusCode, headers, resp, statusMessage) {\n resp.httpResponse.statusCode = statusCode;\n resp.httpResponse.statusMessage = statusMessage;\n resp.httpResponse.headers = headers;\n resp.httpResponse.body = AWS.util.buffer.toBuffer('');\n resp.httpResponse.buffers = [];\n resp.httpResponse.numBytes = 0;\n var dateHeader = headers.date || headers.Date;\n var service = resp.request.service;\n if (dateHeader) {\n var serverTime = Date.parse(dateHeader);\n if (service.config.correctClockSkew\n && service.isClockSkewed(serverTime)) {\n service.applyClockOffset(serverTime);\n }\n }\n });\n\n add('HTTP_DATA', 'httpData', function HTTP_DATA(chunk, resp) {\n if (chunk) {\n if (AWS.util.isNode()) {\n resp.httpResponse.numBytes += chunk.length;\n\n var total = resp.httpResponse.headers['content-length'];\n var progress = { loaded: resp.httpResponse.numBytes, total: total };\n resp.request.emit('httpDownloadProgress', [progress, resp]);\n }\n\n resp.httpResponse.buffers.push(AWS.util.buffer.toBuffer(chunk));\n }\n });\n\n add('HTTP_DONE', 'httpDone', function HTTP_DONE(resp) {\n // convert buffers array into single buffer\n if (resp.httpResponse.buffers && resp.httpResponse.buffers.length > 0) {\n var body = AWS.util.buffer.concat(resp.httpResponse.buffers);\n resp.httpResponse.body = body;\n }\n delete resp.httpResponse.numBytes;\n delete resp.httpResponse.buffers;\n });\n\n add('FINALIZE_ERROR', 'retry', function FINALIZE_ERROR(resp) {\n if (resp.httpResponse.statusCode) {\n resp.error.statusCode = resp.httpResponse.statusCode;\n if (resp.error.retryable === undefined) {\n resp.error.retryable = this.service.retryableError(resp.error, this);\n }\n }\n });\n\n add('INVALIDATE_CREDENTIALS', 'retry', function INVALIDATE_CREDENTIALS(resp) {\n if (!resp.error) return;\n switch (resp.error.code) {\n case 'RequestExpired': // EC2 only\n case 'ExpiredTokenException':\n case 'ExpiredToken':\n resp.error.retryable = true;\n resp.request.service.config.credentials.expired = true;\n }\n });\n\n add('EXPIRED_SIGNATURE', 'retry', function EXPIRED_SIGNATURE(resp) {\n var err = resp.error;\n if (!err) return;\n if (typeof err.code === 'string' && typeof err.message === 'string') {\n if (err.code.match(/Signature/) && err.message.match(/expired/)) {\n resp.error.retryable = true;\n }\n }\n });\n\n add('CLOCK_SKEWED', 'retry', function CLOCK_SKEWED(resp) {\n if (!resp.error) return;\n if (this.service.clockSkewError(resp.error)\n && this.service.config.correctClockSkew) {\n resp.error.retryable = true;\n }\n });\n\n add('REDIRECT', 'retry', function REDIRECT(resp) {\n if (resp.error && resp.error.statusCode >= 300 &&\n resp.error.statusCode < 400 && resp.httpResponse.headers['location']) {\n this.httpRequest.endpoint =\n new AWS.Endpoint(resp.httpResponse.headers['location']);\n this.httpRequest.headers['Host'] = this.httpRequest.endpoint.host;\n this.httpRequest.path = this.httpRequest.endpoint.path;\n resp.error.redirect = true;\n resp.error.retryable = true;\n }\n });\n\n add('RETRY_CHECK', 'retry', function RETRY_CHECK(resp) {\n if (resp.error) {\n if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) {\n resp.error.retryDelay = 0;\n } else if (resp.retryCount < resp.maxRetries) {\n resp.error.retryDelay = this.service.retryDelays(resp.retryCount, resp.error) || 0;\n }\n }\n });\n\n addAsync('RESET_RETRY_STATE', 'afterRetry', function RESET_RETRY_STATE(resp, done) {\n var delay, willRetry = false;\n\n if (resp.error) {\n delay = resp.error.retryDelay || 0;\n if (resp.error.retryable && resp.retryCount < resp.maxRetries) {\n resp.retryCount++;\n willRetry = true;\n } else if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) {\n resp.redirectCount++;\n willRetry = true;\n }\n }\n\n // delay < 0 is a signal from customBackoff to skip retries\n if (willRetry && delay >= 0) {\n resp.error = null;\n setTimeout(done, delay);\n } else {\n done();\n }\n });\n }),\n\n CorePost: new SequentialExecutor().addNamedListeners(function(add) {\n add('EXTRACT_REQUEST_ID', 'extractData', AWS.util.extractRequestId);\n add('EXTRACT_REQUEST_ID', 'extractError', AWS.util.extractRequestId);\n\n add('ENOTFOUND_ERROR', 'httpError', function ENOTFOUND_ERROR(err) {\n function isDNSError(err) {\n return err.errno === 'ENOTFOUND' ||\n typeof err.errno === 'number' &&\n typeof AWS.util.getSystemErrorName === 'function' &&\n ['EAI_NONAME', 'EAI_NODATA'].indexOf(AWS.util.getSystemErrorName(err.errno) >= 0);\n }\n if (err.code === 'NetworkingError' && isDNSError(err)) {\n var message = 'Inaccessible host: `' + err.hostname + '\\' at port `' + err.port +\n '\\'. This service may not be available in the `' + err.region +\n '\\' region.';\n this.response.error = AWS.util.error(new Error(message), {\n code: 'UnknownEndpoint',\n region: err.region,\n hostname: err.hostname,\n retryable: true,\n originalError: err\n });\n }\n });\n }),\n\n Logger: new SequentialExecutor().addNamedListeners(function(add) {\n add('LOG_REQUEST', 'complete', function LOG_REQUEST(resp) {\n var req = resp.request;\n var logger = req.service.config.logger;\n if (!logger) return;\n function filterSensitiveLog(inputShape, shape) {\n if (!shape) {\n return shape;\n }\n if (inputShape.isSensitive) {\n return '***SensitiveInformation***';\n }\n switch (inputShape.type) {\n case 'structure':\n var struct = {};\n AWS.util.each(shape, function(subShapeName, subShape) {\n if (Object.prototype.hasOwnProperty.call(inputShape.members, subShapeName)) {\n struct[subShapeName] = filterSensitiveLog(inputShape.members[subShapeName], subShape);\n } else {\n struct[subShapeName] = subShape;\n }\n });\n return struct;\n case 'list':\n var list = [];\n AWS.util.arrayEach(shape, function(subShape, index) {\n list.push(filterSensitiveLog(inputShape.member, subShape));\n });\n return list;\n case 'map':\n var map = {};\n AWS.util.each(shape, function(key, value) {\n map[key] = filterSensitiveLog(inputShape.value, value);\n });\n return map;\n default:\n return shape;\n }\n }\n\n function buildMessage() {\n var time = resp.request.service.getSkewCorrectedDate().getTime();\n var delta = (time - req.startTime.getTime()) / 1000;\n var ansi = logger.isTTY ? true : false;\n var status = resp.httpResponse.statusCode;\n var censoredParams = req.params;\n if (\n req.service.api.operations &&\n req.service.api.operations[req.operation] &&\n req.service.api.operations[req.operation].input\n ) {\n var inputShape = req.service.api.operations[req.operation].input;\n censoredParams = filterSensitiveLog(inputShape, req.params);\n }\n var params = require('util').inspect(censoredParams, true, null);\n var message = '';\n if (ansi) message += '\\x1B[33m';\n message += '[AWS ' + req.service.serviceIdentifier + ' ' + status;\n message += ' ' + delta.toString() + 's ' + resp.retryCount + ' retries]';\n if (ansi) message += '\\x1B[0;1m';\n message += ' ' + AWS.util.string.lowerFirst(req.operation);\n message += '(' + params + ')';\n if (ansi) message += '\\x1B[0m';\n return message;\n }\n\n var line = buildMessage();\n if (typeof logger.log === 'function') {\n logger.log(line);\n } else if (typeof logger.write === 'function') {\n logger.write(line + '\\n');\n }\n });\n }),\n\n Json: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/json');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n Rest: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n RestJson: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest_json');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n add('UNSET_CONTENT_LENGTH', 'afterBuild', svc.unsetContentLength);\n }),\n\n RestXml: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest_xml');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n Query: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/query');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n })\n};\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 if (this.headers['Host']) {\n this.headers['Host'] = newEndpoint.host;\n }\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 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 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 if (shape.isDocument) {\n return structure;\n }\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');\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 if (shape.isDocument) return structure;\n\n var struct = {};\n var shapeMembers = shape.members;\n var isAwsQueryCompatible = shape.api && shape.api.awsQueryCompatible;\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 } else if (isAwsQueryCompatible && memberShape.defaultValue) {\n if (memberShape.type === 'list') {\n struct[name] = typeof memberShape.defaultValue === 'function' ? memberShape.defaultValue() : memberShape.defaultValue;\n }\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 warning = [\n 'The AWS SDK for JavaScript (v2) will enter maintenance mode',\n 'on September 8, 2024 and reach end-of-support on September 8, 2025.\\n',\n 'Please migrate your code to use AWS SDK for JavaScript (v3).',\n 'For more information, check blog post at https://a.co/cUPnyil'\n].join('\\n');\n\nmodule.exports = {\n suppress: false\n};\n\n/**\n * To suppress this message:\n * @example\n * require('aws-sdk/lib/maintenance_mode_message').suppress = true;\n */\nfunction emitWarning() {\n if (typeof process === 'undefined')\n return;\n\n // Skip maintenance mode message in Lambda environments\n if (\n typeof process.env === 'object' &&\n typeof process.env.AWS_EXECUTION_ENV !== 'undefined' &&\n process.env.AWS_EXECUTION_ENV.indexOf('AWS_Lambda_') === 0\n ) {\n return;\n }\n\n if (\n typeof process.env === 'object' &&\n typeof process.env.AWS_SDK_JS_SUPPRESS_MAINTENANCE_MODE_MESSAGE !== 'undefined'\n ) {\n return;\n }\n\n if (typeof process.emitWarning === 'function') {\n process.emitWarning(warning, {\n type: 'NOTE'\n });\n }\n}\n\nsetTimeout(function () {\n if (!module.exports.suppress) {\n emitWarning();\n }\n}, 0);\n","var Collection = require('./collection');\nvar Operation = require('./operation');\nvar Shape = require('./shape');\nvar Paginator = require('./paginator');\nvar ResourceWaiter = require('./resource_waiter');\nvar metadata = require('../../apis/metadata.json');\n\nvar util = require('../util');\nvar property = util.property;\nvar memoizedProperty = util.memoizedProperty;\n\nfunction Api(api, options) {\n var self = this;\n api = api || {};\n options = options || {};\n options.api = this;\n\n api.metadata = api.metadata || {};\n\n var serviceIdentifier = options.serviceIdentifier;\n delete options.serviceIdentifier;\n\n property(this, 'isApi', true, false);\n property(this, 'apiVersion', api.metadata.apiVersion);\n property(this, 'endpointPrefix', api.metadata.endpointPrefix);\n property(this, 'signingName', api.metadata.signingName);\n property(this, 'globalEndpoint', api.metadata.globalEndpoint);\n property(this, 'signatureVersion', api.metadata.signatureVersion);\n property(this, 'jsonVersion', api.metadata.jsonVersion);\n property(this, 'targetPrefix', api.metadata.targetPrefix);\n property(this, 'protocol', api.metadata.protocol);\n property(this, 'timestampFormat', api.metadata.timestampFormat);\n property(this, 'xmlNamespaceUri', api.metadata.xmlNamespace);\n property(this, 'abbreviation', api.metadata.serviceAbbreviation);\n property(this, 'fullName', api.metadata.serviceFullName);\n property(this, 'serviceId', api.metadata.serviceId);\n if (serviceIdentifier && metadata[serviceIdentifier]) {\n property(this, 'xmlNoDefaultLists', metadata[serviceIdentifier].xmlNoDefaultLists, false);\n }\n\n memoizedProperty(this, 'className', function() {\n var name = api.metadata.serviceAbbreviation || api.metadata.serviceFullName;\n if (!name) return null;\n\n name = name.replace(/^Amazon|AWS\\s*|\\(.*|\\s+|\\W+/g, '');\n if (name === 'ElasticLoadBalancing') name = 'ELB';\n return name;\n });\n\n function addEndpointOperation(name, operation) {\n if (operation.endpointoperation === true) {\n property(self, 'endpointOperation', util.string.lowerFirst(name));\n }\n if (operation.endpointdiscovery && !self.hasRequiredEndpointDiscovery) {\n property(\n self,\n 'hasRequiredEndpointDiscovery',\n operation.endpointdiscovery.required === true\n );\n }\n }\n\n property(this, 'operations', new Collection(api.operations, options, function(name, operation) {\n return new Operation(name, operation, options);\n }, util.string.lowerFirst, addEndpointOperation));\n\n property(this, 'shapes', new Collection(api.shapes, options, function(name, shape) {\n return Shape.create(shape, options);\n }));\n\n property(this, 'paginators', new Collection(api.paginators, options, function(name, paginator) {\n return new Paginator(name, paginator, options);\n }));\n\n property(this, 'waiters', new Collection(api.waiters, options, function(name, waiter) {\n return new ResourceWaiter(name, waiter, options);\n }, util.string.lowerFirst));\n\n if (options.documentation) {\n property(this, 'documentation', api.documentation);\n property(this, 'documentationUrl', api.documentationUrl);\n }\n property(this, 'awsQueryCompatible', api.metadata.awsQueryCompatible);\n}\n\n/**\n * @api private\n */\nmodule.exports = Api;\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 Shape = require('./shape');\n\nvar util = require('../util');\nvar property = util.property;\nvar memoizedProperty = util.memoizedProperty;\n\nfunction Operation(name, operation, options) {\n var self = this;\n options = options || {};\n\n property(this, 'name', operation.name || name);\n property(this, 'api', options.api, false);\n\n operation.http = operation.http || {};\n property(this, 'endpoint', operation.endpoint);\n property(this, 'httpMethod', operation.http.method || 'POST');\n property(this, 'httpPath', operation.http.requestUri || '/');\n property(this, 'authtype', operation.authtype || '');\n property(\n this,\n 'endpointDiscoveryRequired',\n operation.endpointdiscovery ?\n (operation.endpointdiscovery.required ? 'REQUIRED' : 'OPTIONAL') :\n 'NULL'\n );\n\n // httpChecksum replaces usage of httpChecksumRequired, but some APIs\n // (s3control) still uses old trait.\n var httpChecksumRequired = operation.httpChecksumRequired\n || (operation.httpChecksum && operation.httpChecksum.requestChecksumRequired);\n property(this, 'httpChecksumRequired', httpChecksumRequired, false);\n\n memoizedProperty(this, 'input', function() {\n if (!operation.input) {\n return new Shape.create({type: 'structure'}, options);\n }\n return Shape.create(operation.input, options);\n });\n\n memoizedProperty(this, 'output', function() {\n if (!operation.output) {\n return new Shape.create({type: 'structure'}, options);\n }\n return Shape.create(operation.output, options);\n });\n\n memoizedProperty(this, 'errors', function() {\n var list = [];\n if (!operation.errors) return null;\n\n for (var i = 0; i < operation.errors.length; i++) {\n list.push(Shape.create(operation.errors[i], options));\n }\n\n return list;\n });\n\n memoizedProperty(this, 'paginator', function() {\n return options.api.paginators[name];\n });\n\n if (options.documentation) {\n property(this, 'documentation', operation.documentation);\n property(this, 'documentationUrl', operation.documentationUrl);\n }\n\n // idempotentMembers only tracks top-level input shapes\n memoizedProperty(this, 'idempotentMembers', function() {\n var idempotentMembers = [];\n var input = self.input;\n var members = input.members;\n if (!input.members) {\n return idempotentMembers;\n }\n for (var name in members) {\n if (!members.hasOwnProperty(name)) {\n continue;\n }\n if (members[name].isIdempotent === true) {\n idempotentMembers.push(name);\n }\n }\n return idempotentMembers;\n });\n\n memoizedProperty(this, 'hasEventOutput', function() {\n var output = self.output;\n return hasEventStream(output);\n });\n}\n\nfunction hasEventStream(topLevelShape) {\n var members = topLevelShape.members;\n var payload = topLevelShape.payload;\n\n if (!topLevelShape.members) {\n return false;\n }\n\n if (payload) {\n var payloadMember = members[payload];\n return payloadMember.isEventStream;\n }\n\n // check if any member is an event stream\n for (var name in members) {\n if (!members.hasOwnProperty(name)) {\n if (members[name].isEventStream === true) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * @api private\n */\nmodule.exports = Operation;\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 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 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 property(this, 'isDocument', Boolean(shape.document));\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 */\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 if (shape.isDocument) return true;\n\n this.validateType(params, context, ['object'], 'structure');\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 if (paramValue !== undefined && paramValue !== null) {\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 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 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\n if (api.awsQueryCompatible) {\n if (!httpRequest.params) {\n httpRequest.params = {};\n }\n // because Query protocol does this.\n Object.assign(httpRequest.params, req.params);\n }\n\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\n var code = e.__type || e.code || e.Code;\n if (code) {\n error.code = 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\n // The minimized models do not have error shapes, so\n // without expanding the model size, it's not possible\n // to validate the response shape (members) or\n // check if any are sensitive to logging.\n\n // Assign the fields as non-enumerable, allowing specific access only.\n for (var key in e || {}) {\n if (key === 'code' || key === 'message') {\n continue;\n }\n error['[' + key + ']'] = 'See error.' + key + ' for details.';\n Object.defineProperty(error, key, {\n value: e[key],\n enumerable: false,\n writable: true\n });\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 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('= 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 util = require('../util');\nvar Rest = require('./rest');\nvar Json = require('./json');\nvar JsonBuilder = require('../json/builder');\nvar JsonParser = require('../json/parser');\n\nvar METHODS_WITHOUT_BODY = ['GET', 'HEAD', 'DELETE'];\n\nfunction unsetContentLength(req) {\n var payloadMember = util.getRequestPayloadShape(req);\n if (\n payloadMember === undefined &&\n METHODS_WITHOUT_BODY.indexOf(req.httpRequest.method) >= 0\n ) {\n delete req.httpRequest.headers['Content-Length'];\n }\n}\n\nfunction populateBody(req) {\n var builder = new JsonBuilder();\n var input = req.service.api.operations[req.operation].input;\n\n if (input.payload) {\n var params = {};\n var payloadShape = input.members[input.payload];\n params = req.params[input.payload];\n\n if (payloadShape.type === 'structure') {\n req.httpRequest.body = builder.build(params || {}, payloadShape);\n applyContentTypeHeader(req);\n } else if (params !== undefined) {\n // non-JSON payload\n req.httpRequest.body = params;\n if (payloadShape.type === 'binary' || payloadShape.isStreaming) {\n applyContentTypeHeader(req, true);\n }\n }\n } else {\n req.httpRequest.body = builder.build(req.params, input);\n applyContentTypeHeader(req);\n }\n}\n\nfunction applyContentTypeHeader(req, isBinary) {\n if (!req.httpRequest.headers['Content-Type']) {\n var type = isBinary ? 'binary/octet-stream' : 'application/json';\n req.httpRequest.headers['Content-Type'] = type;\n }\n}\n\nfunction buildRequest(req) {\n Rest.buildRequest(req);\n\n // never send body payload on GET/HEAD/DELETE\n if (METHODS_WITHOUT_BODY.indexOf(req.httpRequest.method) < 0) {\n populateBody(req);\n }\n}\n\nfunction extractError(resp) {\n Json.extractError(resp);\n}\n\nfunction extractData(resp) {\n Rest.extractData(resp);\n\n var req = resp.request;\n var operation = req.service.api.operations[req.operation];\n var rules = req.service.api.operations[req.operation].output || {};\n var parser;\n var hasEventOutput = operation.hasEventOutput;\n\n if (rules.payload) {\n var payloadMember = rules.members[rules.payload];\n var body = resp.httpResponse.body;\n if (payloadMember.isEventStream) {\n parser = new JsonParser();\n resp.data[rules.payload] = util.createEventStream(\n AWS.HttpClient.streamsApiVersion === 2 ? resp.httpResponse.stream : body,\n parser,\n payloadMember\n );\n } else if (payloadMember.type === 'structure' || payloadMember.type === 'list') {\n var parser = new JsonParser();\n resp.data[rules.payload] = parser.parse(body, payloadMember);\n } else if (payloadMember.type === 'binary' || payloadMember.isStreaming) {\n resp.data[rules.payload] = body;\n } else {\n resp.data[rules.payload] = payloadMember.toType(body);\n }\n } else {\n var data = resp.data;\n Json.extractData(resp);\n resp.data = util.merge(data, resp.data);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData,\n unsetContentLength: unsetContentLength\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 if (rules.api.protocol !== 'ec2') {\n fn.call(this, name, null);\n }\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 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 operations: {}\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","module.exports = {\n //provide realtime clock for performance measurement\n now: function now() {\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n return performance.now();\n }\n return Date.now();\n }\n};\n","function isFipsRegion(region) {\n return typeof region === 'string' && (region.startsWith('fips-') || region.endsWith('-fips'));\n}\n\nfunction isGlobalRegion(region) {\n return typeof region === 'string' && ['aws-global', 'aws-us-gov-global'].includes(region);\n}\n\nfunction getRealRegion(region) {\n return ['fips-aws-global', 'aws-fips', 'aws-global'].includes(region)\n ? 'us-east-1'\n : ['fips-aws-us-gov-global', 'aws-us-gov-global'].includes(region)\n ? 'us-gov-west-1'\n : region.replace(/fips-(dkr-|prod-)?|-fips/, '');\n}\n\nmodule.exports = {\n isFipsRegion: isFipsRegion,\n isGlobalRegion: isGlobalRegion,\n getRealRegion: getRealRegion\n};\n","var util = require('./util');\nvar regionConfig = require('./region_config_data.json');\n\nfunction generateRegionPrefix(region) {\n if (!region) return null;\n var parts = region.split('-');\n if (parts.length < 3) return null;\n return parts.slice(0, parts.length - 2).join('-') + '-*';\n}\n\nfunction derivedKeys(service) {\n var region = service.config.region;\n var regionPrefix = generateRegionPrefix(region);\n var endpointPrefix = service.api.endpointPrefix;\n\n return [\n [region, endpointPrefix],\n [regionPrefix, endpointPrefix],\n [region, '*'],\n [regionPrefix, '*'],\n ['*', endpointPrefix],\n [region, 'internal-*'],\n ['*', '*']\n ].map(function(item) {\n return item[0] && item[1] ? item.join('/') : null;\n });\n}\n\nfunction applyConfig(service, config) {\n util.each(config, function(key, value) {\n if (key === 'globalEndpoint') return;\n if (service.config[key] === undefined || service.config[key] === null) {\n service.config[key] = value;\n }\n });\n}\n\nfunction configureEndpoint(service) {\n var keys = derivedKeys(service);\n var useFipsEndpoint = service.config.useFipsEndpoint;\n var useDualstackEndpoint = service.config.useDualstackEndpoint;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!key) continue;\n\n var rules = useFipsEndpoint\n ? useDualstackEndpoint\n ? regionConfig.dualstackFipsRules\n : regionConfig.fipsRules\n : useDualstackEndpoint\n ? regionConfig.dualstackRules\n : regionConfig.rules;\n\n if (Object.prototype.hasOwnProperty.call(rules, key)) {\n var config = rules[key];\n if (typeof config === 'string') {\n config = regionConfig.patterns[config];\n }\n\n // set global endpoint\n service.isGlobalEndpoint = !!config.globalEndpoint;\n if (config.signingRegion) {\n service.signingRegion = config.signingRegion;\n }\n\n // signature version\n if (!config.signatureVersion) {\n // Note: config is a global object and should not be mutated here.\n // However, we are retaining this line for backwards compatibility.\n // The non-v4 signatureVersion will be set in a copied object below.\n config.signatureVersion = 'v4';\n }\n\n var useBearer = (service.api && service.api.signatureVersion) === 'bearer';\n\n // merge config\n applyConfig(service, Object.assign(\n {},\n config,\n { signatureVersion: useBearer ? 'bearer' : config.signatureVersion }\n ));\n return;\n }\n }\n}\n\nfunction getEndpointSuffix(region) {\n var regionRegexes = {\n '^(us|eu|ap|sa|ca|me)\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com',\n '^cn\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com.cn',\n '^us\\\\-gov\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com',\n '^us\\\\-iso\\\\-\\\\w+\\\\-\\\\d+$': 'c2s.ic.gov',\n '^us\\\\-isob\\\\-\\\\w+\\\\-\\\\d+$': 'sc2s.sgov.gov'\n };\n var defaultSuffix = 'amazonaws.com';\n var regexes = Object.keys(regionRegexes);\n for (var i = 0; i < regexes.length; i++) {\n var regionPattern = RegExp(regexes[i]);\n var dnsSuffix = regionRegexes[regexes[i]];\n if (regionPattern.test(region)) return dnsSuffix;\n }\n return defaultSuffix;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n configureEndpoint: configureEndpoint,\n getEndpointSuffix: getEndpointSuffix,\n};\n","var AWS = require('./core');\nvar AcceptorStateMachine = require('./state_machine');\nvar inherit = AWS.util.inherit;\nvar domain = AWS.util.domain;\nvar jmespath = require('jmespath');\n\n/**\n * @api private\n */\nvar hardErrorStates = {success: 1, error: 1, complete: 1};\n\nfunction isTerminalState(machine) {\n return Object.prototype.hasOwnProperty.call(hardErrorStates, machine._asm.currentState);\n}\n\nvar fsm = new AcceptorStateMachine();\nfsm.setupStates = function() {\n var transition = function(_, done) {\n var self = this;\n self._haltHandlersOnError = false;\n\n self.emit(self._asm.currentState, function(err) {\n if (err) {\n if (isTerminalState(self)) {\n if (domain && self.domain instanceof domain.Domain) {\n err.domainEmitter = self;\n err.domain = self.domain;\n err.domainThrown = false;\n self.domain.emit('error', err);\n } else {\n throw err;\n }\n } else {\n self.response.error = err;\n done(err);\n }\n } else {\n done(self.response.error);\n }\n });\n\n };\n\n this.addState('validate', 'build', 'error', transition);\n this.addState('build', 'afterBuild', 'restart', transition);\n this.addState('afterBuild', 'sign', 'restart', transition);\n this.addState('sign', 'send', 'retry', transition);\n this.addState('retry', 'afterRetry', 'afterRetry', transition);\n this.addState('afterRetry', 'sign', 'error', transition);\n this.addState('send', 'validateResponse', 'retry', transition);\n this.addState('validateResponse', 'extractData', 'extractError', transition);\n this.addState('extractError', 'extractData', 'retry', transition);\n this.addState('extractData', 'success', 'retry', transition);\n this.addState('restart', 'build', 'error', transition);\n this.addState('success', 'complete', 'complete', transition);\n this.addState('error', 'complete', 'complete', transition);\n this.addState('complete', null, null, transition);\n};\nfsm.setupStates();\n\n/**\n * ## Asynchronous Requests\n *\n * All requests made through the SDK are asynchronous and use a\n * callback interface. Each service method that kicks off a request\n * returns an `AWS.Request` object that you can use to register\n * callbacks.\n *\n * For example, the following service method returns the request\n * object as \"request\", which can be used to register callbacks:\n *\n * ```javascript\n * // request is an AWS.Request object\n * var request = ec2.describeInstances();\n *\n * // register callbacks on request to retrieve response data\n * request.on('success', function(response) {\n * console.log(response.data);\n * });\n * ```\n *\n * When a request is ready to be sent, the {send} method should\n * be called:\n *\n * ```javascript\n * request.send();\n * ```\n *\n * Since registered callbacks may or may not be idempotent, requests should only\n * be sent once. To perform the same operation multiple times, you will need to\n * create multiple request objects, each with its own registered callbacks.\n *\n * ## Removing Default Listeners for Events\n *\n * Request objects are built with default listeners for the various events,\n * depending on the service type. In some cases, you may want to remove\n * some built-in listeners to customize behaviour. Doing this requires\n * access to the built-in listener functions, which are exposed through\n * the {AWS.EventListeners.Core} namespace. For instance, you may\n * want to customize the HTTP handler used when sending a request. In this\n * case, you can remove the built-in listener associated with the 'send'\n * event, the {AWS.EventListeners.Core.SEND} listener and add your own.\n *\n * ## Multiple Callbacks and Chaining\n *\n * You can register multiple callbacks on any request object. The\n * callbacks can be registered for different events, or all for the\n * same event. In addition, you can chain callback registration, for\n * example:\n *\n * ```javascript\n * request.\n * on('success', function(response) {\n * console.log(\"Success!\");\n * }).\n * on('error', function(error, response) {\n * console.log(\"Error!\");\n * }).\n * on('complete', function(response) {\n * console.log(\"Always!\");\n * }).\n * send();\n * ```\n *\n * The above example will print either \"Success! Always!\", or \"Error! Always!\",\n * depending on whether the request succeeded or not.\n *\n * @!attribute httpRequest\n * @readonly\n * @!group HTTP Properties\n * @return [AWS.HttpRequest] the raw HTTP request object\n * containing request headers and body information\n * sent by the service.\n *\n * @!attribute startTime\n * @readonly\n * @!group Operation Properties\n * @return [Date] the time that the request started\n *\n * @!group Request Building Events\n *\n * @!event validate(request)\n * Triggered when a request is being validated. Listeners\n * should throw an error if the request should not be sent.\n * @param request [Request] the request object being sent\n * @see AWS.EventListeners.Core.VALIDATE_CREDENTIALS\n * @see AWS.EventListeners.Core.VALIDATE_REGION\n * @example Ensuring that a certain parameter is set before sending a request\n * var req = s3.putObject(params);\n * req.on('validate', function() {\n * if (!req.params.Body.match(/^Hello\\s/)) {\n * throw new Error('Body must start with \"Hello \"');\n * }\n * });\n * req.send(function(err, data) { ... });\n *\n * @!event build(request)\n * Triggered when the request payload is being built. Listeners\n * should fill the necessary information to send the request\n * over HTTP.\n * @param (see AWS.Request~validate)\n * @example Add a custom HTTP header to a request\n * var req = s3.putObject(params);\n * req.on('build', function() {\n * req.httpRequest.headers['Custom-Header'] = 'value';\n * });\n * req.send(function(err, data) { ... });\n *\n * @!event sign(request)\n * Triggered when the request is being signed. Listeners should\n * add the correct authentication headers and/or adjust the body,\n * depending on the authentication mechanism being used.\n * @param (see AWS.Request~validate)\n *\n * @!group Request Sending Events\n *\n * @!event send(response)\n * Triggered when the request is ready to be sent. Listeners\n * should call the underlying transport layer to initiate\n * the sending of the request.\n * @param response [Response] the response object\n * @context [Request] the request object that was sent\n * @see AWS.EventListeners.Core.SEND\n *\n * @!event retry(response)\n * Triggered when a request failed and might need to be retried or redirected.\n * If the response is retryable, the listener should set the\n * `response.error.retryable` property to `true`, and optionally set\n * `response.error.retryDelay` to the millisecond delay for the next attempt.\n * In the case of a redirect, `response.error.redirect` should be set to\n * `true` with `retryDelay` set to an optional delay on the next request.\n *\n * If a listener decides that a request should not be retried,\n * it should set both `retryable` and `redirect` to false.\n *\n * Note that a retryable error will be retried at most\n * {AWS.Config.maxRetries} times (based on the service object's config).\n * Similarly, a request that is redirected will only redirect at most\n * {AWS.Config.maxRedirects} times.\n *\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @example Adding a custom retry for a 404 response\n * request.on('retry', function(response) {\n * // this resource is not yet available, wait 10 seconds to get it again\n * if (response.httpResponse.statusCode === 404 && response.error) {\n * response.error.retryable = true; // retry this error\n * response.error.retryDelay = 10000; // wait 10 seconds\n * }\n * });\n *\n * @!group Data Parsing Events\n *\n * @!event extractError(response)\n * Triggered on all non-2xx requests so that listeners can extract\n * error details from the response body. Listeners to this event\n * should set the `response.error` property.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event extractData(response)\n * Triggered in successful requests to allow listeners to\n * de-serialize the response body into `response.data`.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!group Completion Events\n *\n * @!event success(response)\n * Triggered when the request completed successfully.\n * `response.data` will contain the response data and\n * `response.error` will be null.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event error(error, response)\n * Triggered when an error occurs at any point during the\n * request. `response.error` will contain details about the error\n * that occurred. `response.data` will be null.\n * @param error [Error] the error object containing details about\n * the error that occurred.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event complete(response)\n * Triggered whenever a request cycle completes. `response.error`\n * should be checked, since the request may have failed.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!group HTTP Events\n *\n * @!event httpHeaders(statusCode, headers, response, statusMessage)\n * Triggered when headers are sent by the remote server\n * @param statusCode [Integer] the HTTP response code\n * @param headers [map] the response headers\n * @param (see AWS.Request~send)\n * @param statusMessage [String] A status message corresponding to the HTTP\n * response code\n * @context (see AWS.Request~send)\n *\n * @!event httpData(chunk, response)\n * Triggered when data is sent by the remote server\n * @param chunk [Buffer] the buffer data containing the next data chunk\n * from the server\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @see AWS.EventListeners.Core.HTTP_DATA\n *\n * @!event httpUploadProgress(progress, response)\n * Triggered when the HTTP request has uploaded more data\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @note This event will not be emitted in Node.js 0.8.x.\n *\n * @!event httpDownloadProgress(progress, response)\n * Triggered when the HTTP request has downloaded more data\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @note This event will not be emitted in Node.js 0.8.x.\n *\n * @!event httpError(error, response)\n * Triggered when the HTTP request failed\n * @param error [Error] the error object that was thrown\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event httpDone(response)\n * Triggered when the server is finished sending data\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @see AWS.Response\n */\nAWS.Request = inherit({\n\n /**\n * Creates a request for an operation on a given service with\n * a set of input parameters.\n *\n * @param service [AWS.Service] the service to perform the operation on\n * @param operation [String] the operation to perform on the service\n * @param params [Object] parameters to send to the operation.\n * See the operation's documentation for the format of the\n * parameters.\n */\n constructor: function Request(service, operation, params) {\n var endpoint = service.endpoint;\n var region = service.config.region;\n var customUserAgent = service.config.customUserAgent;\n\n if (service.signingRegion) {\n region = service.signingRegion;\n } else if (service.isGlobalEndpoint) {\n region = 'us-east-1';\n }\n\n this.domain = domain && domain.active;\n this.service = service;\n this.operation = operation;\n this.params = params || {};\n this.httpRequest = new AWS.HttpRequest(endpoint, region);\n this.httpRequest.appendToUserAgent(customUserAgent);\n this.startTime = service.getSkewCorrectedDate();\n\n this.response = new AWS.Response(this);\n this._asm = new AcceptorStateMachine(fsm.states, 'validate');\n this._haltHandlersOnError = false;\n\n AWS.SequentialExecutor.call(this);\n this.emit = this.emitEvent;\n },\n\n /**\n * @!group Sending a Request\n */\n\n /**\n * @overload send(callback = null)\n * Sends the request object.\n *\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @context [AWS.Request] the request object being sent.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n * @example Sending a request with a callback\n * request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * request.send(function(err, data) { console.log(err, data); });\n * @example Sending a request with no callback (using event handlers)\n * request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * request.on('complete', function(response) { ... }); // register a callback\n * request.send();\n */\n send: function send(callback) {\n if (callback) {\n // append to user agent\n this.httpRequest.appendToUserAgent('callback');\n this.on('complete', function (resp) {\n callback.call(resp, resp.error, resp.data);\n });\n }\n this.runTo();\n\n return this.response;\n },\n\n /**\n * @!method promise()\n * Sends the request and returns a 'thenable' promise.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(data)\n * Called if the promise is fulfilled.\n * @param data [Object] the de-serialized data returned from the request.\n * @callback rejectedCallback function(error)\n * Called if the promise is rejected.\n * @param error [Error] the error object returned from the request.\n * @return [Promise] A promise that represents the state of the request.\n * @example Sending a request using promises.\n * var request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * var result = request.promise();\n * result.then(function(data) { ... }, function(error) { ... });\n */\n\n /**\n * @api private\n */\n build: function build(callback) {\n return this.runTo('send', callback);\n },\n\n /**\n * @api private\n */\n runTo: function runTo(state, done) {\n this._asm.runTo(state, done, this);\n return this;\n },\n\n /**\n * Aborts a request, emitting the error and complete events.\n *\n * @!macro nobrowser\n * @example Aborting a request after sending\n * var params = {\n * Bucket: 'bucket', Key: 'key',\n * Body: Buffer.alloc(1024 * 1024 * 5) // 5MB payload\n * };\n * var request = s3.putObject(params);\n * request.send(function (err, data) {\n * if (err) console.log(\"Error:\", err.code, err.message);\n * else console.log(data);\n * });\n *\n * // abort request in 1 second\n * setTimeout(request.abort.bind(request), 1000);\n *\n * // prints \"Error: RequestAbortedError Request aborted by user\"\n * @return [AWS.Request] the same request object, for chaining.\n * @since v1.4.0\n */\n abort: function abort() {\n this.removeAllListeners('validateResponse');\n this.removeAllListeners('extractError');\n this.on('validateResponse', function addAbortedError(resp) {\n resp.error = AWS.util.error(new Error('Request aborted by user'), {\n code: 'RequestAbortedError', retryable: false\n });\n });\n\n if (this.httpRequest.stream && !this.httpRequest.stream.didCallback) { // abort HTTP stream\n this.httpRequest.stream.abort();\n if (this.httpRequest._abortCallback) {\n this.httpRequest._abortCallback();\n } else {\n this.removeAllListeners('send'); // haven't sent yet, so let's not\n }\n }\n\n return this;\n },\n\n /**\n * Iterates over each page of results given a pageable request, calling\n * the provided callback with each page of data. After all pages have been\n * retrieved, the callback is called with `null` data.\n *\n * @note This operation can generate multiple requests to a service.\n * @example Iterating over multiple pages of objects in an S3 bucket\n * var pages = 1;\n * s3.listObjects().eachPage(function(err, data) {\n * if (err) return;\n * console.log(\"Page\", pages++);\n * console.log(data);\n * });\n * @example Iterating over multiple pages with an asynchronous callback\n * s3.listObjects(params).eachPage(function(err, data, done) {\n * doSomethingAsyncAndOrExpensive(function() {\n * // The next page of results isn't fetched until done is called\n * done();\n * });\n * });\n * @callback callback function(err, data, [doneCallback])\n * Called with each page of resulting data from the request. If the\n * optional `doneCallback` is provided in the function, it must be called\n * when the callback is complete.\n *\n * @param err [Error] an error object, if an error occurred.\n * @param data [Object] a single page of response data. If there is no\n * more data, this object will be `null`.\n * @param doneCallback [Function] an optional done callback. If this\n * argument is defined in the function declaration, it should be called\n * when the next page is ready to be retrieved. This is useful for\n * controlling serial pagination across asynchronous operations.\n * @return [Boolean] if the callback returns `false`, pagination will\n * stop.\n *\n * @see AWS.Request.eachItem\n * @see AWS.Response.nextPage\n * @since v1.4.0\n */\n eachPage: function eachPage(callback) {\n // Make all callbacks async-ish\n callback = AWS.util.fn.makeAsync(callback, 3);\n\n function wrappedCallback(response) {\n callback.call(response, response.error, response.data, function (result) {\n if (result === false) return;\n\n if (response.hasNextPage()) {\n response.nextPage().on('complete', wrappedCallback).send();\n } else {\n callback.call(response, null, null, AWS.util.fn.noop);\n }\n });\n }\n\n this.on('complete', wrappedCallback).send();\n },\n\n /**\n * Enumerates over individual items of a request, paging the responses if\n * necessary.\n *\n * @api experimental\n * @since v1.4.0\n */\n eachItem: function eachItem(callback) {\n var self = this;\n function wrappedCallback(err, data) {\n if (err) return callback(err, null);\n if (data === null) return callback(null, null);\n\n var config = self.service.paginationConfig(self.operation);\n var resultKey = config.resultKey;\n if (Array.isArray(resultKey)) resultKey = resultKey[0];\n var items = jmespath.search(data, resultKey);\n var continueIteration = true;\n AWS.util.arrayEach(items, function(item) {\n continueIteration = callback(null, item);\n if (continueIteration === false) {\n return AWS.util.abort;\n }\n });\n return continueIteration;\n }\n\n this.eachPage(wrappedCallback);\n },\n\n /**\n * @return [Boolean] whether the operation can return multiple pages of\n * response data.\n * @see AWS.Response.eachPage\n * @since v1.4.0\n */\n isPageable: function isPageable() {\n return this.service.paginationConfig(this.operation) ? true : false;\n },\n\n /**\n * Sends the request and converts the request object into a readable stream\n * that can be read from or piped into a writable stream.\n *\n * @note The data read from a readable stream contains only\n * the raw HTTP body contents.\n * @example Manually reading from a stream\n * request.createReadStream().on('data', function(data) {\n * console.log(\"Got data:\", data.toString());\n * });\n * @example Piping a request body into a file\n * var out = fs.createWriteStream('/path/to/outfile.jpg');\n * s3.service.getObject(params).createReadStream().pipe(out);\n * @return [Stream] the readable stream object that can be piped\n * or read from (by registering 'data' event listeners).\n * @!macro nobrowser\n */\n createReadStream: function createReadStream() {\n var streams = AWS.util.stream;\n var req = this;\n var stream = null;\n\n if (AWS.HttpClient.streamsApiVersion === 2) {\n stream = new streams.PassThrough();\n process.nextTick(function() { req.send(); });\n } else {\n stream = new streams.Stream();\n stream.readable = true;\n\n stream.sent = false;\n stream.on('newListener', function(event) {\n if (!stream.sent && event === 'data') {\n stream.sent = true;\n process.nextTick(function() { req.send(); });\n }\n });\n }\n\n this.on('error', function(err) {\n stream.emit('error', err);\n });\n\n this.on('httpHeaders', function streamHeaders(statusCode, headers, resp) {\n if (statusCode < 300) {\n req.removeListener('httpData', AWS.EventListeners.Core.HTTP_DATA);\n req.removeListener('httpError', AWS.EventListeners.Core.HTTP_ERROR);\n req.on('httpError', function streamHttpError(error) {\n resp.error = error;\n resp.error.retryable = false;\n });\n\n var shouldCheckContentLength = false;\n var expectedLen;\n if (req.httpRequest.method !== 'HEAD') {\n expectedLen = parseInt(headers['content-length'], 10);\n }\n if (expectedLen !== undefined && !isNaN(expectedLen) && expectedLen >= 0) {\n shouldCheckContentLength = true;\n var receivedLen = 0;\n }\n\n var checkContentLengthAndEmit = function checkContentLengthAndEmit() {\n if (shouldCheckContentLength && receivedLen !== expectedLen) {\n stream.emit('error', AWS.util.error(\n new Error('Stream content length mismatch. Received ' +\n receivedLen + ' of ' + expectedLen + ' bytes.'),\n { code: 'StreamContentLengthMismatch' }\n ));\n } else if (AWS.HttpClient.streamsApiVersion === 2) {\n stream.end();\n } else {\n stream.emit('end');\n }\n };\n\n var httpStream = resp.httpResponse.createUnbufferedStream();\n\n if (AWS.HttpClient.streamsApiVersion === 2) {\n if (shouldCheckContentLength) {\n var lengthAccumulator = new streams.PassThrough();\n lengthAccumulator._write = function(chunk) {\n if (chunk && chunk.length) {\n receivedLen += chunk.length;\n }\n return streams.PassThrough.prototype._write.apply(this, arguments);\n };\n\n lengthAccumulator.on('end', checkContentLengthAndEmit);\n stream.on('error', function(err) {\n shouldCheckContentLength = false;\n httpStream.unpipe(lengthAccumulator);\n lengthAccumulator.emit('end');\n lengthAccumulator.end();\n });\n httpStream.pipe(lengthAccumulator).pipe(stream, { end: false });\n } else {\n httpStream.pipe(stream);\n }\n } else {\n\n if (shouldCheckContentLength) {\n httpStream.on('data', function(arg) {\n if (arg && arg.length) {\n receivedLen += arg.length;\n }\n });\n }\n\n httpStream.on('data', function(arg) {\n stream.emit('data', arg);\n });\n httpStream.on('end', checkContentLengthAndEmit);\n }\n\n httpStream.on('error', function(err) {\n shouldCheckContentLength = false;\n stream.emit('error', err);\n });\n }\n });\n\n return stream;\n },\n\n /**\n * @param [Array,Response] args This should be the response object,\n * or an array of args to send to the event.\n * @api private\n */\n emitEvent: function emit(eventName, args, done) {\n if (typeof args === 'function') { done = args; args = null; }\n if (!done) done = function() { };\n if (!args) args = this.eventParameters(eventName, this.response);\n\n var origEmit = AWS.SequentialExecutor.prototype.emit;\n origEmit.call(this, eventName, args, function (err) {\n if (err) this.response.error = err;\n done.call(this, err);\n });\n },\n\n /**\n * @api private\n */\n eventParameters: function eventParameters(eventName) {\n switch (eventName) {\n case 'restart':\n case 'validate':\n case 'sign':\n case 'build':\n case 'afterValidate':\n case 'afterBuild':\n return [this];\n case 'error':\n return [this.response.error, this.response];\n default:\n return [this.response];\n }\n },\n\n /**\n * @api private\n */\n presign: function presign(expires, callback) {\n if (!callback && typeof expires === 'function') {\n callback = expires;\n expires = null;\n }\n return new AWS.Signers.Presign().sign(this.toGet(), expires, callback);\n },\n\n /**\n * @api private\n */\n isPresigned: function isPresigned() {\n return Object.prototype.hasOwnProperty.call(this.httpRequest.headers, 'presigned-expires');\n },\n\n /**\n * @api private\n */\n toUnauthenticated: function toUnauthenticated() {\n this._unAuthenticated = true;\n this.removeListener('validate', AWS.EventListeners.Core.VALIDATE_CREDENTIALS);\n this.removeListener('sign', AWS.EventListeners.Core.SIGN);\n return this;\n },\n\n /**\n * @api private\n */\n toGet: function toGet() {\n if (this.service.api.protocol === 'query' ||\n this.service.api.protocol === 'ec2') {\n this.removeListener('build', this.buildAsGet);\n this.addListener('build', this.buildAsGet);\n }\n return this;\n },\n\n /**\n * @api private\n */\n buildAsGet: function buildAsGet(request) {\n request.httpRequest.method = 'GET';\n request.httpRequest.path = request.service.endpoint.path +\n '?' + request.httpRequest.body;\n request.httpRequest.body = '';\n\n // don't need these headers on a GET request\n delete request.httpRequest.headers['Content-Length'];\n delete request.httpRequest.headers['Content-Type'];\n },\n\n /**\n * @api private\n */\n haltHandlersOnError: function haltHandlersOnError() {\n this._haltHandlersOnError = true;\n }\n});\n\n/**\n * @api private\n */\nAWS.Request.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.promise = function promise() {\n var self = this;\n // append to user agent\n this.httpRequest.appendToUserAgent('promise');\n return new PromiseDependency(function(resolve, reject) {\n self.on('complete', function(resp) {\n if (resp.error) {\n reject(resp.error);\n } else {\n // define $response property so that it is not enumerable\n // this prevents circular reference errors when stringifying the JSON object\n resolve(Object.defineProperty(\n resp.data || {},\n '$response',\n {value: resp}\n ));\n }\n });\n self.runTo();\n });\n };\n};\n\n/**\n * @api private\n */\nAWS.Request.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.promise;\n};\n\nAWS.util.addPromises(AWS.Request);\n\nAWS.util.mixin(AWS.Request, AWS.SequentialExecutor);\n","/**\n * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You\n * may not use this file except in compliance with the License. A copy of\n * the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n */\n\nvar AWS = require('./core');\nvar inherit = AWS.util.inherit;\nvar jmespath = require('jmespath');\n\n/**\n * @api private\n */\nfunction CHECK_ACCEPTORS(resp) {\n var waiter = resp.request._waiter;\n var acceptors = waiter.config.acceptors;\n var acceptorMatched = false;\n var state = 'retry';\n\n acceptors.forEach(function(acceptor) {\n if (!acceptorMatched) {\n var matcher = waiter.matchers[acceptor.matcher];\n if (matcher && matcher(resp, acceptor.expected, acceptor.argument)) {\n acceptorMatched = true;\n state = acceptor.state;\n }\n }\n });\n\n if (!acceptorMatched && resp.error) state = 'failure';\n\n if (state === 'success') {\n waiter.setSuccess(resp);\n } else {\n waiter.setError(resp, state === 'retry');\n }\n}\n\n/**\n * @api private\n */\nAWS.ResourceWaiter = inherit({\n /**\n * Waits for a given state on a service object\n * @param service [Service] the service object to wait on\n * @param state [String] the state (defined in waiter configuration) to wait\n * for.\n * @example Create a waiter for running EC2 instances\n * var ec2 = new AWS.EC2;\n * var waiter = new AWS.ResourceWaiter(ec2, 'instanceRunning');\n */\n constructor: function constructor(service, state) {\n this.service = service;\n this.state = state;\n this.loadWaiterConfig(this.state);\n },\n\n service: null,\n\n state: null,\n\n config: null,\n\n matchers: {\n path: function(resp, expected, argument) {\n try {\n var result = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n return jmespath.strictDeepEqual(result,expected);\n },\n\n pathAll: function(resp, expected, argument) {\n try {\n var results = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n if (!Array.isArray(results)) results = [results];\n var numResults = results.length;\n if (!numResults) return false;\n for (var ind = 0 ; ind < numResults; ind++) {\n if (!jmespath.strictDeepEqual(results[ind], expected)) {\n return false;\n }\n }\n return true;\n },\n\n pathAny: function(resp, expected, argument) {\n try {\n var results = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n if (!Array.isArray(results)) results = [results];\n var numResults = results.length;\n for (var ind = 0 ; ind < numResults; ind++) {\n if (jmespath.strictDeepEqual(results[ind], expected)) {\n return true;\n }\n }\n return false;\n },\n\n status: function(resp, expected) {\n var statusCode = resp.httpResponse.statusCode;\n return (typeof statusCode === 'number') && (statusCode === expected);\n },\n\n error: function(resp, expected) {\n if (typeof expected === 'string' && resp.error) {\n return expected === resp.error.code;\n }\n // if expected is not string, can be boolean indicating presence of error\n return expected === !!resp.error;\n }\n },\n\n listeners: new AWS.SequentialExecutor().addNamedListeners(function(add) {\n add('RETRY_CHECK', 'retry', function(resp) {\n var waiter = resp.request._waiter;\n if (resp.error && resp.error.code === 'ResourceNotReady') {\n resp.error.retryDelay = (waiter.config.delay || 0) * 1000;\n }\n });\n\n add('CHECK_OUTPUT', 'extractData', CHECK_ACCEPTORS);\n\n add('CHECK_ERROR', 'extractError', CHECK_ACCEPTORS);\n }),\n\n /**\n * @return [AWS.Request]\n */\n wait: function wait(params, callback) {\n if (typeof params === 'function') {\n callback = params; params = undefined;\n }\n\n if (params && params.$waiter) {\n params = AWS.util.copy(params);\n if (typeof params.$waiter.delay === 'number') {\n this.config.delay = params.$waiter.delay;\n }\n if (typeof params.$waiter.maxAttempts === 'number') {\n this.config.maxAttempts = params.$waiter.maxAttempts;\n }\n delete params.$waiter;\n }\n\n var request = this.service.makeRequest(this.config.operation, params);\n request._waiter = this;\n request.response.maxRetries = this.config.maxAttempts;\n request.addListeners(this.listeners);\n\n if (callback) request.send(callback);\n return request;\n },\n\n setSuccess: function setSuccess(resp) {\n resp.error = null;\n resp.data = resp.data || {};\n resp.request.removeAllListeners('extractData');\n },\n\n setError: function setError(resp, retryable) {\n resp.data = null;\n resp.error = AWS.util.error(resp.error || new Error(), {\n code: 'ResourceNotReady',\n message: 'Resource is not in the state ' + this.state,\n retryable: retryable\n });\n },\n\n /**\n * Loads waiter configuration from API configuration\n *\n * @api private\n */\n loadWaiterConfig: function loadWaiterConfig(state) {\n if (!this.service.api.waiters[state]) {\n throw new AWS.util.error(new Error(), {\n code: 'StateNotFoundError',\n message: 'State ' + state + ' not found.'\n });\n }\n\n this.config = AWS.util.copy(this.service.api.waiters[state]);\n }\n});\n","var AWS = require('./core');\nvar inherit = AWS.util.inherit;\nvar jmespath = require('jmespath');\n\n/**\n * This class encapsulates the response information\n * from a service request operation sent through {AWS.Request}.\n * The response object has two main properties for getting information\n * back from a request:\n *\n * ## The `data` property\n *\n * The `response.data` property contains the serialized object data\n * retrieved from the service request. For instance, for an\n * Amazon DynamoDB `listTables` method call, the response data might\n * look like:\n *\n * ```\n * > resp.data\n * { TableNames:\n * [ 'table1', 'table2', ... ] }\n * ```\n *\n * The `data` property can be null if an error occurs (see below).\n *\n * ## The `error` property\n *\n * In the event of a service error (or transfer error), the\n * `response.error` property will be filled with the given\n * error data in the form:\n *\n * ```\n * { code: 'SHORT_UNIQUE_ERROR_CODE',\n * message: 'Some human readable error message' }\n * ```\n *\n * In the case of an error, the `data` property will be `null`.\n * Note that if you handle events that can be in a failure state,\n * you should always check whether `response.error` is set\n * before attempting to access the `response.data` property.\n *\n * @!attribute data\n * @readonly\n * @!group Data Properties\n * @note Inside of a {AWS.Request~httpData} event, this\n * property contains a single raw packet instead of the\n * full de-serialized service response.\n * @return [Object] the de-serialized response data\n * from the service.\n *\n * @!attribute error\n * An structure containing information about a service\n * or networking error.\n * @readonly\n * @!group Data Properties\n * @note This attribute is only filled if a service or\n * networking error occurs.\n * @return [Error]\n * * code [String] a unique short code representing the\n * error that was emitted.\n * * message [String] a longer human readable error message\n * * retryable [Boolean] whether the error message is\n * retryable.\n * * statusCode [Numeric] in the case of a request that reached the service,\n * this value contains the response status code.\n * * time [Date] the date time object when the error occurred.\n * * hostname [String] set when a networking error occurs to easily\n * identify the endpoint of the request.\n * * region [String] set when a networking error occurs to easily\n * identify the region of the request.\n *\n * @!attribute requestId\n * @readonly\n * @!group Data Properties\n * @return [String] the unique request ID associated with the response.\n * Log this value when debugging requests for AWS support.\n *\n * @!attribute retryCount\n * @readonly\n * @!group Operation Properties\n * @return [Integer] the number of retries that were\n * attempted before the request was completed.\n *\n * @!attribute redirectCount\n * @readonly\n * @!group Operation Properties\n * @return [Integer] the number of redirects that were\n * followed before the request was completed.\n *\n * @!attribute httpResponse\n * @readonly\n * @!group HTTP Properties\n * @return [AWS.HttpResponse] the raw HTTP response object\n * containing the response headers and body information\n * from the server.\n *\n * @see AWS.Request\n */\nAWS.Response = inherit({\n\n /**\n * @api private\n */\n constructor: function Response(request) {\n this.request = request;\n this.data = null;\n this.error = null;\n this.retryCount = 0;\n this.redirectCount = 0;\n this.httpResponse = new AWS.HttpResponse();\n if (request) {\n this.maxRetries = request.service.numRetries();\n this.maxRedirects = request.service.config.maxRedirects;\n }\n },\n\n /**\n * Creates a new request for the next page of response data, calling the\n * callback with the page data if a callback is provided.\n *\n * @callback callback function(err, data)\n * Called when a page of data is returned from the next request.\n *\n * @param err [Error] an error object, if an error occurred in the request\n * @param data [Object] the next page of data, or null, if there are no\n * more pages left.\n * @return [AWS.Request] the request object for the next page of data\n * @return [null] if no callback is provided and there are no pages left\n * to retrieve.\n * @since v1.4.0\n */\n nextPage: function nextPage(callback) {\n var config;\n var service = this.request.service;\n var operation = this.request.operation;\n try {\n config = service.paginationConfig(operation, true);\n } catch (e) { this.error = e; }\n\n if (!this.hasNextPage()) {\n if (callback) callback(this.error, null);\n else if (this.error) throw this.error;\n return null;\n }\n\n var params = AWS.util.copy(this.request.params);\n if (!this.nextPageTokens) {\n return callback ? callback(null, null) : null;\n } else {\n var inputTokens = config.inputToken;\n if (typeof inputTokens === 'string') inputTokens = [inputTokens];\n for (var i = 0; i < inputTokens.length; i++) {\n params[inputTokens[i]] = this.nextPageTokens[i];\n }\n return service.makeRequest(this.request.operation, params, callback);\n }\n },\n\n /**\n * @return [Boolean] whether more pages of data can be returned by further\n * requests\n * @since v1.4.0\n */\n hasNextPage: function hasNextPage() {\n this.cacheNextPageTokens();\n if (this.nextPageTokens) return true;\n if (this.nextPageTokens === undefined) return undefined;\n else return false;\n },\n\n /**\n * @api private\n */\n cacheNextPageTokens: function cacheNextPageTokens() {\n if (Object.prototype.hasOwnProperty.call(this, 'nextPageTokens')) return this.nextPageTokens;\n this.nextPageTokens = undefined;\n\n var config = this.request.service.paginationConfig(this.request.operation);\n if (!config) return this.nextPageTokens;\n\n this.nextPageTokens = null;\n if (config.moreResults) {\n if (!jmespath.search(this.data, config.moreResults)) {\n return this.nextPageTokens;\n }\n }\n\n var exprs = config.outputToken;\n if (typeof exprs === 'string') exprs = [exprs];\n AWS.util.arrayEach.call(this, exprs, function (expr) {\n var output = jmespath.search(this.data, expr);\n if (output) {\n this.nextPageTokens = this.nextPageTokens || [];\n this.nextPageTokens.push(output);\n }\n });\n\n return this.nextPageTokens;\n }\n\n});\n","var AWS = require('../core');\nvar byteLength = AWS.util.string.byteLength;\nvar Buffer = AWS.util.Buffer;\n\n/**\n * The managed uploader allows for easy and efficient uploading of buffers,\n * blobs, or streams, using a configurable amount of concurrency to perform\n * multipart uploads where possible. This abstraction also enables uploading\n * streams of unknown size due to the use of multipart uploads.\n *\n * To construct a managed upload object, see the {constructor} function.\n *\n * ## Tracking upload progress\n *\n * The managed upload object can also track progress by attaching an\n * 'httpUploadProgress' listener to the upload manager. This event is similar\n * to {AWS.Request~httpUploadProgress} but groups all concurrent upload progress\n * into a single event. See {AWS.S3.ManagedUpload~httpUploadProgress} for more\n * information.\n *\n * ## Handling Multipart Cleanup\n *\n * By default, this class will automatically clean up any multipart uploads\n * when an individual part upload fails. This behavior can be disabled in order\n * to manually handle failures by setting the `leavePartsOnError` configuration\n * option to `true` when initializing the upload object.\n *\n * @!event httpUploadProgress(progress)\n * Triggered when the uploader has uploaded more data.\n * @note The `total` property may not be set if the stream being uploaded has\n * not yet finished chunking. In this case the `total` will be undefined\n * until the total stream size is known.\n * @note This event will not be emitted in Node.js 0.8.x.\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request and the `key` of the S3 object. Note that `total` may be undefined until the payload\n * size is known.\n * @context (see AWS.Request~send)\n */\nAWS.S3.ManagedUpload = AWS.util.inherit({\n /**\n * Creates a managed upload object with a set of configuration options.\n *\n * @note A \"Body\" parameter is required to be set prior to calling {send}.\n * @note In Node.js, sending \"Body\" as {https://nodejs.org/dist/latest/docs/api/stream.html#stream_object_mode object-mode stream}\n * may result in upload hangs. Using buffer stream is preferable.\n * @option options params [map] a map of parameters to pass to the upload\n * requests. The \"Body\" parameter is required to be specified either on\n * the service or in the params option.\n * @note ContentMD5 should not be provided when using the managed upload object.\n * Instead, setting \"computeChecksums\" to true will enable automatic ContentMD5 generation\n * by the managed upload object.\n * @option options queueSize [Number] (4) the size of the concurrent queue\n * manager to upload parts in parallel. Set to 1 for synchronous uploading\n * of parts. Note that the uploader will buffer at most queueSize * partSize\n * bytes into memory at any given time.\n * @option options partSize [Number] (5mb) the size in bytes for each\n * individual part to be uploaded. Adjust the part size to ensure the number\n * of parts does not exceed {maxTotalParts}. See {minPartSize} for the\n * minimum allowed part size.\n * @option options leavePartsOnError [Boolean] (false) whether to abort the\n * multipart upload if an error occurs. Set to true if you want to handle\n * failures manually.\n * @option options service [AWS.S3] an optional S3 service object to use for\n * requests. This object might have bound parameters used by the uploader.\n * @option options tags [Array] The tags to apply to the uploaded object.\n * Each tag should have a `Key` and `Value` keys.\n * @example Creating a default uploader for a stream object\n * var upload = new AWS.S3.ManagedUpload({\n * params: {Bucket: 'bucket', Key: 'key', Body: stream}\n * });\n * @example Creating an uploader with concurrency of 1 and partSize of 10mb\n * var upload = new AWS.S3.ManagedUpload({\n * partSize: 10 * 1024 * 1024, queueSize: 1,\n * params: {Bucket: 'bucket', Key: 'key', Body: stream}\n * });\n * @example Creating an uploader with tags\n * var upload = new AWS.S3.ManagedUpload({\n * params: {Bucket: 'bucket', Key: 'key', Body: stream},\n * tags: [{Key: 'tag1', Value: 'value1'}, {Key: 'tag2', Value: 'value2'}]\n * });\n * @see send\n */\n constructor: function ManagedUpload(options) {\n var self = this;\n AWS.SequentialExecutor.call(self);\n self.body = null;\n self.sliceFn = null;\n self.callback = null;\n self.parts = {};\n self.completeInfo = [];\n self.fillQueue = function() {\n self.callback(new Error('Unsupported body payload ' + typeof self.body));\n };\n\n self.configure(options);\n },\n\n /**\n * @api private\n */\n configure: function configure(options) {\n options = options || {};\n this.partSize = this.minPartSize;\n\n if (options.queueSize) this.queueSize = options.queueSize;\n if (options.partSize) this.partSize = options.partSize;\n if (options.leavePartsOnError) this.leavePartsOnError = true;\n if (options.tags) {\n if (!Array.isArray(options.tags)) {\n throw new Error('Tags must be specified as an array; ' +\n typeof options.tags + ' provided.');\n }\n this.tags = options.tags;\n }\n\n if (this.partSize < this.minPartSize) {\n throw new Error('partSize must be greater than ' +\n this.minPartSize);\n }\n\n this.service = options.service;\n this.bindServiceObject(options.params);\n this.validateBody();\n this.adjustTotalBytes();\n },\n\n /**\n * @api private\n */\n leavePartsOnError: false,\n\n /**\n * @api private\n */\n queueSize: 4,\n\n /**\n * @api private\n */\n partSize: null,\n\n /**\n * @readonly\n * @return [Number] the minimum number of bytes for an individual part\n * upload.\n */\n minPartSize: 1024 * 1024 * 5,\n\n /**\n * @readonly\n * @return [Number] the maximum allowed number of parts in a multipart upload.\n */\n maxTotalParts: 10000,\n\n /**\n * Initiates the managed upload for the payload.\n *\n * @callback callback function(err, data)\n * @param err [Error] an error or null if no error occurred.\n * @param data [map] The response data from the successful upload:\n * * `Location` (String) the URL of the uploaded object\n * * `ETag` (String) the ETag of the uploaded object\n * * `Bucket` (String) the bucket to which the object was uploaded\n * * `Key` (String) the key to which the object was uploaded\n * @example Sending a managed upload object\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * var upload = new AWS.S3.ManagedUpload({params: params});\n * upload.send(function(err, data) {\n * console.log(err, data);\n * });\n */\n send: function(callback) {\n var self = this;\n self.failed = false;\n self.callback = callback || function(err) { if (err) throw err; };\n\n var runFill = true;\n if (self.sliceFn) {\n self.fillQueue = self.fillBuffer;\n } else if (AWS.util.isNode()) {\n var Stream = AWS.util.stream.Stream;\n if (self.body instanceof Stream) {\n runFill = false;\n self.fillQueue = self.fillStream;\n self.partBuffers = [];\n self.body.\n on('error', function(err) { self.cleanup(err); }).\n on('readable', function() { self.fillQueue(); }).\n on('end', function() {\n self.isDoneChunking = true;\n self.numParts = self.totalPartNumbers;\n self.fillQueue.call(self);\n\n if (self.isDoneChunking && self.totalPartNumbers >= 1 && self.doneParts === self.numParts) {\n self.finishMultiPart();\n }\n });\n }\n }\n\n if (runFill) self.fillQueue.call(self);\n },\n\n /**\n * @!method promise()\n * Returns a 'thenable' promise.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(data)\n * Called if the promise is fulfilled.\n * @param data [map] The response data from the successful upload:\n * `Location` (String) the URL of the uploaded object\n * `ETag` (String) the ETag of the uploaded object\n * `Bucket` (String) the bucket to which the object was uploaded\n * `Key` (String) the key to which the object was uploaded\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] an error or null if no error occurred.\n * @return [Promise] A promise that represents the state of the upload request.\n * @example Sending an upload request using promises.\n * var upload = s3.upload({Bucket: 'bucket', Key: 'key', Body: stream});\n * var promise = upload.promise();\n * promise.then(function(data) { ... }, function(err) { ... });\n */\n\n /**\n * Aborts a managed upload, including all concurrent upload requests.\n * @note By default, calling this function will cleanup a multipart upload\n * if one was created. To leave the multipart upload around after aborting\n * a request, configure `leavePartsOnError` to `true` in the {constructor}.\n * @note Calling {abort} in the browser environment will not abort any requests\n * that are already in flight. If a multipart upload was created, any parts\n * not yet uploaded will not be sent, and the multipart upload will be cleaned up.\n * @example Aborting an upload\n * var params = {\n * Bucket: 'bucket', Key: 'key',\n * Body: Buffer.alloc(1024 * 1024 * 25) // 25MB payload\n * };\n * var upload = s3.upload(params);\n * upload.send(function (err, data) {\n * if (err) console.log(\"Error:\", err.code, err.message);\n * else console.log(data);\n * });\n *\n * // abort request in 1 second\n * setTimeout(upload.abort.bind(upload), 1000);\n */\n abort: function() {\n var self = this;\n //abort putObject request\n if (self.isDoneChunking === true && self.totalPartNumbers === 1 && self.singlePart) {\n self.singlePart.abort();\n } else {\n self.cleanup(AWS.util.error(new Error('Request aborted by user'), {\n code: 'RequestAbortedError', retryable: false\n }));\n }\n },\n\n /**\n * @api private\n */\n validateBody: function validateBody() {\n var self = this;\n self.body = self.service.config.params.Body;\n if (typeof self.body === 'string') {\n self.body = AWS.util.buffer.toBuffer(self.body);\n } else if (!self.body) {\n throw new Error('params.Body is required');\n }\n self.sliceFn = AWS.util.arraySliceFn(self.body);\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(params) {\n params = params || {};\n var self = this;\n // bind parameters to new service object\n if (!self.service) {\n self.service = new AWS.S3({params: params});\n } else {\n // Create a new S3 client from the supplied client's constructor.\n var service = self.service;\n var config = AWS.util.copy(service.config);\n config.signatureVersion = service.getSignatureVersion();\n self.service = new service.constructor.__super__(config);\n self.service.config.params =\n AWS.util.merge(self.service.config.params || {}, params);\n Object.defineProperty(self.service, '_originalConfig', {\n get: function() { return service._originalConfig; },\n enumerable: false,\n configurable: true\n });\n }\n },\n\n /**\n * @api private\n */\n adjustTotalBytes: function adjustTotalBytes() {\n var self = this;\n try { // try to get totalBytes\n self.totalBytes = byteLength(self.body);\n } catch (e) { }\n\n // try to adjust partSize if we know payload length\n if (self.totalBytes) {\n var newPartSize = Math.ceil(self.totalBytes / self.maxTotalParts);\n if (newPartSize > self.partSize) self.partSize = newPartSize;\n } else {\n self.totalBytes = undefined;\n }\n },\n\n /**\n * @api private\n */\n isDoneChunking: false,\n\n /**\n * @api private\n */\n partPos: 0,\n\n /**\n * @api private\n */\n totalChunkedBytes: 0,\n\n /**\n * @api private\n */\n totalUploadedBytes: 0,\n\n /**\n * @api private\n */\n totalBytes: undefined,\n\n /**\n * @api private\n */\n numParts: 0,\n\n /**\n * @api private\n */\n totalPartNumbers: 0,\n\n /**\n * @api private\n */\n activeParts: 0,\n\n /**\n * @api private\n */\n doneParts: 0,\n\n /**\n * @api private\n */\n parts: null,\n\n /**\n * @api private\n */\n completeInfo: null,\n\n /**\n * @api private\n */\n failed: false,\n\n /**\n * @api private\n */\n multipartReq: null,\n\n /**\n * @api private\n */\n partBuffers: null,\n\n /**\n * @api private\n */\n partBufferLength: 0,\n\n /**\n * @api private\n */\n fillBuffer: function fillBuffer() {\n var self = this;\n var bodyLen = byteLength(self.body);\n\n if (bodyLen === 0) {\n self.isDoneChunking = true;\n self.numParts = 1;\n self.nextChunk(self.body);\n return;\n }\n\n while (self.activeParts < self.queueSize && self.partPos < bodyLen) {\n var endPos = Math.min(self.partPos + self.partSize, bodyLen);\n var buf = self.sliceFn.call(self.body, self.partPos, endPos);\n self.partPos += self.partSize;\n\n if (byteLength(buf) < self.partSize || self.partPos === bodyLen) {\n self.isDoneChunking = true;\n self.numParts = self.totalPartNumbers + 1;\n }\n self.nextChunk(buf);\n }\n },\n\n /**\n * @api private\n */\n fillStream: function fillStream() {\n var self = this;\n if (self.activeParts >= self.queueSize) return;\n\n var buf = self.body.read(self.partSize - self.partBufferLength) ||\n self.body.read();\n if (buf) {\n self.partBuffers.push(buf);\n self.partBufferLength += buf.length;\n self.totalChunkedBytes += buf.length;\n }\n\n if (self.partBufferLength >= self.partSize) {\n // if we have single buffer we avoid copyfull concat\n var pbuf = self.partBuffers.length === 1 ?\n self.partBuffers[0] : Buffer.concat(self.partBuffers);\n self.partBuffers = [];\n self.partBufferLength = 0;\n\n // if we have more than partSize, push the rest back on the queue\n if (pbuf.length > self.partSize) {\n var rest = pbuf.slice(self.partSize);\n self.partBuffers.push(rest);\n self.partBufferLength += rest.length;\n pbuf = pbuf.slice(0, self.partSize);\n }\n\n self.nextChunk(pbuf);\n }\n\n if (self.isDoneChunking && !self.isDoneSending) {\n // if we have single buffer we avoid copyfull concat\n pbuf = self.partBuffers.length === 1 ?\n self.partBuffers[0] : Buffer.concat(self.partBuffers);\n self.partBuffers = [];\n self.partBufferLength = 0;\n self.totalBytes = self.totalChunkedBytes;\n self.isDoneSending = true;\n\n if (self.numParts === 0 || pbuf.length > 0) {\n self.numParts++;\n self.nextChunk(pbuf);\n }\n }\n\n self.body.read(0);\n },\n\n /**\n * @api private\n */\n nextChunk: function nextChunk(chunk) {\n var self = this;\n if (self.failed) return null;\n\n var partNumber = ++self.totalPartNumbers;\n if (self.isDoneChunking && partNumber === 1) {\n var params = {Body: chunk};\n if (this.tags) {\n params.Tagging = this.getTaggingHeader();\n }\n var req = self.service.putObject(params);\n req._managedUpload = self;\n req.on('httpUploadProgress', self.progress).send(self.finishSinglePart);\n self.singlePart = req; //save the single part request\n return null;\n } else if (self.service.config.params.ContentMD5) {\n var err = AWS.util.error(new Error('The Content-MD5 you specified is invalid for multi-part uploads.'), {\n code: 'InvalidDigest', retryable: false\n });\n\n self.cleanup(err);\n return null;\n }\n\n if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) {\n return null; // Already uploaded this part.\n }\n\n self.activeParts++;\n if (!self.service.config.params.UploadId) {\n\n if (!self.multipartReq) { // create multipart\n self.multipartReq = self.service.createMultipartUpload();\n self.multipartReq.on('success', function(resp) {\n self.service.config.params.UploadId = resp.data.UploadId;\n self.multipartReq = null;\n });\n self.queueChunks(chunk, partNumber);\n self.multipartReq.on('error', function(err) {\n self.cleanup(err);\n });\n self.multipartReq.send();\n } else {\n self.queueChunks(chunk, partNumber);\n }\n } else { // multipart is created, just send\n self.uploadPart(chunk, partNumber);\n }\n },\n\n /**\n * @api private\n */\n getTaggingHeader: function getTaggingHeader() {\n var kvPairStrings = [];\n for (var i = 0; i < this.tags.length; i++) {\n kvPairStrings.push(AWS.util.uriEscape(this.tags[i].Key) + '=' +\n AWS.util.uriEscape(this.tags[i].Value));\n }\n\n return kvPairStrings.join('&');\n },\n\n /**\n * @api private\n */\n uploadPart: function uploadPart(chunk, partNumber) {\n var self = this;\n\n var partParams = {\n Body: chunk,\n ContentLength: AWS.util.string.byteLength(chunk),\n PartNumber: partNumber\n };\n\n var partInfo = {ETag: null, PartNumber: partNumber};\n self.completeInfo[partNumber] = partInfo;\n\n var req = self.service.uploadPart(partParams);\n self.parts[partNumber] = req;\n req._lastUploadedBytes = 0;\n req._managedUpload = self;\n req.on('httpUploadProgress', self.progress);\n req.send(function(err, data) {\n delete self.parts[partParams.PartNumber];\n self.activeParts--;\n\n if (!err && (!data || !data.ETag)) {\n var message = 'No access to ETag property on response.';\n if (AWS.util.isBrowser()) {\n message += ' Check CORS configuration to expose ETag header.';\n }\n\n err = AWS.util.error(new Error(message), {\n code: 'ETagMissing', retryable: false\n });\n }\n if (err) return self.cleanup(err);\n //prevent sending part being returned twice (https://github.com/aws/aws-sdk-js/issues/2304)\n if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) return null;\n partInfo.ETag = data.ETag;\n self.doneParts++;\n if (self.isDoneChunking && self.doneParts === self.totalPartNumbers) {\n self.finishMultiPart();\n } else {\n self.fillQueue.call(self);\n }\n });\n },\n\n /**\n * @api private\n */\n queueChunks: function queueChunks(chunk, partNumber) {\n var self = this;\n self.multipartReq.on('success', function() {\n self.uploadPart(chunk, partNumber);\n });\n },\n\n /**\n * @api private\n */\n cleanup: function cleanup(err) {\n var self = this;\n if (self.failed) return;\n\n // clean up stream\n if (typeof self.body.removeAllListeners === 'function' &&\n typeof self.body.resume === 'function') {\n self.body.removeAllListeners('readable');\n self.body.removeAllListeners('end');\n self.body.resume();\n }\n\n // cleanup multipartReq listeners\n if (self.multipartReq) {\n self.multipartReq.removeAllListeners('success');\n self.multipartReq.removeAllListeners('error');\n self.multipartReq.removeAllListeners('complete');\n delete self.multipartReq;\n }\n\n if (self.service.config.params.UploadId && !self.leavePartsOnError) {\n self.service.abortMultipartUpload().send();\n } else if (self.leavePartsOnError) {\n self.isDoneChunking = false;\n }\n\n AWS.util.each(self.parts, function(partNumber, part) {\n part.removeAllListeners('complete');\n part.abort();\n });\n\n self.activeParts = 0;\n self.partPos = 0;\n self.numParts = 0;\n self.totalPartNumbers = 0;\n self.parts = {};\n self.failed = true;\n self.callback(err);\n },\n\n /**\n * @api private\n */\n finishMultiPart: function finishMultiPart() {\n var self = this;\n var completeParams = { MultipartUpload: { Parts: self.completeInfo.slice(1) } };\n self.service.completeMultipartUpload(completeParams, function(err, data) {\n if (err) {\n return self.cleanup(err);\n }\n\n if (data && typeof data.Location === 'string') {\n data.Location = data.Location.replace(/%2F/g, '/');\n }\n\n if (Array.isArray(self.tags)) {\n for (var i = 0; i < self.tags.length; i++) {\n self.tags[i].Value = String(self.tags[i].Value);\n }\n self.service.putObjectTagging(\n {Tagging: {TagSet: self.tags}},\n function(e, d) {\n if (e) {\n self.callback(e);\n } else {\n self.callback(e, data);\n }\n }\n );\n } else {\n self.callback(err, data);\n }\n });\n },\n\n /**\n * @api private\n */\n finishSinglePart: function finishSinglePart(err, data) {\n var upload = this.request._managedUpload;\n var httpReq = this.request.httpRequest;\n var endpoint = httpReq.endpoint;\n if (err) return upload.callback(err);\n data.Location =\n [endpoint.protocol, '//', endpoint.host, httpReq.path].join('');\n data.key = this.request.params.Key; // will stay undocumented\n data.Key = this.request.params.Key;\n data.Bucket = this.request.params.Bucket;\n upload.callback(err, data);\n },\n\n /**\n * @api private\n */\n progress: function progress(info) {\n var upload = this._managedUpload;\n if (this.operation === 'putObject') {\n info.part = 1;\n info.key = this.params.Key;\n } else {\n upload.totalUploadedBytes += info.loaded - this._lastUploadedBytes;\n this._lastUploadedBytes = info.loaded;\n info = {\n loaded: upload.totalUploadedBytes,\n total: upload.totalBytes,\n part: this.params.PartNumber,\n key: this.params.Key\n };\n }\n upload.emit('httpUploadProgress', [info]);\n }\n});\n\nAWS.util.mixin(AWS.S3.ManagedUpload, AWS.SequentialExecutor);\n\n/**\n * @api private\n */\nAWS.S3.ManagedUpload.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.promise = AWS.util.promisifyMethod('send', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.S3.ManagedUpload.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.promise;\n};\n\nAWS.util.addPromises(AWS.S3.ManagedUpload);\n\n/**\n * @api private\n */\nmodule.exports = AWS.S3.ManagedUpload;\n","var AWS = require('./core');\n\n/**\n * @api private\n * @!method on(eventName, callback)\n * Registers an event listener callback for the event given by `eventName`.\n * Parameters passed to the callback function depend on the individual event\n * being triggered. See the event documentation for those parameters.\n *\n * @param eventName [String] the event name to register the listener for\n * @param callback [Function] the listener callback function\n * @param toHead [Boolean] attach the listener callback to the head of callback array if set to true.\n * Default to be false.\n * @return [AWS.SequentialExecutor] the same object for chaining\n */\nAWS.SequentialExecutor = AWS.util.inherit({\n\n constructor: function SequentialExecutor() {\n this._events = {};\n },\n\n /**\n * @api private\n */\n listeners: function listeners(eventName) {\n return this._events[eventName] ? this._events[eventName].slice(0) : [];\n },\n\n on: function on(eventName, listener, toHead) {\n if (this._events[eventName]) {\n toHead ?\n this._events[eventName].unshift(listener) :\n this._events[eventName].push(listener);\n } else {\n this._events[eventName] = [listener];\n }\n return this;\n },\n\n onAsync: function onAsync(eventName, listener, toHead) {\n listener._isAsync = true;\n return this.on(eventName, listener, toHead);\n },\n\n removeListener: function removeListener(eventName, listener) {\n var listeners = this._events[eventName];\n if (listeners) {\n var length = listeners.length;\n var position = -1;\n for (var i = 0; i < length; ++i) {\n if (listeners[i] === listener) {\n position = i;\n }\n }\n if (position > -1) {\n listeners.splice(position, 1);\n }\n }\n return this;\n },\n\n removeAllListeners: function removeAllListeners(eventName) {\n if (eventName) {\n delete this._events[eventName];\n } else {\n this._events = {};\n }\n return this;\n },\n\n /**\n * @api private\n */\n emit: function emit(eventName, eventArgs, doneCallback) {\n if (!doneCallback) doneCallback = function() { };\n var listeners = this.listeners(eventName);\n var count = listeners.length;\n this.callListeners(listeners, eventArgs, doneCallback);\n return count > 0;\n },\n\n /**\n * @api private\n */\n callListeners: function callListeners(listeners, args, doneCallback, prevError) {\n var self = this;\n var error = prevError || null;\n\n function callNextListener(err) {\n if (err) {\n error = AWS.util.error(error || new Error(), err);\n if (self._haltHandlersOnError) {\n return doneCallback.call(self, error);\n }\n }\n self.callListeners(listeners, args, doneCallback, error);\n }\n\n while (listeners.length > 0) {\n var listener = listeners.shift();\n if (listener._isAsync) { // asynchronous listener\n listener.apply(self, args.concat([callNextListener]));\n return; // stop here, callNextListener will continue\n } else { // synchronous listener\n try {\n listener.apply(self, args);\n } catch (err) {\n error = AWS.util.error(error || new Error(), err);\n }\n if (error && self._haltHandlersOnError) {\n doneCallback.call(self, error);\n return;\n }\n }\n }\n doneCallback.call(self, error);\n },\n\n /**\n * Adds or copies a set of listeners from another list of\n * listeners or SequentialExecutor object.\n *\n * @param listeners [map>, AWS.SequentialExecutor]\n * a list of events and callbacks, or an event emitter object\n * containing listeners to add to this emitter object.\n * @return [AWS.SequentialExecutor] the emitter object, for chaining.\n * @example Adding listeners from a map of listeners\n * emitter.addListeners({\n * event1: [function() { ... }, function() { ... }],\n * event2: [function() { ... }]\n * });\n * emitter.emit('event1'); // emitter has event1\n * emitter.emit('event2'); // emitter has event2\n * @example Adding listeners from another emitter object\n * var emitter1 = new AWS.SequentialExecutor();\n * emitter1.on('event1', function() { ... });\n * emitter1.on('event2', function() { ... });\n * var emitter2 = new AWS.SequentialExecutor();\n * emitter2.addListeners(emitter1);\n * emitter2.emit('event1'); // emitter2 has event1\n * emitter2.emit('event2'); // emitter2 has event2\n */\n addListeners: function addListeners(listeners) {\n var self = this;\n\n // extract listeners if parameter is an SequentialExecutor object\n if (listeners._events) listeners = listeners._events;\n\n AWS.util.each(listeners, function(event, callbacks) {\n if (typeof callbacks === 'function') callbacks = [callbacks];\n AWS.util.arrayEach(callbacks, function(callback) {\n self.on(event, callback);\n });\n });\n\n return self;\n },\n\n /**\n * Registers an event with {on} and saves the callback handle function\n * as a property on the emitter object using a given `name`.\n *\n * @param name [String] the property name to set on this object containing\n * the callback function handle so that the listener can be removed in\n * the future.\n * @param (see on)\n * @return (see on)\n * @example Adding a named listener DATA_CALLBACK\n * var listener = function() { doSomething(); };\n * emitter.addNamedListener('DATA_CALLBACK', 'data', listener);\n *\n * // the following prints: true\n * console.log(emitter.DATA_CALLBACK == listener);\n */\n addNamedListener: function addNamedListener(name, eventName, callback, toHead) {\n this[name] = callback;\n this.addListener(eventName, callback, toHead);\n return this;\n },\n\n /**\n * @api private\n */\n addNamedAsyncListener: function addNamedAsyncListener(name, eventName, callback, toHead) {\n callback._isAsync = true;\n return this.addNamedListener(name, eventName, callback, toHead);\n },\n\n /**\n * Helper method to add a set of named listeners using\n * {addNamedListener}. The callback contains a parameter\n * with a handle to the `addNamedListener` method.\n *\n * @callback callback function(add)\n * The callback function is called immediately in order to provide\n * the `add` function to the block. This simplifies the addition of\n * a large group of named listeners.\n * @param add [Function] the {addNamedListener} function to call\n * when registering listeners.\n * @example Adding a set of named listeners\n * emitter.addNamedListeners(function(add) {\n * add('DATA_CALLBACK', 'data', function() { ... });\n * add('OTHER', 'otherEvent', function() { ... });\n * add('LAST', 'lastEvent', function() { ... });\n * });\n *\n * // these properties are now set:\n * emitter.DATA_CALLBACK;\n * emitter.OTHER;\n * emitter.LAST;\n */\n addNamedListeners: function addNamedListeners(callback) {\n var self = this;\n callback(\n function() {\n self.addNamedListener.apply(self, arguments);\n },\n function() {\n self.addNamedAsyncListener.apply(self, arguments);\n }\n );\n return this;\n }\n});\n\n/**\n * {on} is the prefered method.\n * @api private\n */\nAWS.SequentialExecutor.prototype.addListener = AWS.SequentialExecutor.prototype.on;\n\n/**\n * @api private\n */\nmodule.exports = AWS.SequentialExecutor;\n","var AWS = require('./core');\nvar Api = require('./model/api');\nvar regionConfig = require('./region_config');\n\nvar inherit = AWS.util.inherit;\nvar clientCount = 0;\nvar region_utils = require('./region/utils');\n\n/**\n * The service class representing an AWS service.\n *\n * @class_abstract This class is an abstract class.\n *\n * @!attribute apiVersions\n * @return [Array] the list of API versions supported by this service.\n * @readonly\n */\nAWS.Service = inherit({\n /**\n * Create a new service object with a configuration object\n *\n * @param config [map] a map of configuration options\n */\n constructor: function Service(config) {\n if (!this.loadServiceClass) {\n throw AWS.util.error(new Error(),\n 'Service must be constructed with `new\\' operator');\n }\n\n if (config) {\n if (config.region) {\n var region = config.region;\n if (region_utils.isFipsRegion(region)) {\n config.region = region_utils.getRealRegion(region);\n config.useFipsEndpoint = true;\n }\n if (region_utils.isGlobalRegion(region)) {\n config.region = region_utils.getRealRegion(region);\n }\n }\n if (typeof config.useDualstack === 'boolean'\n && typeof config.useDualstackEndpoint !== 'boolean') {\n config.useDualstackEndpoint = config.useDualstack;\n }\n }\n\n var ServiceClass = this.loadServiceClass(config || {});\n if (ServiceClass) {\n var originalConfig = AWS.util.copy(config);\n var svc = new ServiceClass(config);\n Object.defineProperty(svc, '_originalConfig', {\n get: function() { return originalConfig; },\n enumerable: false,\n configurable: true\n });\n svc._clientId = ++clientCount;\n return svc;\n }\n this.initialize(config);\n },\n\n /**\n * @api private\n */\n initialize: function initialize(config) {\n var svcConfig = AWS.config[this.serviceIdentifier];\n this.config = new AWS.Config(AWS.config);\n if (svcConfig) this.config.update(svcConfig, true);\n if (config) this.config.update(config, true);\n\n this.validateService();\n if (!this.config.endpoint) regionConfig.configureEndpoint(this);\n\n this.config.endpoint = this.endpointFromTemplate(this.config.endpoint);\n this.setEndpoint(this.config.endpoint);\n //enable attaching listeners to service client\n AWS.SequentialExecutor.call(this);\n AWS.Service.addDefaultMonitoringListeners(this);\n if ((this.config.clientSideMonitoring || AWS.Service._clientSideMonitoring) && this.publisher) {\n var publisher = this.publisher;\n this.addNamedListener('PUBLISH_API_CALL', 'apiCall', function PUBLISH_API_CALL(event) {\n process.nextTick(function() {publisher.eventHandler(event);});\n });\n this.addNamedListener('PUBLISH_API_ATTEMPT', 'apiCallAttempt', function PUBLISH_API_ATTEMPT(event) {\n process.nextTick(function() {publisher.eventHandler(event);});\n });\n }\n },\n\n /**\n * @api private\n */\n validateService: function validateService() {\n },\n\n /**\n * @api private\n */\n loadServiceClass: function loadServiceClass(serviceConfig) {\n var config = serviceConfig;\n if (!AWS.util.isEmpty(this.api)) {\n return null;\n } else if (config.apiConfig) {\n return AWS.Service.defineServiceApi(this.constructor, config.apiConfig);\n } else if (!this.constructor.services) {\n return null;\n } else {\n config = new AWS.Config(AWS.config);\n config.update(serviceConfig, true);\n var version = config.apiVersions[this.constructor.serviceIdentifier];\n version = version || config.apiVersion;\n return this.getLatestServiceClass(version);\n }\n },\n\n /**\n * @api private\n */\n getLatestServiceClass: function getLatestServiceClass(version) {\n version = this.getLatestServiceVersion(version);\n if (this.constructor.services[version] === null) {\n AWS.Service.defineServiceApi(this.constructor, version);\n }\n\n return this.constructor.services[version];\n },\n\n /**\n * @api private\n */\n getLatestServiceVersion: function getLatestServiceVersion(version) {\n if (!this.constructor.services || this.constructor.services.length === 0) {\n throw new Error('No services defined on ' +\n this.constructor.serviceIdentifier);\n }\n\n if (!version) {\n version = 'latest';\n } else if (AWS.util.isType(version, Date)) {\n version = AWS.util.date.iso8601(version).split('T')[0];\n }\n\n if (Object.hasOwnProperty(this.constructor.services, version)) {\n return version;\n }\n\n var keys = Object.keys(this.constructor.services).sort();\n var selectedVersion = null;\n for (var i = keys.length - 1; i >= 0; i--) {\n // versions that end in \"*\" are not available on disk and can be\n // skipped, so do not choose these as selectedVersions\n if (keys[i][keys[i].length - 1] !== '*') {\n selectedVersion = keys[i];\n }\n if (keys[i].substr(0, 10) <= version) {\n return selectedVersion;\n }\n }\n\n throw new Error('Could not find ' + this.constructor.serviceIdentifier +\n ' API to satisfy version constraint `' + version + '\\'');\n },\n\n /**\n * @api private\n */\n api: {},\n\n /**\n * @api private\n */\n defaultRetryCount: 3,\n\n /**\n * @api private\n */\n customizeRequests: function customizeRequests(callback) {\n if (!callback) {\n this.customRequestHandler = null;\n } else if (typeof callback === 'function') {\n this.customRequestHandler = callback;\n } else {\n throw new Error('Invalid callback type \\'' + typeof callback + '\\' provided in customizeRequests');\n }\n },\n\n /**\n * Calls an operation on a service with the given input parameters.\n *\n * @param operation [String] the name of the operation to call on the service.\n * @param params [map] a map of input options for the operation\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n makeRequest: function makeRequest(operation, params, callback) {\n if (typeof params === 'function') {\n callback = params;\n params = null;\n }\n\n params = params || {};\n if (this.config.params) { // copy only toplevel bound params\n var rules = this.api.operations[operation];\n if (rules) {\n params = AWS.util.copy(params);\n AWS.util.each(this.config.params, function(key, value) {\n if (rules.input.members[key]) {\n if (params[key] === undefined || params[key] === null) {\n params[key] = value;\n }\n }\n });\n }\n }\n\n var request = new AWS.Request(this, operation, params);\n this.addAllRequestListeners(request);\n this.attachMonitoringEmitter(request);\n if (callback) request.send(callback);\n return request;\n },\n\n /**\n * Calls an operation on a service with the given input parameters, without\n * any authentication data. This method is useful for \"public\" API operations.\n *\n * @param operation [String] the name of the operation to call on the service.\n * @param params [map] a map of input options for the operation\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n makeUnauthenticatedRequest: function makeUnauthenticatedRequest(operation, params, callback) {\n if (typeof params === 'function') {\n callback = params;\n params = {};\n }\n\n var request = this.makeRequest(operation, params).toUnauthenticated();\n return callback ? request.send(callback) : request;\n },\n\n /**\n * Waits for a given state\n *\n * @param state [String] the state on the service to wait for\n * @param params [map] a map of parameters to pass with each request\n * @option params $waiter [map] a map of configuration options for the waiter\n * @option params $waiter.delay [Number] The number of seconds to wait between\n * requests\n * @option params $waiter.maxAttempts [Number] The maximum number of requests\n * to send while waiting\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n waitFor: function waitFor(state, params, callback) {\n var waiter = new AWS.ResourceWaiter(this, state);\n return waiter.wait(params, callback);\n },\n\n /**\n * @api private\n */\n addAllRequestListeners: function addAllRequestListeners(request) {\n var list = [AWS.events, AWS.EventListeners.Core, this.serviceInterface(),\n AWS.EventListeners.CorePost];\n for (var i = 0; i < list.length; i++) {\n if (list[i]) request.addListeners(list[i]);\n }\n\n // disable parameter validation\n if (!this.config.paramValidation) {\n request.removeListener('validate',\n AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n\n if (this.config.logger) { // add logging events\n request.addListeners(AWS.EventListeners.Logger);\n }\n\n this.setupRequestListeners(request);\n // call prototype's customRequestHandler\n if (typeof this.constructor.prototype.customRequestHandler === 'function') {\n this.constructor.prototype.customRequestHandler(request);\n }\n // call instance's customRequestHandler\n if (Object.prototype.hasOwnProperty.call(this, 'customRequestHandler') && typeof this.customRequestHandler === 'function') {\n this.customRequestHandler(request);\n }\n },\n\n /**\n * Event recording metrics for a whole API call.\n * @returns {object} a subset of api call metrics\n * @api private\n */\n apiCallEvent: function apiCallEvent(request) {\n var api = request.service.api.operations[request.operation];\n var monitoringEvent = {\n Type: 'ApiCall',\n Api: api ? api.name : request.operation,\n Version: 1,\n Service: request.service.api.serviceId || request.service.api.endpointPrefix,\n Region: request.httpRequest.region,\n MaxRetriesExceeded: 0,\n UserAgent: request.httpRequest.getUserAgent(),\n };\n var response = request.response;\n if (response.httpResponse.statusCode) {\n monitoringEvent.FinalHttpStatusCode = response.httpResponse.statusCode;\n }\n if (response.error) {\n var error = response.error;\n var statusCode = response.httpResponse.statusCode;\n if (statusCode > 299) {\n if (error.code) monitoringEvent.FinalAwsException = error.code;\n if (error.message) monitoringEvent.FinalAwsExceptionMessage = error.message;\n } else {\n if (error.code || error.name) monitoringEvent.FinalSdkException = error.code || error.name;\n if (error.message) monitoringEvent.FinalSdkExceptionMessage = error.message;\n }\n }\n return monitoringEvent;\n },\n\n /**\n * Event recording metrics for an API call attempt.\n * @returns {object} a subset of api call attempt metrics\n * @api private\n */\n apiAttemptEvent: function apiAttemptEvent(request) {\n var api = request.service.api.operations[request.operation];\n var monitoringEvent = {\n Type: 'ApiCallAttempt',\n Api: api ? api.name : request.operation,\n Version: 1,\n Service: request.service.api.serviceId || request.service.api.endpointPrefix,\n Fqdn: request.httpRequest.endpoint.hostname,\n UserAgent: request.httpRequest.getUserAgent(),\n };\n var response = request.response;\n if (response.httpResponse.statusCode) {\n monitoringEvent.HttpStatusCode = response.httpResponse.statusCode;\n }\n if (\n !request._unAuthenticated &&\n request.service.config.credentials &&\n request.service.config.credentials.accessKeyId\n ) {\n monitoringEvent.AccessKey = request.service.config.credentials.accessKeyId;\n }\n if (!response.httpResponse.headers) return monitoringEvent;\n if (request.httpRequest.headers['x-amz-security-token']) {\n monitoringEvent.SessionToken = request.httpRequest.headers['x-amz-security-token'];\n }\n if (response.httpResponse.headers['x-amzn-requestid']) {\n monitoringEvent.XAmznRequestId = response.httpResponse.headers['x-amzn-requestid'];\n }\n if (response.httpResponse.headers['x-amz-request-id']) {\n monitoringEvent.XAmzRequestId = response.httpResponse.headers['x-amz-request-id'];\n }\n if (response.httpResponse.headers['x-amz-id-2']) {\n monitoringEvent.XAmzId2 = response.httpResponse.headers['x-amz-id-2'];\n }\n return monitoringEvent;\n },\n\n /**\n * Add metrics of failed request.\n * @api private\n */\n attemptFailEvent: function attemptFailEvent(request) {\n var monitoringEvent = this.apiAttemptEvent(request);\n var response = request.response;\n var error = response.error;\n if (response.httpResponse.statusCode > 299 ) {\n if (error.code) monitoringEvent.AwsException = error.code;\n if (error.message) monitoringEvent.AwsExceptionMessage = error.message;\n } else {\n if (error.code || error.name) monitoringEvent.SdkException = error.code || error.name;\n if (error.message) monitoringEvent.SdkExceptionMessage = error.message;\n }\n return monitoringEvent;\n },\n\n /**\n * Attach listeners to request object to fetch metrics of each request\n * and emit data object through \\'ApiCall\\' and \\'ApiCallAttempt\\' events.\n * @api private\n */\n attachMonitoringEmitter: function attachMonitoringEmitter(request) {\n var attemptTimestamp; //timestamp marking the beginning of a request attempt\n var attemptStartRealTime; //Start time of request attempt. Used to calculating attemptLatency\n var attemptLatency; //latency from request sent out to http response reaching SDK\n var callStartRealTime; //Start time of API call. Used to calculating API call latency\n var attemptCount = 0; //request.retryCount is not reliable here\n var region; //region cache region for each attempt since it can be updated in plase (e.g. s3)\n var callTimestamp; //timestamp when the request is created\n var self = this;\n var addToHead = true;\n\n request.on('validate', function () {\n callStartRealTime = AWS.util.realClock.now();\n callTimestamp = Date.now();\n }, addToHead);\n request.on('sign', function () {\n attemptStartRealTime = AWS.util.realClock.now();\n attemptTimestamp = Date.now();\n region = request.httpRequest.region;\n attemptCount++;\n }, addToHead);\n request.on('validateResponse', function() {\n attemptLatency = Math.round(AWS.util.realClock.now() - attemptStartRealTime);\n });\n request.addNamedListener('API_CALL_ATTEMPT', 'success', function API_CALL_ATTEMPT() {\n var apiAttemptEvent = self.apiAttemptEvent(request);\n apiAttemptEvent.Timestamp = attemptTimestamp;\n apiAttemptEvent.AttemptLatency = attemptLatency >= 0 ? attemptLatency : 0;\n apiAttemptEvent.Region = region;\n self.emit('apiCallAttempt', [apiAttemptEvent]);\n });\n request.addNamedListener('API_CALL_ATTEMPT_RETRY', 'retry', function API_CALL_ATTEMPT_RETRY() {\n var apiAttemptEvent = self.attemptFailEvent(request);\n apiAttemptEvent.Timestamp = attemptTimestamp;\n //attemptLatency may not be available if fail before response\n attemptLatency = attemptLatency ||\n Math.round(AWS.util.realClock.now() - attemptStartRealTime);\n apiAttemptEvent.AttemptLatency = attemptLatency >= 0 ? attemptLatency : 0;\n apiAttemptEvent.Region = region;\n self.emit('apiCallAttempt', [apiAttemptEvent]);\n });\n request.addNamedListener('API_CALL', 'complete', function API_CALL() {\n var apiCallEvent = self.apiCallEvent(request);\n apiCallEvent.AttemptCount = attemptCount;\n if (apiCallEvent.AttemptCount <= 0) return;\n apiCallEvent.Timestamp = callTimestamp;\n var latency = Math.round(AWS.util.realClock.now() - callStartRealTime);\n apiCallEvent.Latency = latency >= 0 ? latency : 0;\n var response = request.response;\n if (\n response.error &&\n response.error.retryable &&\n typeof response.retryCount === 'number' &&\n typeof response.maxRetries === 'number' &&\n (response.retryCount >= response.maxRetries)\n ) {\n apiCallEvent.MaxRetriesExceeded = 1;\n }\n self.emit('apiCall', [apiCallEvent]);\n });\n },\n\n /**\n * Override this method to setup any custom request listeners for each\n * new request to the service.\n *\n * @method_abstract This is an abstract method.\n */\n setupRequestListeners: function setupRequestListeners(request) {\n },\n\n /**\n * Gets the signing name for a given request\n * @api private\n */\n getSigningName: function getSigningName() {\n return this.api.signingName || this.api.endpointPrefix;\n },\n\n /**\n * Gets the signer class for a given request\n * @api private\n */\n getSignerClass: function getSignerClass(request) {\n var version;\n // get operation authtype if present\n var operation = null;\n var authtype = '';\n if (request) {\n var operations = request.service.api.operations || {};\n operation = operations[request.operation] || null;\n authtype = operation ? operation.authtype : '';\n }\n if (this.config.signatureVersion) {\n version = this.config.signatureVersion;\n } else if (authtype === 'v4' || authtype === 'v4-unsigned-body') {\n version = 'v4';\n } else if (authtype === 'bearer') {\n version = 'bearer';\n } else {\n version = this.api.signatureVersion;\n }\n return AWS.Signers.RequestSigner.getVersion(version);\n },\n\n /**\n * @api private\n */\n serviceInterface: function serviceInterface() {\n switch (this.api.protocol) {\n case 'ec2': return AWS.EventListeners.Query;\n case 'query': return AWS.EventListeners.Query;\n case 'json': return AWS.EventListeners.Json;\n case 'rest-json': return AWS.EventListeners.RestJson;\n case 'rest-xml': return AWS.EventListeners.RestXml;\n }\n if (this.api.protocol) {\n throw new Error('Invalid service `protocol\\' ' +\n this.api.protocol + ' in API config');\n }\n },\n\n /**\n * @api private\n */\n successfulResponse: function successfulResponse(resp) {\n return resp.httpResponse.statusCode < 300;\n },\n\n /**\n * How many times a failed request should be retried before giving up.\n * the defaultRetryCount can be overriden by service classes.\n *\n * @api private\n */\n numRetries: function numRetries() {\n if (this.config.maxRetries !== undefined) {\n return this.config.maxRetries;\n } else {\n return this.defaultRetryCount;\n }\n },\n\n /**\n * @api private\n */\n retryDelays: function retryDelays(retryCount, err) {\n return AWS.util.calculateRetryDelay(retryCount, this.config.retryDelayOptions, err);\n },\n\n /**\n * @api private\n */\n retryableError: function retryableError(error) {\n if (this.timeoutError(error)) return true;\n if (this.networkingError(error)) return true;\n if (this.expiredCredentialsError(error)) return true;\n if (this.throttledError(error)) return true;\n if (error.statusCode >= 500) return true;\n return false;\n },\n\n /**\n * @api private\n */\n networkingError: function networkingError(error) {\n return error.code === 'NetworkingError';\n },\n\n /**\n * @api private\n */\n timeoutError: function timeoutError(error) {\n return error.code === 'TimeoutError';\n },\n\n /**\n * @api private\n */\n expiredCredentialsError: function expiredCredentialsError(error) {\n // TODO : this only handles *one* of the expired credential codes\n return (error.code === 'ExpiredTokenException');\n },\n\n /**\n * @api private\n */\n clockSkewError: function clockSkewError(error) {\n switch (error.code) {\n case 'RequestTimeTooSkewed':\n case 'RequestExpired':\n case 'InvalidSignatureException':\n case 'SignatureDoesNotMatch':\n case 'AuthFailure':\n case 'RequestInTheFuture':\n return true;\n default: return false;\n }\n },\n\n /**\n * @api private\n */\n getSkewCorrectedDate: function getSkewCorrectedDate() {\n return new Date(Date.now() + this.config.systemClockOffset);\n },\n\n /**\n * @api private\n */\n applyClockOffset: function applyClockOffset(newServerTime) {\n if (newServerTime) {\n this.config.systemClockOffset = newServerTime - Date.now();\n }\n },\n\n /**\n * @api private\n */\n isClockSkewed: function isClockSkewed(newServerTime) {\n if (newServerTime) {\n return Math.abs(this.getSkewCorrectedDate().getTime() - newServerTime) >= 300000;\n }\n },\n\n /**\n * @api private\n */\n throttledError: function throttledError(error) {\n // this logic varies between services\n if (error.statusCode === 429) return true;\n switch (error.code) {\n case 'ProvisionedThroughputExceededException':\n case 'Throttling':\n case 'ThrottlingException':\n case 'RequestLimitExceeded':\n case 'RequestThrottled':\n case 'RequestThrottledException':\n case 'TooManyRequestsException':\n case 'TransactionInProgressException': //dynamodb\n case 'EC2ThrottledException':\n return true;\n default:\n return false;\n }\n },\n\n /**\n * @api private\n */\n endpointFromTemplate: function endpointFromTemplate(endpoint) {\n if (typeof endpoint !== 'string') return endpoint;\n\n var e = endpoint;\n e = e.replace(/\\{service\\}/g, this.api.endpointPrefix);\n e = e.replace(/\\{region\\}/g, this.config.region);\n e = e.replace(/\\{scheme\\}/g, this.config.sslEnabled ? 'https' : 'http');\n return e;\n },\n\n /**\n * @api private\n */\n setEndpoint: function setEndpoint(endpoint) {\n this.endpoint = new AWS.Endpoint(endpoint, this.config);\n },\n\n /**\n * @api private\n */\n paginationConfig: function paginationConfig(operation, throwException) {\n var paginator = this.api.operations[operation].paginator;\n if (!paginator) {\n if (throwException) {\n var e = new Error();\n throw AWS.util.error(e, 'No pagination configuration for ' + operation);\n }\n return null;\n }\n\n return paginator;\n }\n});\n\nAWS.util.update(AWS.Service, {\n\n /**\n * Adds one method for each operation described in the api configuration\n *\n * @api private\n */\n defineMethods: function defineMethods(svc) {\n AWS.util.each(svc.prototype.api.operations, function iterator(method) {\n if (svc.prototype[method]) return;\n var operation = svc.prototype.api.operations[method];\n if (operation.authtype === 'none') {\n svc.prototype[method] = function (params, callback) {\n return this.makeUnauthenticatedRequest(method, params, callback);\n };\n } else {\n svc.prototype[method] = function (params, callback) {\n return this.makeRequest(method, params, callback);\n };\n }\n });\n },\n\n /**\n * Defines a new Service class using a service identifier and list of versions\n * including an optional set of features (functions) to apply to the class\n * prototype.\n *\n * @param serviceIdentifier [String] the identifier for the service\n * @param versions [Array] a list of versions that work with this\n * service\n * @param features [Object] an object to attach to the prototype\n * @return [Class] the service class defined by this function.\n */\n defineService: function defineService(serviceIdentifier, versions, features) {\n AWS.Service._serviceMap[serviceIdentifier] = true;\n if (!Array.isArray(versions)) {\n features = versions;\n versions = [];\n }\n\n var svc = inherit(AWS.Service, features || {});\n\n if (typeof serviceIdentifier === 'string') {\n AWS.Service.addVersions(svc, versions);\n\n var identifier = svc.serviceIdentifier || serviceIdentifier;\n svc.serviceIdentifier = identifier;\n } else { // defineService called with an API\n svc.prototype.api = serviceIdentifier;\n AWS.Service.defineMethods(svc);\n }\n AWS.SequentialExecutor.call(this.prototype);\n //util.clientSideMonitoring is only available in node\n if (!this.prototype.publisher && AWS.util.clientSideMonitoring) {\n var Publisher = AWS.util.clientSideMonitoring.Publisher;\n var configProvider = AWS.util.clientSideMonitoring.configProvider;\n var publisherConfig = configProvider();\n this.prototype.publisher = new Publisher(publisherConfig);\n if (publisherConfig.enabled) {\n //if csm is enabled in environment, SDK should send all metrics\n AWS.Service._clientSideMonitoring = true;\n }\n }\n AWS.SequentialExecutor.call(svc.prototype);\n AWS.Service.addDefaultMonitoringListeners(svc.prototype);\n return svc;\n },\n\n /**\n * @api private\n */\n addVersions: function addVersions(svc, versions) {\n if (!Array.isArray(versions)) versions = [versions];\n\n svc.services = svc.services || {};\n for (var i = 0; i < versions.length; i++) {\n if (svc.services[versions[i]] === undefined) {\n svc.services[versions[i]] = null;\n }\n }\n\n svc.apiVersions = Object.keys(svc.services).sort();\n },\n\n /**\n * @api private\n */\n defineServiceApi: function defineServiceApi(superclass, version, apiConfig) {\n var svc = inherit(superclass, {\n serviceIdentifier: superclass.serviceIdentifier\n });\n\n function setApi(api) {\n if (api.isApi) {\n svc.prototype.api = api;\n } else {\n svc.prototype.api = new Api(api, {\n serviceIdentifier: superclass.serviceIdentifier\n });\n }\n }\n\n if (typeof version === 'string') {\n if (apiConfig) {\n setApi(apiConfig);\n } else {\n try {\n setApi(AWS.apiLoader(superclass.serviceIdentifier, version));\n } catch (err) {\n throw AWS.util.error(err, {\n message: 'Could not find API configuration ' +\n superclass.serviceIdentifier + '-' + version\n });\n }\n }\n if (!Object.prototype.hasOwnProperty.call(superclass.services, version)) {\n superclass.apiVersions = superclass.apiVersions.concat(version).sort();\n }\n superclass.services[version] = svc;\n } else {\n setApi(version);\n }\n\n AWS.Service.defineMethods(svc);\n return svc;\n },\n\n /**\n * @api private\n */\n hasService: function(identifier) {\n return Object.prototype.hasOwnProperty.call(AWS.Service._serviceMap, identifier);\n },\n\n /**\n * @param attachOn attach default monitoring listeners to object\n *\n * Each monitoring event should be emitted from service client to service constructor prototype and then\n * to global service prototype like bubbling up. These default monitoring events listener will transfer\n * the monitoring events to the upper layer.\n * @api private\n */\n addDefaultMonitoringListeners: function addDefaultMonitoringListeners(attachOn) {\n attachOn.addNamedListener('MONITOR_EVENTS_BUBBLE', 'apiCallAttempt', function EVENTS_BUBBLE(event) {\n var baseClass = Object.getPrototypeOf(attachOn);\n if (baseClass._events) baseClass.emit('apiCallAttempt', [event]);\n });\n attachOn.addNamedListener('CALL_EVENTS_BUBBLE', 'apiCall', function CALL_EVENTS_BUBBLE(event) {\n var baseClass = Object.getPrototypeOf(attachOn);\n if (baseClass._events) baseClass.emit('apiCall', [event]);\n });\n },\n\n /**\n * @api private\n */\n _serviceMap: {}\n});\n\nAWS.util.mixin(AWS.Service, AWS.SequentialExecutor);\n\n/**\n * @api private\n */\nmodule.exports = AWS.Service;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.APIGateway.prototype, {\n/**\n * Sets the Accept header to application/json.\n *\n * @api private\n */\n setAcceptHeader: function setAcceptHeader(req) {\n var httpRequest = req.httpRequest;\n if (!httpRequest.headers.Accept) {\n httpRequest.headers['Accept'] = 'application/json';\n }\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('build', this.setAcceptHeader);\n if (request.operation === 'getExport') {\n var params = request.params || {};\n if (params.exportType === 'swagger') {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n }\n }\n});\n\n","var AWS = require('../core');\n\n// pull in CloudFront signer\nrequire('../cloudfront/signer');\n\nAWS.util.update(AWS.CloudFront.prototype, {\n\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('extractData', AWS.util.hoistPayloadMember);\n }\n\n});\n","var AWS = require('../core');\nrequire('../dynamodb/document_client');\n\nAWS.util.update(AWS.DynamoDB.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.service.config.dynamoDbCrc32) {\n request.removeListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA);\n request.addListener('extractData', this.checkCrc32);\n request.addListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA);\n }\n },\n\n /**\n * @api private\n */\n checkCrc32: function checkCrc32(resp) {\n if (!resp.httpResponse.streaming && !resp.request.service.crc32IsValid(resp)) {\n resp.data = null;\n resp.error = AWS.util.error(new Error(), {\n code: 'CRC32CheckFailed',\n message: 'CRC32 integrity check failed',\n retryable: true\n });\n resp.request.haltHandlersOnError();\n throw (resp.error);\n }\n },\n\n /**\n * @api private\n */\n crc32IsValid: function crc32IsValid(resp) {\n var crc = resp.httpResponse.headers['x-amz-crc32'];\n if (!crc) return true; // no (valid) CRC32 header\n return parseInt(crc, 10) === AWS.util.crypto.crc32(resp.httpResponse.body);\n },\n\n /**\n * @api private\n */\n defaultRetryCount: 10,\n\n /**\n * @api private\n */\n retryDelays: function retryDelays(retryCount, err) {\n var retryDelayOptions = AWS.util.copy(this.config.retryDelayOptions);\n\n if (typeof retryDelayOptions.base !== 'number') {\n retryDelayOptions.base = 50; // default for dynamodb\n }\n var delay = AWS.util.calculateRetryDelay(retryCount, retryDelayOptions, err);\n return delay;\n }\n});\n","var AWS = require('../core');\n\nAWS.util.update(AWS.EC2.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.removeListener('extractError', AWS.EventListeners.Query.EXTRACT_ERROR);\n request.addListener('extractError', this.extractError);\n\n if (request.operation === 'copySnapshot') {\n request.onAsync('validate', this.buildCopySnapshotPresignedUrl);\n }\n },\n\n /**\n * @api private\n */\n buildCopySnapshotPresignedUrl: function buildCopySnapshotPresignedUrl(req, done) {\n if (req.params.PresignedUrl || req._subRequest) {\n return done();\n }\n\n req.params = AWS.util.copy(req.params);\n req.params.DestinationRegion = req.service.config.region;\n\n var config = AWS.util.copy(req.service.config);\n delete config.endpoint;\n config.region = req.params.SourceRegion;\n var svc = new req.service.constructor(config);\n var newReq = svc[req.operation](req.params);\n newReq._subRequest = true;\n newReq.presign(function(err, url) {\n if (err) done(err);\n else {\n req.params.PresignedUrl = url;\n done();\n }\n });\n },\n\n /**\n * @api private\n */\n extractError: function extractError(resp) {\n // EC2 nests the error code and message deeper than other AWS Query services.\n var httpResponse = resp.httpResponse;\n var data = new AWS.XML.Parser().parse(httpResponse.body.toString() || '');\n if (data.Errors) {\n resp.error = AWS.util.error(new Error(), {\n code: data.Errors.Error.Code,\n message: data.Errors.Error.Message\n });\n } else {\n resp.error = AWS.util.error(new Error(), {\n code: httpResponse.statusCode,\n message: null\n });\n }\n resp.error.requestId = data.RequestID || null;\n }\n});\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar blobPayloadOutputOps = [\n 'deleteThingShadow',\n 'getThingShadow',\n 'updateThingShadow'\n];\n\n/**\n * Constructs a service interface object. Each API operation is exposed as a\n * function on service.\n *\n * ### Sending a Request Using IotData\n *\n * ```javascript\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * iotdata.getThingShadow(params, function (err, data) {\n * if (err) console.log(err, err.stack); // an error occurred\n * else console.log(data); // successful response\n * });\n * ```\n *\n * ### Locking the API Version\n *\n * In order to ensure that the IotData object uses this specific API,\n * you can construct the object by passing the `apiVersion` option to the\n * constructor:\n *\n * ```javascript\n * var iotdata = new AWS.IotData({\n * endpoint: 'my.host.tld',\n * apiVersion: '2015-05-28'\n * });\n * ```\n *\n * You can also set the API version globally in `AWS.config.apiVersions` using\n * the **iotdata** service identifier:\n *\n * ```javascript\n * AWS.config.apiVersions = {\n * iotdata: '2015-05-28',\n * // other service API versions\n * };\n *\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * ```\n *\n * @note You *must* provide an `endpoint` configuration parameter when\n * constructing this service. See {constructor} for more information.\n *\n * @!method constructor(options = {})\n * Constructs a service object. This object has one method for each\n * API operation.\n *\n * @example Constructing a IotData object\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * @note You *must* provide an `endpoint` when constructing this service.\n * @option (see AWS.Config.constructor)\n *\n * @service iotdata\n * @version 2015-05-28\n */\nAWS.util.update(AWS.IotData.prototype, {\n /**\n * @api private\n */\n validateService: function validateService() {\n if (!this.config.endpoint || this.config.endpoint.indexOf('{') >= 0) {\n var msg = 'AWS.IotData requires an explicit ' +\n '`endpoint\\' configuration option.';\n throw AWS.util.error(new Error(),\n {name: 'InvalidEndpoint', message: msg});\n }\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validateResponse', this.validateResponseBody);\n if (blobPayloadOutputOps.indexOf(request.operation) > -1) {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n },\n\n /**\n * @api private\n */\n validateResponseBody: function validateResponseBody(resp) {\n var body = resp.httpResponse.body.toString() || '{}';\n var bodyCheck = body.trim();\n if (!bodyCheck || bodyCheck.charAt(0) !== '{') {\n resp.httpResponse.body = '';\n }\n }\n\n});\n","var AWS = require('../core');\n\nAWS.util.update(AWS.Lambda.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.operation === 'invoke') {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n }\n});\n\n","var AWS = require('../core');\n\nAWS.util.update(AWS.MachineLearning.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.operation === 'predict') {\n request.addListener('build', this.buildEndpoint);\n }\n },\n\n /**\n * Updates request endpoint from PredictEndpoint\n * @api private\n */\n buildEndpoint: function buildEndpoint(request) {\n var url = request.params.PredictEndpoint;\n if (url) {\n request.httpRequest.endpoint = new AWS.Endpoint(url);\n }\n }\n\n});\n","require('../polly/presigner');\n","var AWS = require('../core');\nvar rdsutil = require('./rdsutil');\nrequire('../rds/signer');\n /**\n * @api private\n */\n var crossRegionOperations = ['copyDBSnapshot', 'createDBInstanceReadReplica', 'createDBCluster', 'copyDBClusterSnapshot', 'startDBInstanceAutomatedBackupsReplication'];\n\n AWS.util.update(AWS.RDS.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n rdsutil.setupRequestListeners(this, request, crossRegionOperations);\n },\n });\n","var AWS = require('../core');\n\nvar rdsutil = {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(service, request, crossRegionOperations) {\n if (crossRegionOperations.indexOf(request.operation) !== -1 &&\n request.params.SourceRegion) {\n request.params = AWS.util.copy(request.params);\n if (request.params.PreSignedUrl ||\n request.params.SourceRegion === service.config.region) {\n delete request.params.SourceRegion;\n } else {\n var doesParamValidation = !!service.config.paramValidation;\n // remove the validate parameters listener so we can re-add it after we build the URL\n if (doesParamValidation) {\n request.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n request.onAsync('validate', rdsutil.buildCrossRegionPresignedUrl);\n if (doesParamValidation) {\n request.addListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n }\n }\n },\n\n /**\n * @api private\n */\n buildCrossRegionPresignedUrl: function buildCrossRegionPresignedUrl(req, done) {\n var config = AWS.util.copy(req.service.config);\n config.region = req.params.SourceRegion;\n delete req.params.SourceRegion;\n delete config.endpoint;\n // relevant params for the operation will already be in req.params\n delete config.params;\n config.signatureVersion = 'v4';\n var destinationRegion = req.service.config.region;\n\n var svc = new req.service.constructor(config);\n var newReq = svc[req.operation](AWS.util.copy(req.params));\n newReq.on('build', function addDestinationRegionParam(request) {\n var httpRequest = request.httpRequest;\n httpRequest.params.DestinationRegion = destinationRegion;\n httpRequest.body = AWS.util.queryParamsToString(httpRequest.params);\n });\n newReq.presign(function(err, url) {\n if (err) done(err);\n else {\n req.params.PreSignedUrl = url;\n done();\n }\n });\n }\n};\n\n/**\n * @api private\n */\nmodule.exports = rdsutil;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.Route53.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.on('build', this.sanitizeUrl);\n },\n\n /**\n * @api private\n */\n sanitizeUrl: function sanitizeUrl(request) {\n var path = request.httpRequest.path;\n request.httpRequest.path = path.replace(/\\/%2F\\w+%2F/, '/');\n },\n\n /**\n * @return [Boolean] whether the error can be retried\n * @api private\n */\n retryableError: function retryableError(error) {\n if (error.code === 'PriorRequestNotComplete' &&\n error.statusCode === 400) {\n return true;\n } else {\n var _super = AWS.Service.prototype.retryableError;\n return _super.call(this, error);\n }\n }\n});\n","var AWS = require('../core');\nvar v4Credentials = require('../signers/v4_credentials');\nvar resolveRegionalEndpointsFlag = require('../config_regional_endpoint');\nvar s3util = require('./s3util');\nvar regionUtil = require('../region_config');\n\n// Pull in managed upload extension\nrequire('../s3/managed_upload');\n\n/**\n * @api private\n */\nvar operationsWith200StatusCodeError = {\n 'completeMultipartUpload': true,\n 'copyObject': true,\n 'uploadPartCopy': true\n};\n\n/**\n * @api private\n */\n var regionRedirectErrorCodes = [\n 'AuthorizationHeaderMalformed', // non-head operations on virtual-hosted global bucket endpoints\n 'BadRequest', // head operations on virtual-hosted global bucket endpoints\n 'PermanentRedirect', // non-head operations on path-style or regional endpoints\n 301 // head operations on path-style or regional endpoints\n ];\n\nvar OBJECT_LAMBDA_SERVICE = 's3-object-lambda';\n\nAWS.util.update(AWS.S3.prototype, {\n /**\n * @api private\n */\n getSignatureVersion: function getSignatureVersion(request) {\n var defaultApiVersion = this.api.signatureVersion;\n var userDefinedVersion = this._originalConfig ? this._originalConfig.signatureVersion : null;\n var regionDefinedVersion = this.config.signatureVersion;\n var isPresigned = request ? request.isPresigned() : false;\n /*\n 1) User defined version specified:\n a) always return user defined version\n 2) No user defined version specified:\n a) If not using presigned urls, default to V4\n b) If using presigned urls, default to lowest version the region supports\n */\n if (userDefinedVersion) {\n userDefinedVersion = userDefinedVersion === 'v2' ? 's3' : userDefinedVersion;\n return userDefinedVersion;\n }\n if (isPresigned !== true) {\n defaultApiVersion = 'v4';\n } else if (regionDefinedVersion) {\n defaultApiVersion = regionDefinedVersion;\n }\n return defaultApiVersion;\n },\n\n /**\n * @api private\n */\n getSigningName: function getSigningName(req) {\n if (req && req.operation === 'writeGetObjectResponse') {\n return OBJECT_LAMBDA_SERVICE;\n }\n\n var _super = AWS.Service.prototype.getSigningName;\n return (req && req._parsedArn && req._parsedArn.service)\n ? req._parsedArn.service\n : _super.call(this);\n },\n\n /**\n * @api private\n */\n getSignerClass: function getSignerClass(request) {\n var signatureVersion = this.getSignatureVersion(request);\n return AWS.Signers.RequestSigner.getVersion(signatureVersion);\n },\n\n /**\n * @api private\n */\n validateService: function validateService() {\n var msg;\n var messages = [];\n\n // default to us-east-1 when no region is provided\n if (!this.config.region) this.config.region = 'us-east-1';\n\n if (!this.config.endpoint && this.config.s3BucketEndpoint) {\n messages.push('An endpoint must be provided when configuring ' +\n '`s3BucketEndpoint` to true.');\n }\n if (messages.length === 1) {\n msg = messages[0];\n } else if (messages.length > 1) {\n msg = 'Multiple configuration errors:\\n' + messages.join('\\n');\n }\n if (msg) {\n throw AWS.util.error(new Error(),\n {name: 'InvalidEndpoint', message: msg});\n }\n },\n\n /**\n * @api private\n */\n shouldDisableBodySigning: function shouldDisableBodySigning(request) {\n var signerClass = this.getSignerClass();\n if (this.config.s3DisableBodySigning === true && signerClass === AWS.Signers.V4\n && request.httpRequest.endpoint.protocol === 'https:') {\n return true;\n }\n return false;\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validateResponse', this.setExpiresString);\n var prependListener = true;\n request.addListener('validate', this.validateScheme);\n request.addListener('validate', this.validateBucketName, prependListener);\n request.addListener('validate', this.optInUsEast1RegionalEndpoint, prependListener);\n\n request.removeListener('validate',\n AWS.EventListeners.Core.VALIDATE_REGION);\n request.addListener('build', this.addContentType);\n request.addListener('build', this.computeContentMd5);\n request.addListener('build', this.computeSseCustomerKeyMd5);\n request.addListener('build', this.populateURI);\n request.addListener('afterBuild', this.addExpect100Continue);\n request.addListener('extractError', this.extractError);\n request.addListener('extractData', AWS.util.hoistPayloadMember);\n request.addListener('extractData', this.extractData);\n request.addListener('extractData', this.extractErrorFrom200Response);\n request.addListener('beforePresign', this.prepareSignedUrl);\n if (this.shouldDisableBodySigning(request)) {\n request.removeListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256);\n request.addListener('afterBuild', this.disableBodySigning);\n }\n //deal with ARNs supplied to Bucket\n if (request.operation !== 'createBucket' && s3util.isArnInParam(request, 'Bucket')) {\n // avoid duplicate parsing in the future\n request._parsedArn = AWS.util.ARN.parse(request.params.Bucket);\n\n request.removeListener('validate', this.validateBucketName);\n request.removeListener('build', this.populateURI);\n if (request._parsedArn.service === 's3') {\n request.addListener('validate', s3util.validateS3AccessPointArn);\n request.addListener('validate', this.validateArnResourceType);\n request.addListener('validate', this.validateArnRegion);\n } else if (request._parsedArn.service === 's3-outposts') {\n request.addListener('validate', s3util.validateOutpostsAccessPointArn);\n request.addListener('validate', s3util.validateOutpostsArn);\n request.addListener('validate', s3util.validateArnRegion);\n }\n request.addListener('validate', s3util.validateArnAccount);\n request.addListener('validate', s3util.validateArnService);\n request.addListener('build', this.populateUriFromAccessPointArn);\n request.addListener('build', s3util.validatePopulateUriFromArn);\n return;\n }\n //listeners regarding region inference\n request.addListener('validate', this.validateBucketEndpoint);\n request.addListener('validate', this.correctBucketRegionFromCache);\n request.onAsync('extractError', this.requestBucketRegion);\n if (AWS.util.isBrowser()) {\n request.onAsync('retry', this.reqRegionForNetworkingError);\n }\n },\n\n /**\n * @api private\n */\n validateScheme: function(req) {\n var params = req.params,\n scheme = req.httpRequest.endpoint.protocol,\n sensitive = params.SSECustomerKey || params.CopySourceSSECustomerKey;\n if (sensitive && scheme !== 'https:') {\n var msg = 'Cannot send SSE keys over HTTP. Set \\'sslEnabled\\'' +\n 'to \\'true\\' in your configuration';\n throw AWS.util.error(new Error(),\n { code: 'ConfigError', message: msg });\n }\n },\n\n /**\n * @api private\n */\n validateBucketEndpoint: function(req) {\n if (!req.params.Bucket && req.service.config.s3BucketEndpoint) {\n var msg = 'Cannot send requests to root API with `s3BucketEndpoint` set.';\n throw AWS.util.error(new Error(),\n { code: 'ConfigError', message: msg });\n }\n },\n\n /**\n * @api private\n */\n validateArnRegion: function validateArnRegion(req) {\n s3util.validateArnRegion(req, { allowFipsEndpoint: true });\n },\n\n /**\n * Validate resource-type supplied in S3 ARN\n */\n validateArnResourceType: function validateArnResourceType(req) {\n var resource = req._parsedArn.resource;\n\n if (\n resource.indexOf('accesspoint:') !== 0 &&\n resource.indexOf('accesspoint/') !== 0\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN resource should begin with \\'accesspoint/\\''\n });\n }\n },\n\n /**\n * @api private\n */\n validateBucketName: function validateBucketName(req) {\n var service = req.service;\n var signatureVersion = service.getSignatureVersion(req);\n var bucket = req.params && req.params.Bucket;\n var key = req.params && req.params.Key;\n var slashIndex = bucket && bucket.indexOf('/');\n if (bucket && slashIndex >= 0) {\n if (typeof key === 'string' && slashIndex > 0) {\n req.params = AWS.util.copy(req.params);\n // Need to include trailing slash to match sigv2 behavior\n var prefix = bucket.substr(slashIndex + 1) || '';\n req.params.Key = prefix + '/' + key;\n req.params.Bucket = bucket.substr(0, slashIndex);\n } else if (signatureVersion === 'v4') {\n var msg = 'Bucket names cannot contain forward slashes. Bucket: ' + bucket;\n throw AWS.util.error(new Error(),\n { code: 'InvalidBucket', message: msg });\n }\n }\n },\n\n /**\n * @api private\n */\n isValidAccelerateOperation: function isValidAccelerateOperation(operation) {\n var invalidOperations = [\n 'createBucket',\n 'deleteBucket',\n 'listBuckets'\n ];\n return invalidOperations.indexOf(operation) === -1;\n },\n\n /**\n * When us-east-1 region endpoint configuration is set, in stead of sending request to\n * global endpoint(e.g. 's3.amazonaws.com'), we will send request to\n * 's3.us-east-1.amazonaws.com'.\n * @api private\n */\n optInUsEast1RegionalEndpoint: function optInUsEast1RegionalEndpoint(req) {\n var service = req.service;\n var config = service.config;\n config.s3UsEast1RegionalEndpoint = resolveRegionalEndpointsFlag(service._originalConfig, {\n env: 'AWS_S3_US_EAST_1_REGIONAL_ENDPOINT',\n sharedConfig: 's3_us_east_1_regional_endpoint',\n clientConfig: 's3UsEast1RegionalEndpoint'\n });\n if (\n !(service._originalConfig || {}).endpoint &&\n req.httpRequest.region === 'us-east-1' &&\n config.s3UsEast1RegionalEndpoint === 'regional' &&\n req.httpRequest.endpoint.hostname.indexOf('s3.amazonaws.com') >= 0\n ) {\n var insertPoint = config.endpoint.indexOf('.amazonaws.com');\n var regionalEndpoint = config.endpoint.substring(0, insertPoint) +\n '.us-east-1' + config.endpoint.substring(insertPoint);\n req.httpRequest.updateEndpoint(regionalEndpoint);\n }\n },\n\n /**\n * S3 prefers dns-compatible bucket names to be moved from the uri path\n * to the hostname as a sub-domain. This is not possible, even for dns-compat\n * buckets when using SSL and the bucket name contains a dot ('.'). The\n * ssl wildcard certificate is only 1-level deep.\n *\n * @api private\n */\n populateURI: function populateURI(req) {\n var httpRequest = req.httpRequest;\n var b = req.params.Bucket;\n var service = req.service;\n var endpoint = httpRequest.endpoint;\n if (b) {\n if (!service.pathStyleBucketName(b)) {\n if (service.config.useAccelerateEndpoint && service.isValidAccelerateOperation(req.operation)) {\n if (service.config.useDualstackEndpoint) {\n endpoint.hostname = b + '.s3-accelerate.dualstack.amazonaws.com';\n } else {\n endpoint.hostname = b + '.s3-accelerate.amazonaws.com';\n }\n } else if (!service.config.s3BucketEndpoint) {\n endpoint.hostname =\n b + '.' + endpoint.hostname;\n }\n\n var port = endpoint.port;\n if (port !== 80 && port !== 443) {\n endpoint.host = endpoint.hostname + ':' +\n endpoint.port;\n } else {\n endpoint.host = endpoint.hostname;\n }\n\n httpRequest.virtualHostedBucket = b; // needed for signing the request\n service.removeVirtualHostedBucketFromPath(req);\n }\n }\n },\n\n /**\n * Takes the bucket name out of the path if bucket is virtual-hosted\n *\n * @api private\n */\n removeVirtualHostedBucketFromPath: function removeVirtualHostedBucketFromPath(req) {\n var httpRequest = req.httpRequest;\n var bucket = httpRequest.virtualHostedBucket;\n if (bucket && httpRequest.path) {\n if (req.params && req.params.Key) {\n var encodedS3Key = '/' + AWS.util.uriEscapePath(req.params.Key);\n if (httpRequest.path.indexOf(encodedS3Key) === 0 && (httpRequest.path.length === encodedS3Key.length || httpRequest.path[encodedS3Key.length] === '?')) {\n //path only contains key or path contains only key and querystring\n return;\n }\n }\n httpRequest.path = httpRequest.path.replace(new RegExp('/' + bucket), '');\n if (httpRequest.path[0] !== '/') {\n httpRequest.path = '/' + httpRequest.path;\n }\n }\n },\n\n /**\n * When user supply an access point ARN in the Bucket parameter, we need to\n * populate the URI according to the ARN.\n */\n populateUriFromAccessPointArn: function populateUriFromAccessPointArn(req) {\n var accessPointArn = req._parsedArn;\n\n var isOutpostArn = accessPointArn.service === 's3-outposts';\n var isObjectLambdaArn = accessPointArn.service === 's3-object-lambda';\n\n var outpostsSuffix = isOutpostArn ? '.' + accessPointArn.outpostId: '';\n var serviceName = isOutpostArn ? 's3-outposts': 's3-accesspoint';\n var fipsSuffix = !isOutpostArn && req.service.config.useFipsEndpoint ? '-fips': '';\n var dualStackSuffix = !isOutpostArn &&\n req.service.config.useDualstackEndpoint ? '.dualstack' : '';\n\n var endpoint = req.httpRequest.endpoint;\n var dnsSuffix = regionUtil.getEndpointSuffix(accessPointArn.region);\n var useArnRegion = req.service.config.s3UseArnRegion;\n\n endpoint.hostname = [\n accessPointArn.accessPoint + '-' + accessPointArn.accountId + outpostsSuffix,\n serviceName + fipsSuffix + dualStackSuffix,\n useArnRegion ? accessPointArn.region : req.service.config.region,\n dnsSuffix\n ].join('.');\n\n if (isObjectLambdaArn) {\n // should be in the format: \"accesspoint/${accesspointName}\"\n var serviceName = 's3-object-lambda';\n var accesspointName = accessPointArn.resource.split('/')[1];\n var fipsSuffix = req.service.config.useFipsEndpoint ? '-fips': '';\n endpoint.hostname = [\n accesspointName + '-' + accessPointArn.accountId,\n serviceName + fipsSuffix,\n useArnRegion ? accessPointArn.region : req.service.config.region,\n dnsSuffix\n ].join('.');\n }\n endpoint.host = endpoint.hostname;\n var encodedArn = AWS.util.uriEscape(req.params.Bucket);\n var path = req.httpRequest.path;\n //remove the Bucket value from path\n req.httpRequest.path = path.replace(new RegExp('/' + encodedArn), '');\n if (req.httpRequest.path[0] !== '/') {\n req.httpRequest.path = '/' + req.httpRequest.path;\n }\n req.httpRequest.region = accessPointArn.region; //region used to sign\n },\n\n /**\n * Adds Expect: 100-continue header if payload is greater-or-equal 1MB\n * @api private\n */\n addExpect100Continue: function addExpect100Continue(req) {\n var len = req.httpRequest.headers['Content-Length'];\n if (AWS.util.isNode() && (len >= 1024 * 1024 || req.params.Body instanceof AWS.util.stream.Stream)) {\n req.httpRequest.headers['Expect'] = '100-continue';\n }\n },\n\n /**\n * Adds a default content type if none is supplied.\n *\n * @api private\n */\n addContentType: function addContentType(req) {\n var httpRequest = req.httpRequest;\n if (httpRequest.method === 'GET' || httpRequest.method === 'HEAD') {\n // Content-Type is not set in GET/HEAD requests\n delete httpRequest.headers['Content-Type'];\n return;\n }\n\n if (!httpRequest.headers['Content-Type']) { // always have a Content-Type\n httpRequest.headers['Content-Type'] = 'application/octet-stream';\n }\n\n var contentType = httpRequest.headers['Content-Type'];\n if (AWS.util.isBrowser()) {\n if (typeof httpRequest.body === 'string' && !contentType.match(/;\\s*charset=/)) {\n var charset = '; charset=UTF-8';\n httpRequest.headers['Content-Type'] += charset;\n } else {\n var replaceFn = function(_, prefix, charsetName) {\n return prefix + charsetName.toUpperCase();\n };\n\n httpRequest.headers['Content-Type'] =\n contentType.replace(/(;\\s*charset=)(.+)$/, replaceFn);\n }\n }\n },\n\n /**\n * Checks whether checksums should be computed for the request if it's not\n * already set by {AWS.EventListeners.Core.COMPUTE_CHECKSUM}. It depends on\n * whether {AWS.Config.computeChecksums} is set.\n *\n * @param req [AWS.Request] the request to check against\n * @return [Boolean] whether to compute checksums for a request.\n * @api private\n */\n willComputeChecksums: function willComputeChecksums(req) {\n var rules = req.service.api.operations[req.operation].input.members;\n var body = req.httpRequest.body;\n var needsContentMD5 = req.service.config.computeChecksums &&\n rules.ContentMD5 &&\n !req.params.ContentMD5 &&\n body &&\n (AWS.util.Buffer.isBuffer(req.httpRequest.body) || typeof req.httpRequest.body === 'string');\n\n // Sha256 signing disabled, and not a presigned url\n if (needsContentMD5 && req.service.shouldDisableBodySigning(req) && !req.isPresigned()) {\n return true;\n }\n\n // SigV2 and presign, for backwards compatibility purpose.\n if (needsContentMD5 && this.getSignatureVersion(req) === 's3' && req.isPresigned()) {\n return true;\n }\n\n return false;\n },\n\n /**\n * A listener that computes the Content-MD5 and sets it in the header.\n * This listener is to support S3-specific features like\n * s3DisableBodySigning and SigV2 presign. Content MD5 logic for SigV4 is\n * handled in AWS.EventListeners.Core.COMPUTE_CHECKSUM\n *\n * @api private\n */\n computeContentMd5: function computeContentMd5(req) {\n if (req.service.willComputeChecksums(req)) {\n var md5 = AWS.util.crypto.md5(req.httpRequest.body, 'base64');\n req.httpRequest.headers['Content-MD5'] = md5;\n }\n },\n\n /**\n * @api private\n */\n computeSseCustomerKeyMd5: function computeSseCustomerKeyMd5(req) {\n var keys = {\n SSECustomerKey: 'x-amz-server-side-encryption-customer-key-MD5',\n CopySourceSSECustomerKey: 'x-amz-copy-source-server-side-encryption-customer-key-MD5'\n };\n AWS.util.each(keys, function(key, header) {\n if (req.params[key]) {\n var value = AWS.util.crypto.md5(req.params[key], 'base64');\n req.httpRequest.headers[header] = value;\n }\n });\n },\n\n /**\n * Returns true if the bucket name should be left in the URI path for\n * a request to S3. This function takes into account the current\n * endpoint protocol (e.g. http or https).\n *\n * @api private\n */\n pathStyleBucketName: function pathStyleBucketName(bucketName) {\n // user can force path style requests via the configuration\n if (this.config.s3ForcePathStyle) return true;\n if (this.config.s3BucketEndpoint) return false;\n\n if (s3util.dnsCompatibleBucketName(bucketName)) {\n return (this.config.sslEnabled && bucketName.match(/\\./)) ? true : false;\n } else {\n return true; // not dns compatible names must always use path style\n }\n },\n\n /**\n * For COPY operations, some can be error even with status code 200.\n * SDK treats the response as exception when response body indicates\n * an exception or body is empty.\n *\n * @api private\n */\n extractErrorFrom200Response: function extractErrorFrom200Response(resp) {\n if (!operationsWith200StatusCodeError[resp.request.operation]) return;\n var httpResponse = resp.httpResponse;\n if (httpResponse.body && httpResponse.body.toString().match('')) {\n // Response body with '...' indicates an exception.\n // Get S3 client object. In ManagedUpload, this.service refers to\n // S3 client object.\n resp.data = null;\n var service = this.service ? this.service : this;\n service.extractError(resp);\n throw resp.error;\n } else if (!httpResponse.body || !httpResponse.body.toString().match(/<[\\w_]/)) {\n // When body is empty or incomplete, S3 might stop the request on detecting client\n // side aborting the request.\n resp.data = null;\n throw AWS.util.error(new Error(), {\n code: 'InternalError',\n message: 'S3 aborted request'\n });\n }\n },\n\n /**\n * @return [Boolean] whether the error can be retried\n * @api private\n */\n retryableError: function retryableError(error, request) {\n if (operationsWith200StatusCodeError[request.operation] &&\n error.statusCode === 200) {\n return true;\n } else if (request._requestRegionForBucket &&\n request.service.bucketRegionCache[request._requestRegionForBucket]) {\n return false;\n } else if (error && error.code === 'RequestTimeout') {\n return true;\n } else if (error &&\n regionRedirectErrorCodes.indexOf(error.code) != -1 &&\n error.region && error.region != request.httpRequest.region) {\n request.httpRequest.region = error.region;\n if (error.statusCode === 301) {\n request.service.updateReqBucketRegion(request);\n }\n return true;\n } else {\n var _super = AWS.Service.prototype.retryableError;\n return _super.call(this, error, request);\n }\n },\n\n /**\n * Updates httpRequest with region. If region is not provided, then\n * the httpRequest will be updated based on httpRequest.region\n *\n * @api private\n */\n updateReqBucketRegion: function updateReqBucketRegion(request, region) {\n var httpRequest = request.httpRequest;\n if (typeof region === 'string' && region.length) {\n httpRequest.region = region;\n }\n if (!httpRequest.endpoint.host.match(/s3(?!-accelerate).*\\.amazonaws\\.com$/)) {\n return;\n }\n var service = request.service;\n var s3Config = service.config;\n var s3BucketEndpoint = s3Config.s3BucketEndpoint;\n if (s3BucketEndpoint) {\n delete s3Config.s3BucketEndpoint;\n }\n var newConfig = AWS.util.copy(s3Config);\n delete newConfig.endpoint;\n newConfig.region = httpRequest.region;\n\n httpRequest.endpoint = (new AWS.S3(newConfig)).endpoint;\n service.populateURI(request);\n s3Config.s3BucketEndpoint = s3BucketEndpoint;\n httpRequest.headers.Host = httpRequest.endpoint.host;\n\n if (request._asm.currentState === 'validate') {\n request.removeListener('build', service.populateURI);\n request.addListener('build', service.removeVirtualHostedBucketFromPath);\n }\n },\n\n /**\n * Provides a specialized parser for getBucketLocation -- all other\n * operations are parsed by the super class.\n *\n * @api private\n */\n extractData: function extractData(resp) {\n var req = resp.request;\n if (req.operation === 'getBucketLocation') {\n var match = resp.httpResponse.body.toString().match(/>(.+)<\\/Location/);\n delete resp.data['_'];\n if (match) {\n resp.data.LocationConstraint = match[1];\n } else {\n resp.data.LocationConstraint = '';\n }\n }\n var bucket = req.params.Bucket || null;\n if (req.operation === 'deleteBucket' && typeof bucket === 'string' && !resp.error) {\n req.service.clearBucketRegionCache(bucket);\n } else {\n var headers = resp.httpResponse.headers || {};\n var region = headers['x-amz-bucket-region'] || null;\n if (!region && req.operation === 'createBucket' && !resp.error) {\n var createBucketConfiguration = req.params.CreateBucketConfiguration;\n if (!createBucketConfiguration) {\n region = 'us-east-1';\n } else if (createBucketConfiguration.LocationConstraint === 'EU') {\n region = 'eu-west-1';\n } else {\n region = createBucketConfiguration.LocationConstraint;\n }\n }\n if (region) {\n if (bucket && region !== req.service.bucketRegionCache[bucket]) {\n req.service.bucketRegionCache[bucket] = region;\n }\n }\n }\n req.service.extractRequestIds(resp);\n },\n\n /**\n * Extracts an error object from the http response.\n *\n * @api private\n */\n extractError: function extractError(resp) {\n var codes = {\n 304: 'NotModified',\n 403: 'Forbidden',\n 400: 'BadRequest',\n 404: 'NotFound'\n };\n\n var req = resp.request;\n var code = resp.httpResponse.statusCode;\n var body = resp.httpResponse.body || '';\n\n var headers = resp.httpResponse.headers || {};\n var region = headers['x-amz-bucket-region'] || null;\n var bucket = req.params.Bucket || null;\n var bucketRegionCache = req.service.bucketRegionCache;\n if (region && bucket && region !== bucketRegionCache[bucket]) {\n bucketRegionCache[bucket] = region;\n }\n\n var cachedRegion;\n if (codes[code] && body.length === 0) {\n if (bucket && !region) {\n cachedRegion = bucketRegionCache[bucket] || null;\n if (cachedRegion !== req.httpRequest.region) {\n region = cachedRegion;\n }\n }\n resp.error = AWS.util.error(new Error(), {\n code: codes[code],\n message: null,\n region: region\n });\n } else {\n var data = new AWS.XML.Parser().parse(body.toString());\n\n if (data.Region && !region) {\n region = data.Region;\n if (bucket && region !== bucketRegionCache[bucket]) {\n bucketRegionCache[bucket] = region;\n }\n } else if (bucket && !region && !data.Region) {\n cachedRegion = bucketRegionCache[bucket] || null;\n if (cachedRegion !== req.httpRequest.region) {\n region = cachedRegion;\n }\n }\n\n resp.error = AWS.util.error(new Error(), {\n code: data.Code || code,\n message: data.Message || null,\n region: region\n });\n }\n req.service.extractRequestIds(resp);\n },\n\n /**\n * If region was not obtained synchronously, then send async request\n * to get bucket region for errors resulting from wrong region.\n *\n * @api private\n */\n requestBucketRegion: function requestBucketRegion(resp, done) {\n var error = resp.error;\n var req = resp.request;\n var bucket = req.params.Bucket || null;\n\n if (!error || !bucket || error.region || req.operation === 'listObjects' ||\n (AWS.util.isNode() && req.operation === 'headBucket') ||\n (error.statusCode === 400 && req.operation !== 'headObject') ||\n regionRedirectErrorCodes.indexOf(error.code) === -1) {\n return done();\n }\n var reqOperation = AWS.util.isNode() ? 'headBucket' : 'listObjects';\n var reqParams = {Bucket: bucket};\n if (reqOperation === 'listObjects') reqParams.MaxKeys = 0;\n var regionReq = req.service[reqOperation](reqParams);\n regionReq._requestRegionForBucket = bucket;\n regionReq.send(function() {\n var region = req.service.bucketRegionCache[bucket] || null;\n error.region = region;\n done();\n });\n },\n\n /**\n * For browser only. If NetworkingError received, will attempt to obtain\n * the bucket region.\n *\n * @api private\n */\n reqRegionForNetworkingError: function reqRegionForNetworkingError(resp, done) {\n if (!AWS.util.isBrowser()) {\n return done();\n }\n var error = resp.error;\n var request = resp.request;\n var bucket = request.params.Bucket;\n if (!error || error.code !== 'NetworkingError' || !bucket ||\n request.httpRequest.region === 'us-east-1') {\n return done();\n }\n var service = request.service;\n var bucketRegionCache = service.bucketRegionCache;\n var cachedRegion = bucketRegionCache[bucket] || null;\n\n if (cachedRegion && cachedRegion !== request.httpRequest.region) {\n service.updateReqBucketRegion(request, cachedRegion);\n done();\n } else if (!s3util.dnsCompatibleBucketName(bucket)) {\n service.updateReqBucketRegion(request, 'us-east-1');\n if (bucketRegionCache[bucket] !== 'us-east-1') {\n bucketRegionCache[bucket] = 'us-east-1';\n }\n done();\n } else if (request.httpRequest.virtualHostedBucket) {\n var getRegionReq = service.listObjects({Bucket: bucket, MaxKeys: 0});\n service.updateReqBucketRegion(getRegionReq, 'us-east-1');\n getRegionReq._requestRegionForBucket = bucket;\n\n getRegionReq.send(function() {\n var region = service.bucketRegionCache[bucket] || null;\n if (region && region !== request.httpRequest.region) {\n service.updateReqBucketRegion(request, region);\n }\n done();\n });\n } else {\n // DNS-compatible path-style\n // (s3ForcePathStyle or bucket name with dot over https)\n // Cannot obtain region information for this case\n done();\n }\n },\n\n /**\n * Cache for bucket region.\n *\n * @api private\n */\n bucketRegionCache: {},\n\n /**\n * Clears bucket region cache.\n *\n * @api private\n */\n clearBucketRegionCache: function(buckets) {\n var bucketRegionCache = this.bucketRegionCache;\n if (!buckets) {\n buckets = Object.keys(bucketRegionCache);\n } else if (typeof buckets === 'string') {\n buckets = [buckets];\n }\n for (var i = 0; i < buckets.length; i++) {\n delete bucketRegionCache[buckets[i]];\n }\n return bucketRegionCache;\n },\n\n /**\n * Corrects request region if bucket's cached region is different\n *\n * @api private\n */\n correctBucketRegionFromCache: function correctBucketRegionFromCache(req) {\n var bucket = req.params.Bucket || null;\n if (bucket) {\n var service = req.service;\n var requestRegion = req.httpRequest.region;\n var cachedRegion = service.bucketRegionCache[bucket];\n if (cachedRegion && cachedRegion !== requestRegion) {\n service.updateReqBucketRegion(req, cachedRegion);\n }\n }\n },\n\n /**\n * Extracts S3 specific request ids from the http response.\n *\n * @api private\n */\n extractRequestIds: function extractRequestIds(resp) {\n var extendedRequestId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-id-2'] : null;\n var cfId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-cf-id'] : null;\n resp.extendedRequestId = extendedRequestId;\n resp.cfId = cfId;\n\n if (resp.error) {\n resp.error.requestId = resp.requestId || null;\n resp.error.extendedRequestId = extendedRequestId;\n resp.error.cfId = cfId;\n }\n },\n\n /**\n * Get a pre-signed URL for a given operation name.\n *\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 * @note Not all operation parameters are supported when using pre-signed\n * URLs. Certain parameters, such as `SSECustomerKey`, `ACL`, `Expires`,\n * `ContentLength`, or `Tagging` must be provided as headers when sending a\n * request. If you are using pre-signed URLs to upload from a browser and\n * need to use these fields, see {createPresignedPost}.\n * @note The default signer allows altering the request by adding corresponding\n * headers to set some parameters (e.g. Range) and these added parameters\n * won't be signed. You must use signatureVersion v4 to to include these\n * parameters in the signed portion of the URL and enforce exact matching\n * between headers and signed params in the URL.\n * @note This operation cannot be used with a promise. See note above regarding\n * asynchronous credentials and use with a callback.\n * @param operation [String] the name of the operation to call\n * @param params [map] parameters to pass to the operation. See the given\n * operation for the expected operation parameters. In addition, you can\n * also pass the \"Expires\" parameter to inform S3 how long the URL should\n * work for.\n * @option params Expires [Integer] (900) the number of seconds to expire\n * the pre-signed URL operation in. Defaults to 15 minutes.\n * @param callback [Function] if a callback is provided, this function will\n * pass the URL as the second parameter (after the error parameter) to\n * the callback function.\n * @return [String] if called synchronously (with no callback), returns the\n * signed URL.\n * @return [null] nothing is returned if a callback is provided.\n * @example Pre-signing a getObject operation (synchronously)\n * var params = {Bucket: 'bucket', Key: 'key'};\n * var url = s3.getSignedUrl('getObject', params);\n * console.log('The URL is', url);\n * @example Pre-signing a putObject (asynchronously)\n * var params = {Bucket: 'bucket', Key: 'key'};\n * s3.getSignedUrl('putObject', params, function (err, url) {\n * console.log('The URL is', url);\n * });\n * @example Pre-signing a putObject operation with a specific payload\n * var params = {Bucket: 'bucket', Key: 'key', Body: 'body'};\n * var url = s3.getSignedUrl('putObject', params);\n * console.log('The URL is', url);\n * @example Passing in a 1-minute expiry time for a pre-signed URL\n * var params = {Bucket: 'bucket', Key: 'key', Expires: 60};\n * var url = s3.getSignedUrl('getObject', params);\n * console.log('The URL is', url); // expires in 60 seconds\n */\n getSignedUrl: function getSignedUrl(operation, params, callback) {\n params = AWS.util.copy(params || {});\n var expires = params.Expires || 900;\n\n if (typeof expires !== 'number') {\n throw AWS.util.error(new Error(),\n { code: 'InvalidParameterException', message: 'The expiration must be a number, received ' + typeof expires });\n }\n\n delete params.Expires; // we can't validate this\n var request = this.makeRequest(operation, params);\n\n if (callback) {\n AWS.util.defer(function() {\n request.presign(expires, callback);\n });\n } else {\n return request.presign(expires, callback);\n }\n },\n\n /**\n * @!method getSignedUrlPromise()\n * Returns a 'thenable' promise that will be resolved with a pre-signed URL\n * for a given operation name.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @note Not all operation parameters are supported when using pre-signed\n * URLs. Certain parameters, such as `SSECustomerKey`, `ACL`, `Expires`,\n * `ContentLength`, or `Tagging` must be provided as headers when sending a\n * request. If you are using pre-signed URLs to upload from a browser and\n * need to use these fields, see {createPresignedPost}.\n * @param operation [String] the name of the operation to call\n * @param params [map] parameters to pass to the operation. See the given\n * operation for the expected operation parameters. In addition, you can\n * also pass the \"Expires\" parameter to inform S3 how long the URL should\n * work for.\n * @option params Expires [Integer] (900) the number of seconds to expire\n * the pre-signed URL operation in. Defaults to 15 minutes.\n * @callback fulfilledCallback function(url)\n * Called if the promise is fulfilled.\n * @param url [String] the signed url\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `refresh` call.\n * @example Pre-signing a getObject operation\n * var params = {Bucket: 'bucket', Key: 'key'};\n * var promise = s3.getSignedUrlPromise('getObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n * @example Pre-signing a putObject operation with a specific payload\n * var params = {Bucket: 'bucket', Key: 'key', Body: 'body'};\n * var promise = s3.getSignedUrlPromise('putObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n * @example Passing in a 1-minute expiry time for a pre-signed URL\n * var params = {Bucket: 'bucket', Key: 'key', Expires: 60};\n * var promise = s3.getSignedUrlPromise('getObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n */\n\n /**\n * Get a pre-signed POST policy to support uploading to S3 directly from an\n * HTML form.\n *\n * @param params [map]\n * @option params Bucket [String] The bucket to which the post should be\n * uploaded\n * @option params Expires [Integer] (3600) The number of seconds for which\n * the presigned policy should be valid.\n * @option params Conditions [Array] An array of conditions that must be met\n * for the presigned policy to allow the\n * upload. This can include required tags,\n * the accepted range for content lengths,\n * etc.\n * @see http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html\n * @option params Fields [map] Fields to include in the form. All\n * values passed in as fields will be\n * signed as exact match conditions.\n * @param callback [Function]\n *\n * @note All fields passed in when creating presigned post data will be signed\n * as exact match conditions. Any fields that will be interpolated by S3\n * must be added to the fields hash after signing, and an appropriate\n * condition for such fields must be explicitly added to the Conditions\n * array passed to this function before signing.\n *\n * @example Presiging post data with a known key\n * var params = {\n * Bucket: 'bucket',\n * Fields: {\n * key: 'key'\n * }\n * };\n * s3.createPresignedPost(params, function(err, data) {\n * if (err) {\n * console.error('Presigning post data encountered an error', err);\n * } else {\n * console.log('The post data is', data);\n * }\n * });\n *\n * @example Presigning post data with an interpolated key\n * var params = {\n * Bucket: 'bucket',\n * Conditions: [\n * ['starts-with', '$key', 'path/to/uploads/']\n * ]\n * };\n * s3.createPresignedPost(params, function(err, data) {\n * if (err) {\n * console.error('Presigning post data encountered an error', err);\n * } else {\n * data.Fields.key = 'path/to/uploads/${filename}';\n * console.log('The post data is', data);\n * }\n * });\n *\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 * @return [map] If called synchronously (with no callback), returns a hash\n * with the url to set as the form action and a hash of fields\n * to include in the form.\n * @return [null] Nothing is returned if a callback is provided.\n *\n * @callback callback function (err, data)\n * @param err [Error] the error object returned from the policy signer\n * @param data [map] The data necessary to construct an HTML form\n * @param data.url [String] The URL to use as the action of the form\n * @param data.fields [map] A hash of fields that must be included in the\n * form for the upload to succeed. This hash will\n * include the signed POST policy, your access key\n * ID and security token (if present), etc. These\n * may be safely included as input elements of type\n * 'hidden.'\n */\n createPresignedPost: function createPresignedPost(params, callback) {\n if (typeof params === 'function' && callback === undefined) {\n callback = params;\n params = null;\n }\n\n params = AWS.util.copy(params || {});\n var boundParams = this.config.params || {};\n var bucket = params.Bucket || boundParams.Bucket,\n self = this,\n config = this.config,\n endpoint = AWS.util.copy(this.endpoint);\n if (!config.s3BucketEndpoint) {\n endpoint.pathname = '/' + bucket;\n }\n\n function finalizePost() {\n return {\n url: AWS.util.urlFormat(endpoint),\n fields: self.preparePostFields(\n config.credentials,\n config.region,\n bucket,\n params.Fields,\n params.Conditions,\n params.Expires\n )\n };\n }\n\n if (callback) {\n config.getCredentials(function (err) {\n if (err) {\n callback(err);\n } else {\n try {\n callback(null, finalizePost());\n } catch (err) {\n callback(err);\n }\n }\n });\n } else {\n return finalizePost();\n }\n },\n\n /**\n * @api private\n */\n preparePostFields: function preparePostFields(\n credentials,\n region,\n bucket,\n fields,\n conditions,\n expiresInSeconds\n ) {\n var now = this.getSkewCorrectedDate();\n if (!credentials || !region || !bucket) {\n throw new Error('Unable to create a POST object policy without a bucket,'\n + ' region, and credentials');\n }\n fields = AWS.util.copy(fields || {});\n conditions = (conditions || []).slice(0);\n expiresInSeconds = expiresInSeconds || 3600;\n\n var signingDate = AWS.util.date.iso8601(now).replace(/[:\\-]|\\.\\d{3}/g, '');\n var shortDate = signingDate.substr(0, 8);\n var scope = v4Credentials.createScope(shortDate, region, 's3');\n var credential = credentials.accessKeyId + '/' + scope;\n\n fields['bucket'] = bucket;\n fields['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256';\n fields['X-Amz-Credential'] = credential;\n fields['X-Amz-Date'] = signingDate;\n if (credentials.sessionToken) {\n fields['X-Amz-Security-Token'] = credentials.sessionToken;\n }\n for (var field in fields) {\n if (fields.hasOwnProperty(field)) {\n var condition = {};\n condition[field] = fields[field];\n conditions.push(condition);\n }\n }\n\n fields.Policy = this.preparePostPolicy(\n new Date(now.valueOf() + expiresInSeconds * 1000),\n conditions\n );\n fields['X-Amz-Signature'] = AWS.util.crypto.hmac(\n v4Credentials.getSigningKey(credentials, shortDate, region, 's3', true),\n fields.Policy,\n 'hex'\n );\n\n return fields;\n },\n\n /**\n * @api private\n */\n preparePostPolicy: function preparePostPolicy(expiration, conditions) {\n return AWS.util.base64.encode(JSON.stringify({\n expiration: AWS.util.date.iso8601(expiration),\n conditions: conditions\n }));\n },\n\n /**\n * @api private\n */\n prepareSignedUrl: function prepareSignedUrl(request) {\n request.addListener('validate', request.service.noPresignedContentLength);\n request.removeListener('build', request.service.addContentType);\n if (!request.params.Body) {\n // no Content-MD5/SHA-256 if body is not provided\n request.removeListener('build', request.service.computeContentMd5);\n } else {\n request.addListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256);\n }\n },\n\n /**\n * @api private\n * @param request\n */\n disableBodySigning: function disableBodySigning(request) {\n var headers = request.httpRequest.headers;\n // Add the header to anything that isn't a presigned url, unless that presigned url had a body defined\n if (!Object.prototype.hasOwnProperty.call(headers, 'presigned-expires')) {\n headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD';\n }\n },\n\n /**\n * @api private\n */\n noPresignedContentLength: function noPresignedContentLength(request) {\n if (request.params.ContentLength !== undefined) {\n throw AWS.util.error(new Error(), {code: 'UnexpectedParameter',\n message: 'ContentLength is not supported in pre-signed URLs.'});\n }\n },\n\n createBucket: function createBucket(params, callback) {\n // When creating a bucket *outside* the classic region, the location\n // constraint must be set for the bucket and it must match the endpoint.\n // This chunk of code will set the location constraint param based\n // on the region (when possible), but it will not override a passed-in\n // location constraint.\n if (typeof params === 'function' || !params) {\n callback = callback || params;\n params = {};\n }\n var hostname = this.endpoint.hostname;\n // copy params so that appending keys does not unintentioinallly\n // mutate params object argument passed in by user\n var copiedParams = AWS.util.copy(params);\n\n if (hostname !== this.api.globalEndpoint && !params.CreateBucketConfiguration) {\n copiedParams.CreateBucketConfiguration = { LocationConstraint: this.config.region };\n }\n return this.makeRequest('createBucket', copiedParams, callback);\n },\n\n writeGetObjectResponse: function writeGetObjectResponse(params, callback) {\n\n var request = this.makeRequest('writeGetObjectResponse', AWS.util.copy(params), callback);\n var hostname = this.endpoint.hostname;\n if (hostname.indexOf(this.config.region) !== -1) {\n // hostname specifies a region already\n hostname = hostname.replace('s3.', OBJECT_LAMBDA_SERVICE + '.');\n } else {\n // Hostname doesn't have a region.\n // Object Lambda requires an explicit region.\n hostname = hostname.replace('s3.', OBJECT_LAMBDA_SERVICE + '.' + this.config.region + '.');\n }\n\n request.httpRequest.endpoint = new AWS.Endpoint(hostname, this.config);\n return request;\n },\n\n /**\n * @see AWS.S3.ManagedUpload\n * @overload upload(params = {}, [options], [callback])\n * Uploads an arbitrarily sized buffer, blob, or stream, using intelligent\n * concurrent handling of parts if the payload is large enough. You can\n * configure the concurrent queue size by setting `options`. Note that this\n * is the only operation for which the SDK can retry requests with stream\n * bodies.\n *\n * @param (see AWS.S3.putObject)\n * @option (see AWS.S3.ManagedUpload.constructor)\n * @return [AWS.S3.ManagedUpload] the managed upload object that can call\n * `send()` or track progress.\n * @example Uploading a stream object\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * s3.upload(params, function(err, data) {\n * console.log(err, data);\n * });\n * @example Uploading a stream with concurrency of 1 and partSize of 10mb\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * var options = {partSize: 10 * 1024 * 1024, queueSize: 1};\n * s3.upload(params, options, function(err, data) {\n * console.log(err, data);\n * });\n * @callback callback function(err, data)\n * @param err [Error] an error or null if no error occurred.\n * @param data [map] The response data from the successful upload:\n * @param data.Location [String] the URL of the uploaded object\n * @param data.ETag [String] the ETag of the uploaded object\n * @param data.Bucket [String] the bucket to which the object was uploaded\n * @param data.Key [String] the key to which the object was uploaded\n */\n upload: function upload(params, options, callback) {\n if (typeof options === 'function' && callback === undefined) {\n callback = options;\n options = null;\n }\n\n options = options || {};\n options = AWS.util.merge(options || {}, {service: this, params: params});\n\n var uploader = new AWS.S3.ManagedUpload(options);\n if (typeof callback === 'function') uploader.send(callback);\n return uploader;\n },\n\n /**\n * @api private\n */\n setExpiresString: function setExpiresString(response) {\n // Check if response contains Expires value, and populate ExpiresString.\n if (response && response.httpResponse && response.httpResponse.headers) {\n if ('expires' in response.httpResponse.headers) {\n response.httpResponse.headers.expiresstring = response.httpResponse.headers.expires;\n }\n }\n\n // Check if value in Expires is not a Date using parseTimestamp.\n try {\n if (response && response.httpResponse && response.httpResponse.headers) {\n if ('expires' in response.httpResponse.headers) {\n AWS.util.date.parseTimestamp(response.httpResponse.headers.expires);\n }\n }\n } catch (e) {\n console.log('AWS SDK', '(warning)', e);\n delete response.httpResponse.headers.expires;\n }\n }\n});\n\n/**\n * @api private\n */\nAWS.S3.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.getSignedUrlPromise = AWS.util.promisifyMethod('getSignedUrl', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.S3.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.getSignedUrlPromise;\n};\n\nAWS.util.addPromises(AWS.S3);\n","var AWS = require('../core');\nvar regionUtil = require('../region_config');\n\nvar s3util = {\n /**\n * @api private\n */\n isArnInParam: function isArnInParam(req, paramName) {\n var inputShape = (req.service.api.operations[req.operation] || {}).input || {};\n var inputMembers = inputShape.members || {};\n if (!req.params[paramName] || !inputMembers[paramName]) return false;\n return AWS.util.ARN.validate(req.params[paramName]);\n },\n\n /**\n * Validate service component from ARN supplied in Bucket parameter\n */\n validateArnService: function validateArnService(req) {\n var parsedArn = req._parsedArn;\n\n if (parsedArn.service !== 's3'\n && parsedArn.service !== 's3-outposts'\n && parsedArn.service !== 's3-object-lambda') {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'expect \\'s3\\' or \\'s3-outposts\\' or \\'s3-object-lambda\\' in ARN service component'\n });\n }\n },\n\n /**\n * Validate account ID from ARN supplied in Bucket parameter is a valid account\n */\n validateArnAccount: function validateArnAccount(req) {\n var parsedArn = req._parsedArn;\n\n if (!/[0-9]{12}/.exec(parsedArn.accountId)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN accountID does not match regex \"[0-9]{12}\"'\n });\n }\n },\n\n /**\n * Validate ARN supplied in Bucket parameter is a valid access point ARN\n */\n validateS3AccessPointArn: function validateS3AccessPointArn(req) {\n var parsedArn = req._parsedArn;\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['accesspoint'.length];\n\n if (parsedArn.resource.split(delimiter).length !== 2) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access Point ARN should have one resource accesspoint/{accesspointName}'\n });\n }\n\n var accessPoint = parsedArn.resource.split(delimiter)[1];\n var accessPointPrefix = accessPoint + '-' + parsedArn.accountId;\n if (!s3util.dnsCompatibleBucketName(accessPointPrefix) || accessPointPrefix.match(/\\./)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access point resource in ARN is not DNS compatible. Got ' + accessPoint\n });\n }\n\n //set parsed valid access point\n req._parsedArn.accessPoint = accessPoint;\n },\n\n /**\n * Validate Outposts ARN supplied in Bucket parameter is a valid outposts ARN\n */\n validateOutpostsArn: function validateOutpostsArn(req) {\n var parsedArn = req._parsedArn;\n\n if (\n parsedArn.resource.indexOf('outpost:') !== 0 &&\n parsedArn.resource.indexOf('outpost/') !== 0\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN resource should begin with \\'outpost/\\''\n });\n }\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['outpost'.length];\n var outpostId = parsedArn.resource.split(delimiter)[1];\n var dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!dnsHostRegex.test(outpostId)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Outpost resource in ARN is not DNS compatible. Got ' + outpostId\n });\n }\n req._parsedArn.outpostId = outpostId;\n },\n\n /**\n * Validate Outposts ARN supplied in Bucket parameter is a valid outposts ARN\n */\n validateOutpostsAccessPointArn: function validateOutpostsAccessPointArn(req) {\n var parsedArn = req._parsedArn;\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['outpost'.length];\n\n if (parsedArn.resource.split(delimiter).length !== 4) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Outposts ARN should have two resources outpost/{outpostId}/accesspoint/{accesspointName}'\n });\n }\n\n var accessPoint = parsedArn.resource.split(delimiter)[3];\n var accessPointPrefix = accessPoint + '-' + parsedArn.accountId;\n if (!s3util.dnsCompatibleBucketName(accessPointPrefix) || accessPointPrefix.match(/\\./)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access point resource in ARN is not DNS compatible. Got ' + accessPoint\n });\n }\n\n //set parsed valid access point\n req._parsedArn.accessPoint = accessPoint;\n },\n\n /**\n * Validate region field in ARN supplied in Bucket parameter is a valid region\n */\n validateArnRegion: function validateArnRegion(req, options) {\n if (options === undefined) {\n options = {};\n }\n\n var useArnRegion = s3util.loadUseArnRegionConfig(req);\n var regionFromArn = req._parsedArn.region;\n var clientRegion = req.service.config.region;\n var useFipsEndpoint = req.service.config.useFipsEndpoint;\n var allowFipsEndpoint = options.allowFipsEndpoint || false;\n\n if (!regionFromArn) {\n var message = 'ARN region is empty';\n if (req._parsedArn.service === 's3') {\n message = message + '\\nYou may want to use multi-regional ARN. The feature is not supported in current SDK. ' +\n 'You should consider switching to V3(https://github.com/aws/aws-sdk-js-v3).';\n }\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: message\n });\n }\n\n if (useFipsEndpoint && !allowFipsEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'ARN endpoint is not compatible with FIPS region'\n });\n }\n\n if (regionFromArn.indexOf('fips') >= 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'FIPS region not allowed in ARN'\n });\n }\n\n if (!useArnRegion && regionFromArn !== clientRegion) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Configured region conflicts with access point region'\n });\n } else if (\n useArnRegion &&\n regionUtil.getEndpointSuffix(regionFromArn) !== regionUtil.getEndpointSuffix(clientRegion)\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Configured region and access point region not in same partition'\n });\n }\n\n if (req.service.config.useAccelerateEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'useAccelerateEndpoint config is not supported with access point ARN'\n });\n }\n\n if (req._parsedArn.service === 's3-outposts' && req.service.config.useDualstackEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Dualstack is not supported with outposts access point ARN'\n });\n }\n },\n\n loadUseArnRegionConfig: function loadUseArnRegionConfig(req) {\n var envName = 'AWS_S3_USE_ARN_REGION';\n var configName = 's3_use_arn_region';\n var useArnRegion = true;\n var originalConfig = req.service._originalConfig || {};\n if (req.service.config.s3UseArnRegion !== undefined) {\n return req.service.config.s3UseArnRegion;\n } else if (originalConfig.s3UseArnRegion !== undefined) {\n useArnRegion = originalConfig.s3UseArnRegion === true;\n } else if (AWS.util.isNode()) {\n //load from environmental variable AWS_USE_ARN_REGION\n if (process.env[envName]) {\n var value = process.env[envName].trim().toLowerCase();\n if (['false', 'true'].indexOf(value) < 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: envName + ' only accepts true or false. Got ' + process.env[envName],\n retryable: false\n });\n }\n useArnRegion = value === 'true';\n } else { //load from shared config property use_arn_region\n var profiles = {};\n var profile = {};\n try {\n profiles = AWS.util.getProfilesFromSharedConfig(AWS.util.iniLoader);\n profile = profiles[process.env.AWS_PROFILE || AWS.util.defaultProfile];\n } catch (e) {}\n if (profile[configName]) {\n if (['false', 'true'].indexOf(profile[configName].trim().toLowerCase()) < 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: configName + ' only accepts true or false. Got ' + profile[configName],\n retryable: false\n });\n }\n useArnRegion = profile[configName].trim().toLowerCase() === 'true';\n }\n }\n }\n req.service.config.s3UseArnRegion = useArnRegion;\n return useArnRegion;\n },\n\n /**\n * Validations before URI can be populated\n */\n validatePopulateUriFromArn: function validatePopulateUriFromArn(req) {\n if (req.service._originalConfig && req.service._originalConfig.endpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Custom endpoint is not compatible with access point ARN'\n });\n }\n\n if (req.service.config.s3ForcePathStyle) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Cannot construct path-style endpoint with access point'\n });\n }\n },\n\n /**\n * Returns true if the bucket name is DNS compatible. Buckets created\n * outside of the classic region MUST be DNS compatible.\n *\n * @api private\n */\n dnsCompatibleBucketName: function dnsCompatibleBucketName(bucketName) {\n var b = bucketName;\n var domain = new RegExp(/^[a-z0-9][a-z0-9\\.\\-]{1,61}[a-z0-9]$/);\n var ipAddress = new RegExp(/(\\d+\\.){3}\\d+/);\n var dots = new RegExp(/\\.\\./);\n return (b.match(domain) && !b.match(ipAddress) && !b.match(dots)) ? true : false;\n },\n};\n\n/**\n * @api private\n */\nmodule.exports = s3util;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.SQS.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('build', this.buildEndpoint);\n\n if (request.service.config.computeChecksums) {\n if (request.operation === 'sendMessage') {\n request.addListener('extractData', this.verifySendMessageChecksum);\n } else if (request.operation === 'sendMessageBatch') {\n request.addListener('extractData', this.verifySendMessageBatchChecksum);\n } else if (request.operation === 'receiveMessage') {\n request.addListener('extractData', this.verifyReceiveMessageChecksum);\n }\n }\n },\n\n /**\n * @api private\n */\n verifySendMessageChecksum: function verifySendMessageChecksum(response) {\n if (!response.data) return;\n\n var md5 = response.data.MD5OfMessageBody;\n var body = this.params.MessageBody;\n var calculatedMd5 = this.service.calculateChecksum(body);\n if (calculatedMd5 !== md5) {\n var msg = 'Got \"' + response.data.MD5OfMessageBody +\n '\", expecting \"' + calculatedMd5 + '\".';\n this.service.throwInvalidChecksumError(response,\n [response.data.MessageId], msg);\n }\n },\n\n /**\n * @api private\n */\n verifySendMessageBatchChecksum: function verifySendMessageBatchChecksum(response) {\n if (!response.data) return;\n\n var service = this.service;\n var entries = {};\n var errors = [];\n var messageIds = [];\n AWS.util.arrayEach(response.data.Successful, function (entry) {\n entries[entry.Id] = entry;\n });\n AWS.util.arrayEach(this.params.Entries, function (entry) {\n if (entries[entry.Id]) {\n var md5 = entries[entry.Id].MD5OfMessageBody;\n var body = entry.MessageBody;\n if (!service.isChecksumValid(md5, body)) {\n errors.push(entry.Id);\n messageIds.push(entries[entry.Id].MessageId);\n }\n }\n });\n\n if (errors.length > 0) {\n service.throwInvalidChecksumError(response, messageIds,\n 'Invalid messages: ' + errors.join(', '));\n }\n },\n\n /**\n * @api private\n */\n verifyReceiveMessageChecksum: function verifyReceiveMessageChecksum(response) {\n if (!response.data) return;\n\n var service = this.service;\n var messageIds = [];\n AWS.util.arrayEach(response.data.Messages, function(message) {\n var md5 = message.MD5OfBody;\n var body = message.Body;\n if (!service.isChecksumValid(md5, body)) {\n messageIds.push(message.MessageId);\n }\n });\n\n if (messageIds.length > 0) {\n service.throwInvalidChecksumError(response, messageIds,\n 'Invalid messages: ' + messageIds.join(', '));\n }\n },\n\n /**\n * @api private\n */\n throwInvalidChecksumError: function throwInvalidChecksumError(response, ids, message) {\n response.error = AWS.util.error(new Error(), {\n retryable: true,\n code: 'InvalidChecksum',\n messageIds: ids,\n message: response.request.operation +\n ' returned an invalid MD5 response. ' + message\n });\n },\n\n /**\n * @api private\n */\n isChecksumValid: function isChecksumValid(checksum, data) {\n return this.calculateChecksum(data) === checksum;\n },\n\n /**\n * @api private\n */\n calculateChecksum: function calculateChecksum(data) {\n return AWS.util.crypto.md5(data, 'hex');\n },\n\n /**\n * @api private\n */\n buildEndpoint: function buildEndpoint(request) {\n var url = request.httpRequest.params.QueueUrl;\n if (url) {\n request.httpRequest.endpoint = new AWS.Endpoint(url);\n\n // signature version 4 requires the region name to be set,\n // sqs queue urls contain the region name\n var matches = request.httpRequest.endpoint.host.match(/^sqs\\.(.+?)\\./);\n if (matches) request.httpRequest.region = matches[1];\n }\n }\n});\n","var AWS = require('../core');\nvar resolveRegionalEndpointsFlag = require('../config_regional_endpoint');\nvar ENV_REGIONAL_ENDPOINT_ENABLED = 'AWS_STS_REGIONAL_ENDPOINTS';\nvar CONFIG_REGIONAL_ENDPOINT_ENABLED = 'sts_regional_endpoints';\n\nAWS.util.update(AWS.STS.prototype, {\n /**\n * @overload credentialsFrom(data, credentials = null)\n * Creates a credentials object from STS response data containing\n * credentials information. Useful for quickly setting AWS credentials.\n *\n * @note This is a low-level utility function. If you want to load temporary\n * credentials into your process for subsequent requests to AWS resources,\n * you should use {AWS.TemporaryCredentials} instead.\n * @param data [map] data retrieved from a call to {getFederatedToken},\n * {getSessionToken}, {assumeRole}, or {assumeRoleWithWebIdentity}.\n * @param credentials [AWS.Credentials] an optional credentials object to\n * fill instead of creating a new object. Useful when modifying an\n * existing credentials object from a refresh call.\n * @return [AWS.TemporaryCredentials] the set of temporary credentials\n * loaded from a raw STS operation response.\n * @example Using credentialsFrom to load global AWS credentials\n * var sts = new AWS.STS();\n * sts.getSessionToken(function (err, data) {\n * if (err) console.log(\"Error getting credentials\");\n * else {\n * AWS.config.credentials = sts.credentialsFrom(data);\n * }\n * });\n * @see AWS.TemporaryCredentials\n */\n credentialsFrom: function credentialsFrom(data, credentials) {\n if (!data) return null;\n if (!credentials) credentials = new AWS.TemporaryCredentials();\n credentials.expired = false;\n credentials.accessKeyId = data.Credentials.AccessKeyId;\n credentials.secretAccessKey = data.Credentials.SecretAccessKey;\n credentials.sessionToken = data.Credentials.SessionToken;\n credentials.expireTime = data.Credentials.Expiration;\n return credentials;\n },\n\n assumeRoleWithWebIdentity: function assumeRoleWithWebIdentity(params, callback) {\n return this.makeUnauthenticatedRequest('assumeRoleWithWebIdentity', params, callback);\n },\n\n assumeRoleWithSAML: function assumeRoleWithSAML(params, callback) {\n return this.makeUnauthenticatedRequest('assumeRoleWithSAML', params, callback);\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validate', this.optInRegionalEndpoint, true);\n },\n\n /**\n * @api private\n */\n optInRegionalEndpoint: function optInRegionalEndpoint(req) {\n var service = req.service;\n var config = service.config;\n config.stsRegionalEndpoints = resolveRegionalEndpointsFlag(service._originalConfig, {\n env: ENV_REGIONAL_ENDPOINT_ENABLED,\n sharedConfig: CONFIG_REGIONAL_ENDPOINT_ENABLED,\n clientConfig: 'stsRegionalEndpoints'\n });\n if (\n config.stsRegionalEndpoints === 'regional' &&\n service.isGlobalEndpoint\n ) {\n //client will throw if region is not supplied; request will be signed with specified region\n if (!config.region) {\n throw AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Missing region in config'});\n }\n var insertPoint = config.endpoint.indexOf('.amazonaws.com');\n var regionalEndpoint = config.endpoint.substring(0, insertPoint) +\n '.' + config.region + config.endpoint.substring(insertPoint);\n req.httpRequest.updateEndpoint(regionalEndpoint);\n req.httpRequest.region = config.region;\n }\n }\n\n});\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nAWS.Signers.Bearer = AWS.util.inherit(AWS.Signers.RequestSigner, {\n constructor: function Bearer(request) {\n AWS.Signers.RequestSigner.call(this, request);\n },\n\n addAuthorization: function addAuthorization(token) {\n this.request.headers['Authorization'] = 'Bearer ' + token.token;\n }\n});\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nvar expiresHeader = 'presigned-expires';\n\n/**\n * @api private\n */\nfunction signedUrlBuilder(request) {\n var expires = request.httpRequest.headers[expiresHeader];\n var signerClass = request.service.getSignerClass(request);\n\n delete request.httpRequest.headers['User-Agent'];\n delete request.httpRequest.headers['X-Amz-User-Agent'];\n\n if (signerClass === AWS.Signers.V4) {\n if (expires > 604800) { // one week expiry is invalid\n var message = 'Presigning does not support expiry time greater ' +\n 'than a week with SigV4 signing.';\n throw AWS.util.error(new Error(), {\n code: 'InvalidExpiryTime', message: message, retryable: false\n });\n }\n request.httpRequest.headers[expiresHeader] = expires;\n } else if (signerClass === AWS.Signers.S3) {\n var now = request.service ? request.service.getSkewCorrectedDate() : AWS.util.date.getDate();\n request.httpRequest.headers[expiresHeader] = parseInt(\n AWS.util.date.unixTimestamp(now) + expires, 10).toString();\n } else {\n throw AWS.util.error(new Error(), {\n message: 'Presigning only supports S3 or SigV4 signing.',\n code: 'UnsupportedSigner', retryable: false\n });\n }\n}\n\n/**\n * @api private\n */\nfunction signedUrlSigner(request) {\n var endpoint = request.httpRequest.endpoint;\n var parsedUrl = AWS.util.urlParse(request.httpRequest.path);\n var queryParams = {};\n\n if (parsedUrl.search) {\n queryParams = AWS.util.queryStringParse(parsedUrl.search.substr(1));\n }\n\n var auth = request.httpRequest.headers['Authorization'].split(' ');\n if (auth[0] === 'AWS') {\n auth = auth[1].split(':');\n queryParams['Signature'] = auth.pop();\n queryParams['AWSAccessKeyId'] = auth.join(':');\n\n AWS.util.each(request.httpRequest.headers, function (key, value) {\n if (key === expiresHeader) key = 'Expires';\n if (key.indexOf('x-amz-meta-') === 0) {\n // Delete existing, potentially not normalized key\n delete queryParams[key];\n key = key.toLowerCase();\n }\n queryParams[key] = value;\n });\n delete request.httpRequest.headers[expiresHeader];\n delete queryParams['Authorization'];\n delete queryParams['Host'];\n } else if (auth[0] === 'AWS4-HMAC-SHA256') { // SigV4 signing\n auth.shift();\n var rest = auth.join(' ');\n var signature = rest.match(/Signature=(.*?)(?:,|\\s|\\r?\\n|$)/)[1];\n queryParams['X-Amz-Signature'] = signature;\n delete queryParams['Expires'];\n }\n\n // build URL\n endpoint.pathname = parsedUrl.pathname;\n endpoint.search = AWS.util.queryParamsToString(queryParams);\n}\n\n/**\n * @api private\n */\nAWS.Signers.Presign = inherit({\n /**\n * @api private\n */\n sign: function sign(request, expireTime, callback) {\n request.httpRequest.headers[expiresHeader] = expireTime || 3600;\n request.on('build', signedUrlBuilder);\n request.on('sign', signedUrlSigner);\n request.removeListener('afterBuild',\n AWS.EventListeners.Core.SET_CONTENT_LENGTH);\n request.removeListener('afterBuild',\n AWS.EventListeners.Core.COMPUTE_SHA256);\n\n request.emit('beforePresign', [request]);\n\n if (callback) {\n request.build(function() {\n if (this.response.error) callback(this.response.error);\n else {\n callback(null, AWS.util.urlFormat(request.httpRequest.endpoint));\n }\n });\n } else {\n request.build();\n if (request.response.error) throw request.response.error;\n return AWS.util.urlFormat(request.httpRequest.endpoint);\n }\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.Presign;\n","var AWS = require('../core');\n\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.RequestSigner = inherit({\n constructor: function RequestSigner(request) {\n this.request = request;\n },\n\n setServiceClientId: function setServiceClientId(id) {\n this.serviceClientId = id;\n },\n\n getServiceClientId: function getServiceClientId() {\n return this.serviceClientId;\n }\n});\n\nAWS.Signers.RequestSigner.getVersion = function getVersion(version) {\n switch (version) {\n case 'v2': return AWS.Signers.V2;\n case 'v3': return AWS.Signers.V3;\n case 's3v4': return AWS.Signers.V4;\n case 'v4': return AWS.Signers.V4;\n case 's3': return AWS.Signers.S3;\n case 'v3https': return AWS.Signers.V3Https;\n case 'bearer': return AWS.Signers.Bearer;\n }\n throw new Error('Unknown signing version ' + version);\n};\n\nrequire('./v2');\nrequire('./v3');\nrequire('./v3https');\nrequire('./v4');\nrequire('./s3');\nrequire('./presign');\nrequire('./bearer');\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.S3 = inherit(AWS.Signers.RequestSigner, {\n /**\n * When building the stringToSign, these sub resource params should be\n * part of the canonical resource string with their NON-decoded values\n */\n subResources: {\n 'acl': 1,\n 'accelerate': 1,\n 'analytics': 1,\n 'cors': 1,\n 'lifecycle': 1,\n 'delete': 1,\n 'inventory': 1,\n 'location': 1,\n 'logging': 1,\n 'metrics': 1,\n 'notification': 1,\n 'partNumber': 1,\n 'policy': 1,\n 'requestPayment': 1,\n 'replication': 1,\n 'restore': 1,\n 'tagging': 1,\n 'torrent': 1,\n 'uploadId': 1,\n 'uploads': 1,\n 'versionId': 1,\n 'versioning': 1,\n 'versions': 1,\n 'website': 1\n },\n\n // when building the stringToSign, these querystring params should be\n // part of the canonical resource string with their NON-encoded values\n responseHeaders: {\n 'response-content-type': 1,\n 'response-content-language': 1,\n 'response-expires': 1,\n 'response-cache-control': 1,\n 'response-content-disposition': 1,\n 'response-content-encoding': 1\n },\n\n addAuthorization: function addAuthorization(credentials, date) {\n if (!this.request.headers['presigned-expires']) {\n this.request.headers['X-Amz-Date'] = AWS.util.date.rfc822(date);\n }\n\n if (credentials.sessionToken) {\n // presigned URLs require this header to be lowercased\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n\n var signature = this.sign(credentials.secretAccessKey, this.stringToSign());\n var auth = 'AWS ' + credentials.accessKeyId + ':' + signature;\n\n this.request.headers['Authorization'] = auth;\n },\n\n stringToSign: function stringToSign() {\n var r = this.request;\n\n var parts = [];\n parts.push(r.method);\n parts.push(r.headers['Content-MD5'] || '');\n parts.push(r.headers['Content-Type'] || '');\n\n // This is the \"Date\" header, but we use X-Amz-Date.\n // The S3 signing mechanism requires us to pass an empty\n // string for this Date header regardless.\n parts.push(r.headers['presigned-expires'] || '');\n\n var headers = this.canonicalizedAmzHeaders();\n if (headers) parts.push(headers);\n parts.push(this.canonicalizedResource());\n\n return parts.join('\\n');\n\n },\n\n canonicalizedAmzHeaders: function canonicalizedAmzHeaders() {\n\n var amzHeaders = [];\n\n AWS.util.each(this.request.headers, function (name) {\n if (name.match(/^x-amz-/i))\n amzHeaders.push(name);\n });\n\n amzHeaders.sort(function (a, b) {\n return a.toLowerCase() < b.toLowerCase() ? -1 : 1;\n });\n\n var parts = [];\n AWS.util.arrayEach.call(this, amzHeaders, function (name) {\n parts.push(name.toLowerCase() + ':' + String(this.request.headers[name]));\n });\n\n return parts.join('\\n');\n\n },\n\n canonicalizedResource: function canonicalizedResource() {\n\n var r = this.request;\n\n var parts = r.path.split('?');\n var path = parts[0];\n var querystring = parts[1];\n\n var resource = '';\n\n if (r.virtualHostedBucket)\n resource += '/' + r.virtualHostedBucket;\n\n resource += path;\n\n if (querystring) {\n\n // collect a list of sub resources and query params that need to be signed\n var resources = [];\n\n AWS.util.arrayEach.call(this, querystring.split('&'), function (param) {\n var name = param.split('=')[0];\n var value = param.split('=')[1];\n if (this.subResources[name] || this.responseHeaders[name]) {\n var subresource = { name: name };\n if (value !== undefined) {\n if (this.subResources[name]) {\n subresource.value = value;\n } else {\n subresource.value = decodeURIComponent(value);\n }\n }\n resources.push(subresource);\n }\n });\n\n resources.sort(function (a, b) { return a.name < b.name ? -1 : 1; });\n\n if (resources.length) {\n\n querystring = [];\n AWS.util.arrayEach(resources, function (res) {\n if (res.value === undefined) {\n querystring.push(res.name);\n } else {\n querystring.push(res.name + '=' + res.value);\n }\n });\n\n resource += '?' + querystring.join('&');\n }\n\n }\n\n return resource;\n\n },\n\n sign: function sign(secret, string) {\n return AWS.util.crypto.hmac(secret, string, 'base64', 'sha1');\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.S3;\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.V2 = inherit(AWS.Signers.RequestSigner, {\n addAuthorization: function addAuthorization(credentials, date) {\n\n if (!date) date = AWS.util.date.getDate();\n\n var r = this.request;\n\n r.params.Timestamp = AWS.util.date.iso8601(date);\n r.params.SignatureVersion = '2';\n r.params.SignatureMethod = 'HmacSHA256';\n r.params.AWSAccessKeyId = credentials.accessKeyId;\n\n if (credentials.sessionToken) {\n r.params.SecurityToken = credentials.sessionToken;\n }\n\n delete r.params.Signature; // delete old Signature for re-signing\n r.params.Signature = this.signature(credentials);\n\n r.body = AWS.util.queryParamsToString(r.params);\n r.headers['Content-Length'] = r.body.length;\n },\n\n signature: function signature(credentials) {\n return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64');\n },\n\n stringToSign: function stringToSign() {\n var parts = [];\n parts.push(this.request.method);\n parts.push(this.request.endpoint.host.toLowerCase());\n parts.push(this.request.pathname());\n parts.push(AWS.util.queryParamsToString(this.request.params));\n return parts.join('\\n');\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V2;\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.V3 = inherit(AWS.Signers.RequestSigner, {\n addAuthorization: function addAuthorization(credentials, date) {\n\n var datetime = AWS.util.date.rfc822(date);\n\n this.request.headers['X-Amz-Date'] = datetime;\n\n if (credentials.sessionToken) {\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n\n this.request.headers['X-Amzn-Authorization'] =\n this.authorization(credentials, datetime);\n\n },\n\n authorization: function authorization(credentials) {\n return 'AWS3 ' +\n 'AWSAccessKeyId=' + credentials.accessKeyId + ',' +\n 'Algorithm=HmacSHA256,' +\n 'SignedHeaders=' + this.signedHeaders() + ',' +\n 'Signature=' + this.signature(credentials);\n },\n\n signedHeaders: function signedHeaders() {\n var headers = [];\n AWS.util.arrayEach(this.headersToSign(), function iterator(h) {\n headers.push(h.toLowerCase());\n });\n return headers.sort().join(';');\n },\n\n canonicalHeaders: function canonicalHeaders() {\n var headers = this.request.headers;\n var parts = [];\n AWS.util.arrayEach(this.headersToSign(), function iterator(h) {\n parts.push(h.toLowerCase().trim() + ':' + String(headers[h]).trim());\n });\n return parts.sort().join('\\n') + '\\n';\n },\n\n headersToSign: function headersToSign() {\n var headers = [];\n AWS.util.each(this.request.headers, function iterator(k) {\n if (k === 'Host' || k === 'Content-Encoding' || k.match(/^X-Amz/i)) {\n headers.push(k);\n }\n });\n return headers;\n },\n\n signature: function signature(credentials) {\n return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64');\n },\n\n stringToSign: function stringToSign() {\n var parts = [];\n parts.push(this.request.method);\n parts.push('/');\n parts.push('');\n parts.push(this.canonicalHeaders());\n parts.push(this.request.body);\n return AWS.util.crypto.sha256(parts.join('\\n'));\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V3;\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\nrequire('./v3');\n\n/**\n * @api private\n */\nAWS.Signers.V3Https = inherit(AWS.Signers.V3, {\n authorization: function authorization(credentials) {\n return 'AWS3-HTTPS ' +\n 'AWSAccessKeyId=' + credentials.accessKeyId + ',' +\n 'Algorithm=HmacSHA256,' +\n 'Signature=' + this.signature(credentials);\n },\n\n stringToSign: function stringToSign() {\n return this.request.headers['X-Amz-Date'];\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V3Https;\n","var AWS = require('../core');\nvar v4Credentials = require('./v4_credentials');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nvar expiresHeader = 'presigned-expires';\n\n/**\n * @api private\n */\nAWS.Signers.V4 = inherit(AWS.Signers.RequestSigner, {\n constructor: function V4(request, serviceName, options) {\n AWS.Signers.RequestSigner.call(this, request);\n this.serviceName = serviceName;\n options = options || {};\n this.signatureCache = typeof options.signatureCache === 'boolean' ? options.signatureCache : true;\n this.operation = options.operation;\n this.signatureVersion = options.signatureVersion;\n },\n\n algorithm: 'AWS4-HMAC-SHA256',\n\n addAuthorization: function addAuthorization(credentials, date) {\n var datetime = AWS.util.date.iso8601(date).replace(/[:\\-]|\\.\\d{3}/g, '');\n\n if (this.isPresigned()) {\n this.updateForPresigned(credentials, datetime);\n } else {\n this.addHeaders(credentials, datetime);\n }\n\n this.request.headers['Authorization'] =\n this.authorization(credentials, datetime);\n },\n\n addHeaders: function addHeaders(credentials, datetime) {\n this.request.headers['X-Amz-Date'] = datetime;\n if (credentials.sessionToken) {\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n },\n\n updateForPresigned: function updateForPresigned(credentials, datetime) {\n var credString = this.credentialString(datetime);\n var qs = {\n 'X-Amz-Date': datetime,\n 'X-Amz-Algorithm': this.algorithm,\n 'X-Amz-Credential': credentials.accessKeyId + '/' + credString,\n 'X-Amz-Expires': this.request.headers[expiresHeader],\n 'X-Amz-SignedHeaders': this.signedHeaders()\n };\n\n if (credentials.sessionToken) {\n qs['X-Amz-Security-Token'] = credentials.sessionToken;\n }\n\n if (this.request.headers['Content-Type']) {\n qs['Content-Type'] = this.request.headers['Content-Type'];\n }\n if (this.request.headers['Content-MD5']) {\n qs['Content-MD5'] = this.request.headers['Content-MD5'];\n }\n if (this.request.headers['Cache-Control']) {\n qs['Cache-Control'] = this.request.headers['Cache-Control'];\n }\n\n // need to pull in any other X-Amz-* headers\n AWS.util.each.call(this, this.request.headers, function(key, value) {\n if (key === expiresHeader) return;\n if (this.isSignableHeader(key)) {\n var lowerKey = key.toLowerCase();\n // Metadata should be normalized\n if (lowerKey.indexOf('x-amz-meta-') === 0) {\n qs[lowerKey] = value;\n } else if (lowerKey.indexOf('x-amz-') === 0) {\n qs[key] = value;\n }\n }\n });\n\n var sep = this.request.path.indexOf('?') >= 0 ? '&' : '?';\n this.request.path += sep + AWS.util.queryParamsToString(qs);\n },\n\n authorization: function authorization(credentials, datetime) {\n var parts = [];\n var credString = this.credentialString(datetime);\n parts.push(this.algorithm + ' Credential=' +\n credentials.accessKeyId + '/' + credString);\n parts.push('SignedHeaders=' + this.signedHeaders());\n parts.push('Signature=' + this.signature(credentials, datetime));\n return parts.join(', ');\n },\n\n signature: function signature(credentials, datetime) {\n var signingKey = v4Credentials.getSigningKey(\n credentials,\n datetime.substr(0, 8),\n this.request.region,\n this.serviceName,\n this.signatureCache\n );\n return AWS.util.crypto.hmac(signingKey, this.stringToSign(datetime), 'hex');\n },\n\n stringToSign: function stringToSign(datetime) {\n var parts = [];\n parts.push('AWS4-HMAC-SHA256');\n parts.push(datetime);\n parts.push(this.credentialString(datetime));\n parts.push(this.hexEncodedHash(this.canonicalString()));\n return parts.join('\\n');\n },\n\n canonicalString: function canonicalString() {\n var parts = [], pathname = this.request.pathname();\n if (this.serviceName !== 's3' && this.signatureVersion !== 's3v4') pathname = AWS.util.uriEscapePath(pathname);\n\n parts.push(this.request.method);\n parts.push(pathname);\n parts.push(this.request.search());\n parts.push(this.canonicalHeaders() + '\\n');\n parts.push(this.signedHeaders());\n parts.push(this.hexEncodedBodyHash());\n return parts.join('\\n');\n },\n\n canonicalHeaders: function canonicalHeaders() {\n var headers = [];\n AWS.util.each.call(this, this.request.headers, function (key, item) {\n headers.push([key, item]);\n });\n headers.sort(function (a, b) {\n return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : 1;\n });\n var parts = [];\n AWS.util.arrayEach.call(this, headers, function (item) {\n var key = item[0].toLowerCase();\n if (this.isSignableHeader(key)) {\n var value = item[1];\n if (typeof value === 'undefined' || value === null || typeof value.toString !== 'function') {\n throw AWS.util.error(new Error('Header ' + key + ' contains invalid value'), {\n code: 'InvalidHeader'\n });\n }\n parts.push(key + ':' +\n this.canonicalHeaderValues(value.toString()));\n }\n });\n return parts.join('\\n');\n },\n\n canonicalHeaderValues: function canonicalHeaderValues(values) {\n return values.replace(/\\s+/g, ' ').replace(/^\\s+|\\s+$/g, '');\n },\n\n signedHeaders: function signedHeaders() {\n var keys = [];\n AWS.util.each.call(this, this.request.headers, function (key) {\n key = key.toLowerCase();\n if (this.isSignableHeader(key)) keys.push(key);\n });\n return keys.sort().join(';');\n },\n\n credentialString: function credentialString(datetime) {\n return v4Credentials.createScope(\n datetime.substr(0, 8),\n this.request.region,\n this.serviceName\n );\n },\n\n hexEncodedHash: function hash(string) {\n return AWS.util.crypto.sha256(string, 'hex');\n },\n\n hexEncodedBodyHash: function hexEncodedBodyHash() {\n var request = this.request;\n if (this.isPresigned() && (['s3', 's3-object-lambda'].indexOf(this.serviceName) > -1) && !request.body) {\n return 'UNSIGNED-PAYLOAD';\n } else if (request.headers['X-Amz-Content-Sha256']) {\n return request.headers['X-Amz-Content-Sha256'];\n } else {\n return this.hexEncodedHash(this.request.body || '');\n }\n },\n\n unsignableHeaders: [\n 'authorization',\n 'content-type',\n 'content-length',\n 'user-agent',\n expiresHeader,\n 'expect',\n 'x-amzn-trace-id'\n ],\n\n isSignableHeader: function isSignableHeader(key) {\n if (key.toLowerCase().indexOf('x-amz-') === 0) return true;\n return this.unsignableHeaders.indexOf(key) < 0;\n },\n\n isPresigned: function isPresigned() {\n return this.request.headers[expiresHeader] ? true : false;\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V4;\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar cachedSecret = {};\n\n/**\n * @api private\n */\nvar cacheQueue = [];\n\n/**\n * @api private\n */\nvar maxCacheEntries = 50;\n\n/**\n * @api private\n */\nvar v4Identifier = 'aws4_request';\n\n/**\n * @api private\n */\nmodule.exports = {\n /**\n * @api private\n *\n * @param date [String]\n * @param region [String]\n * @param serviceName [String]\n * @return [String]\n */\n createScope: function createScope(date, region, serviceName) {\n return [\n date.substr(0, 8),\n region,\n serviceName,\n v4Identifier\n ].join('/');\n },\n\n /**\n * @api private\n *\n * @param credentials [Credentials]\n * @param date [String]\n * @param region [String]\n * @param service [String]\n * @param shouldCache [Boolean]\n * @return [String]\n */\n getSigningKey: function getSigningKey(\n credentials,\n date,\n region,\n service,\n shouldCache\n ) {\n var credsIdentifier = AWS.util.crypto\n .hmac(credentials.secretAccessKey, credentials.accessKeyId, 'base64');\n var cacheKey = [credsIdentifier, date, region, service].join('_');\n shouldCache = shouldCache !== false;\n if (shouldCache && (cacheKey in cachedSecret)) {\n return cachedSecret[cacheKey];\n }\n\n var kDate = AWS.util.crypto.hmac(\n 'AWS4' + credentials.secretAccessKey,\n date,\n 'buffer'\n );\n var kRegion = AWS.util.crypto.hmac(kDate, region, 'buffer');\n var kService = AWS.util.crypto.hmac(kRegion, service, 'buffer');\n\n var signingKey = AWS.util.crypto.hmac(kService, v4Identifier, 'buffer');\n if (shouldCache) {\n cachedSecret[cacheKey] = signingKey;\n cacheQueue.push(cacheKey);\n if (cacheQueue.length > maxCacheEntries) {\n // remove the oldest entry (not the least recently used)\n delete cachedSecret[cacheQueue.shift()];\n }\n }\n\n return signingKey;\n },\n\n /**\n * @api private\n *\n * Empties the derived signing key cache. Made available for testing purposes\n * only.\n */\n emptyCache: function emptyCache() {\n cachedSecret = {};\n cacheQueue = [];\n }\n};\n","function AcceptorStateMachine(states, state) {\n this.currentState = state || null;\n this.states = states || {};\n}\n\nAcceptorStateMachine.prototype.runTo = function runTo(finalState, done, bindObject, inputError) {\n if (typeof finalState === 'function') {\n inputError = bindObject; bindObject = done;\n done = finalState; finalState = null;\n }\n\n var self = this;\n var state = self.states[self.currentState];\n state.fn.call(bindObject || self, inputError, function(err) {\n if (err) {\n if (state.fail) self.currentState = state.fail;\n else return done ? done.call(bindObject, err) : null;\n } else {\n if (state.accept) self.currentState = state.accept;\n else return done ? done.call(bindObject) : null;\n }\n if (self.currentState === finalState) {\n return done ? done.call(bindObject, err) : null;\n }\n\n self.runTo(finalState, done, bindObject, err);\n });\n};\n\nAcceptorStateMachine.prototype.addState = function addState(name, acceptState, failState, fn) {\n if (typeof acceptState === 'function') {\n fn = acceptState; acceptState = null; failState = null;\n } else if (typeof failState === 'function') {\n fn = failState; failState = null;\n }\n\n if (!this.currentState) this.currentState = name;\n this.states[name] = { accept: acceptState, fail: failState, fn: fn };\n return this;\n};\n\n/**\n * @api private\n */\nmodule.exports = AcceptorStateMachine;\n","/* eslint guard-for-in:0 */\nvar AWS;\n\n/**\n * A set of utility methods for use with the AWS SDK.\n *\n * @!attribute abort\n * Return this value from an iterator function {each} or {arrayEach}\n * to break out of the iteration.\n * @example Breaking out of an iterator function\n * AWS.util.each({a: 1, b: 2, c: 3}, function(key, value) {\n * if (key == 'b') return AWS.util.abort;\n * });\n * @see each\n * @see arrayEach\n * @api private\n */\nvar util = {\n environment: 'nodejs',\n engine: function engine() {\n if (util.isBrowser() && typeof navigator !== 'undefined') {\n return navigator.userAgent;\n } else {\n var engine = process.platform + '/' + process.version;\n if (process.env.AWS_EXECUTION_ENV) {\n engine += ' exec-env/' + process.env.AWS_EXECUTION_ENV;\n }\n return engine;\n }\n },\n\n userAgent: function userAgent() {\n var name = util.environment;\n var agent = 'aws-sdk-' + name + '/' + require('./core').VERSION;\n if (name === 'nodejs') agent += ' ' + util.engine();\n return agent;\n },\n\n uriEscape: function uriEscape(string) {\n var output = encodeURIComponent(string);\n output = output.replace(/[^A-Za-z0-9_.~\\-%]+/g, escape);\n\n // AWS percent-encodes some extra non-standard characters in a URI\n output = output.replace(/[*]/g, function(ch) {\n return '%' + ch.charCodeAt(0).toString(16).toUpperCase();\n });\n\n return output;\n },\n\n uriEscapePath: function uriEscapePath(string) {\n var parts = [];\n util.arrayEach(string.split('/'), function (part) {\n parts.push(util.uriEscape(part));\n });\n return parts.join('/');\n },\n\n urlParse: function urlParse(url) {\n return util.url.parse(url);\n },\n\n urlFormat: function urlFormat(url) {\n return util.url.format(url);\n },\n\n queryStringParse: function queryStringParse(qs) {\n return util.querystring.parse(qs);\n },\n\n queryParamsToString: function queryParamsToString(params) {\n var items = [];\n var escape = util.uriEscape;\n var sortedKeys = Object.keys(params).sort();\n\n util.arrayEach(sortedKeys, function(name) {\n var value = params[name];\n var ename = escape(name);\n var result = ename + '=';\n if (Array.isArray(value)) {\n var vals = [];\n util.arrayEach(value, function(item) { vals.push(escape(item)); });\n result = ename + '=' + vals.sort().join('&' + ename + '=');\n } else if (value !== undefined && value !== null) {\n result = ename + '=' + escape(value);\n }\n items.push(result);\n });\n\n return items.join('&');\n },\n\n readFileSync: function readFileSync(path) {\n if (util.isBrowser()) return null;\n return require('fs').readFileSync(path, 'utf-8');\n },\n\n base64: {\n encode: function encode64(string) {\n if (typeof string === 'number') {\n throw util.error(new Error('Cannot base64 encode number ' + string));\n }\n if (string === null || typeof string === 'undefined') {\n return string;\n }\n var buf = util.buffer.toBuffer(string);\n return buf.toString('base64');\n },\n\n decode: function decode64(string) {\n if (typeof string === 'number') {\n throw util.error(new Error('Cannot base64 decode number ' + string));\n }\n if (string === null || typeof string === 'undefined') {\n return string;\n }\n return util.buffer.toBuffer(string, 'base64');\n }\n\n },\n\n buffer: {\n /**\n * Buffer constructor for Node buffer and buffer pollyfill\n */\n toBuffer: function(data, encoding) {\n return (typeof util.Buffer.from === 'function' && util.Buffer.from !== Uint8Array.from) ?\n util.Buffer.from(data, encoding) : new util.Buffer(data, encoding);\n },\n\n alloc: function(size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new Error('size passed to alloc must be a number.');\n }\n if (typeof util.Buffer.alloc === 'function') {\n return util.Buffer.alloc(size, fill, encoding);\n } else {\n var buf = new util.Buffer(size);\n if (fill !== undefined && typeof buf.fill === 'function') {\n buf.fill(fill, undefined, undefined, encoding);\n }\n return buf;\n }\n },\n\n toStream: function toStream(buffer) {\n if (!util.Buffer.isBuffer(buffer)) buffer = util.buffer.toBuffer(buffer);\n\n var readable = new (util.stream.Readable)();\n var pos = 0;\n readable._read = function(size) {\n if (pos >= buffer.length) return readable.push(null);\n\n var end = pos + size;\n if (end > buffer.length) end = buffer.length;\n readable.push(buffer.slice(pos, end));\n pos = end;\n };\n\n return readable;\n },\n\n /**\n * Concatenates a list of Buffer objects.\n */\n concat: function(buffers) {\n var length = 0,\n offset = 0,\n buffer = null, i;\n\n for (i = 0; i < buffers.length; i++) {\n length += buffers[i].length;\n }\n\n buffer = util.buffer.alloc(length);\n\n for (i = 0; i < buffers.length; i++) {\n buffers[i].copy(buffer, offset);\n offset += buffers[i].length;\n }\n\n return buffer;\n }\n },\n\n string: {\n byteLength: function byteLength(string) {\n if (string === null || string === undefined) return 0;\n if (typeof string === 'string') string = util.buffer.toBuffer(string);\n\n if (typeof string.byteLength === 'number') {\n return string.byteLength;\n } else if (typeof string.length === 'number') {\n return string.length;\n } else if (typeof string.size === 'number') {\n return string.size;\n } else if (typeof string.path === 'string') {\n return require('fs').lstatSync(string.path).size;\n } else {\n throw util.error(new Error('Cannot determine length of ' + string),\n { object: string });\n }\n },\n\n upperFirst: function upperFirst(string) {\n return string[0].toUpperCase() + string.substr(1);\n },\n\n lowerFirst: function lowerFirst(string) {\n return string[0].toLowerCase() + string.substr(1);\n }\n },\n\n ini: {\n parse: function string(ini) {\n var currentSection, map = {};\n util.arrayEach(ini.split(/\\r?\\n/), function(line) {\n line = line.split(/(^|\\s)[;#]/)[0].trim(); // remove comments and trim\n var isSection = line[0] === '[' && line[line.length - 1] === ']';\n if (isSection) {\n currentSection = line.substring(1, line.length - 1);\n if (currentSection === '__proto__' || currentSection.split(/\\s/)[1] === '__proto__') {\n throw util.error(\n new Error('Cannot load profile name \\'' + currentSection + '\\' from shared ini file.')\n );\n }\n } else if (currentSection) {\n var indexOfEqualsSign = line.indexOf('=');\n var start = 0;\n var end = line.length - 1;\n var isAssignment =\n indexOfEqualsSign !== -1 && indexOfEqualsSign !== start && indexOfEqualsSign !== end;\n\n if (isAssignment) {\n var name = line.substring(0, indexOfEqualsSign).trim();\n var value = line.substring(indexOfEqualsSign + 1).trim();\n\n map[currentSection] = map[currentSection] || {};\n map[currentSection][name] = value;\n }\n }\n });\n\n return map;\n }\n },\n\n fn: {\n noop: function() {},\n callback: function (err) { if (err) throw err; },\n\n /**\n * Turn a synchronous function into as \"async\" function by making it call\n * a callback. The underlying function is called with all but the last argument,\n * which is treated as the callback. The callback is passed passed a first argument\n * of null on success to mimick standard node callbacks.\n */\n makeAsync: function makeAsync(fn, expectedArgs) {\n if (expectedArgs && expectedArgs <= fn.length) {\n return fn;\n }\n\n return function() {\n var args = Array.prototype.slice.call(arguments, 0);\n var callback = args.pop();\n var result = fn.apply(null, args);\n callback(result);\n };\n }\n },\n\n /**\n * Date and time utility functions.\n */\n date: {\n\n /**\n * @return [Date] the current JavaScript date object. Since all\n * AWS services rely on this date object, you can override\n * this function to provide a special time value to AWS service\n * requests.\n */\n getDate: function getDate() {\n if (!AWS) AWS = require('./core');\n if (AWS.config.systemClockOffset) { // use offset when non-zero\n return new Date(new Date().getTime() + AWS.config.systemClockOffset);\n } else {\n return new Date();\n }\n },\n\n /**\n * @return [String] the date in ISO-8601 format\n */\n iso8601: function iso8601(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.toISOString().replace(/\\.\\d{3}Z$/, 'Z');\n },\n\n /**\n * @return [String] the date in RFC 822 format\n */\n rfc822: function rfc822(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.toUTCString();\n },\n\n /**\n * @return [Integer] the UNIX timestamp value for the current time\n */\n unixTimestamp: function unixTimestamp(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.getTime() / 1000;\n },\n\n /**\n * @param [String,number,Date] date\n * @return [Date]\n */\n from: function format(date) {\n if (typeof date === 'number') {\n return new Date(date * 1000); // unix timestamp\n } else {\n return new Date(date);\n }\n },\n\n /**\n * Given a Date or date-like value, this function formats the\n * date into a string of the requested value.\n * @param [String,number,Date] date\n * @param [String] formatter Valid formats are:\n # * 'iso8601'\n # * 'rfc822'\n # * 'unixTimestamp'\n * @return [String]\n */\n format: function format(date, formatter) {\n if (!formatter) formatter = 'iso8601';\n return util.date[formatter](util.date.from(date));\n },\n\n parseTimestamp: function parseTimestamp(value) {\n if (typeof value === 'number') { // unix timestamp (number)\n return new Date(value * 1000);\n } else if (value.match(/^\\d+$/)) { // unix timestamp\n return new Date(value * 1000);\n } else if (value.match(/^\\d{4}/)) { // iso8601\n return new Date(value);\n } else if (value.match(/^\\w{3},/)) { // rfc822\n return new Date(value);\n } else {\n throw util.error(\n new Error('unhandled timestamp format: ' + value),\n {code: 'TimestampParserError'});\n }\n }\n\n },\n\n crypto: {\n crc32Table: [\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419,\n 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4,\n 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07,\n 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856,\n 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9,\n 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4,\n 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3,\n 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A,\n 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599,\n 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190,\n 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F,\n 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E,\n 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED,\n 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950,\n 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3,\n 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A,\n 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5,\n 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010,\n 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17,\n 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6,\n 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615,\n 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344,\n 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB,\n 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A,\n 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1,\n 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C,\n 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF,\n 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE,\n 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31,\n 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C,\n 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B,\n 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242,\n 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1,\n 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278,\n 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7,\n 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66,\n 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605,\n 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8,\n 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B,\n 0x2D02EF8D],\n\n crc32: function crc32(data) {\n var tbl = util.crypto.crc32Table;\n var crc = 0 ^ -1;\n\n if (typeof data === 'string') {\n data = util.buffer.toBuffer(data);\n }\n\n for (var i = 0; i < data.length; i++) {\n var code = data.readUInt8(i);\n crc = (crc >>> 8) ^ tbl[(crc ^ code) & 0xFF];\n }\n return (crc ^ -1) >>> 0;\n },\n\n hmac: function hmac(key, string, digest, fn) {\n if (!digest) digest = 'binary';\n if (digest === 'buffer') { digest = undefined; }\n if (!fn) fn = 'sha256';\n if (typeof string === 'string') string = util.buffer.toBuffer(string);\n return util.crypto.lib.createHmac(fn, key).update(string).digest(digest);\n },\n\n md5: function md5(data, digest, callback) {\n return util.crypto.hash('md5', data, digest, callback);\n },\n\n sha256: function sha256(data, digest, callback) {\n return util.crypto.hash('sha256', data, digest, callback);\n },\n\n hash: function(algorithm, data, digest, callback) {\n var hash = util.crypto.createHash(algorithm);\n if (!digest) { digest = 'binary'; }\n if (digest === 'buffer') { digest = undefined; }\n if (typeof data === 'string') data = util.buffer.toBuffer(data);\n var sliceFn = util.arraySliceFn(data);\n var isBuffer = util.Buffer.isBuffer(data);\n //Identifying objects with an ArrayBuffer as buffers\n if (util.isBrowser() && typeof ArrayBuffer !== 'undefined' && data && data.buffer instanceof ArrayBuffer) isBuffer = true;\n\n if (callback && typeof data === 'object' &&\n typeof data.on === 'function' && !isBuffer) {\n data.on('data', function(chunk) { hash.update(chunk); });\n data.on('error', function(err) { callback(err); });\n data.on('end', function() { callback(null, hash.digest(digest)); });\n } else if (callback && sliceFn && !isBuffer &&\n typeof FileReader !== 'undefined') {\n // this might be a File/Blob\n var index = 0, size = 1024 * 512;\n var reader = new FileReader();\n reader.onerror = function() {\n callback(new Error('Failed to read data.'));\n };\n reader.onload = function() {\n var buf = new util.Buffer(new Uint8Array(reader.result));\n hash.update(buf);\n index += buf.length;\n reader._continueReading();\n };\n reader._continueReading = function() {\n if (index >= data.size) {\n callback(null, hash.digest(digest));\n return;\n }\n\n var back = index + size;\n if (back > data.size) back = data.size;\n reader.readAsArrayBuffer(sliceFn.call(data, index, back));\n };\n\n reader._continueReading();\n } else {\n if (util.isBrowser() && typeof data === 'object' && !isBuffer) {\n data = new util.Buffer(new Uint8Array(data));\n }\n var out = hash.update(data).digest(digest);\n if (callback) callback(null, out);\n return out;\n }\n },\n\n toHex: function toHex(data) {\n var out = [];\n for (var i = 0; i < data.length; i++) {\n out.push(('0' + data.charCodeAt(i).toString(16)).substr(-2, 2));\n }\n return out.join('');\n },\n\n createHash: function createHash(algorithm) {\n return util.crypto.lib.createHash(algorithm);\n }\n\n },\n\n /** @!ignore */\n\n /* Abort constant */\n abort: {},\n\n each: function each(object, iterFunction) {\n for (var key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n var ret = iterFunction.call(this, key, object[key]);\n if (ret === util.abort) break;\n }\n }\n },\n\n arrayEach: function arrayEach(array, iterFunction) {\n for (var idx in array) {\n if (Object.prototype.hasOwnProperty.call(array, idx)) {\n var ret = iterFunction.call(this, array[idx], parseInt(idx, 10));\n if (ret === util.abort) break;\n }\n }\n },\n\n update: function update(obj1, obj2) {\n util.each(obj2, function iterator(key, item) {\n obj1[key] = item;\n });\n return obj1;\n },\n\n merge: function merge(obj1, obj2) {\n return util.update(util.copy(obj1), obj2);\n },\n\n copy: function copy(object) {\n if (object === null || object === undefined) return object;\n var dupe = {};\n // jshint forin:false\n for (var key in object) {\n dupe[key] = object[key];\n }\n return dupe;\n },\n\n isEmpty: function isEmpty(obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n return false;\n }\n }\n return true;\n },\n\n arraySliceFn: function arraySliceFn(obj) {\n var fn = obj.slice || obj.webkitSlice || obj.mozSlice;\n return typeof fn === 'function' ? fn : null;\n },\n\n isType: function isType(obj, type) {\n // handle cross-\"frame\" objects\n if (typeof type === 'function') type = util.typeName(type);\n return Object.prototype.toString.call(obj) === '[object ' + type + ']';\n },\n\n typeName: function typeName(type) {\n if (Object.prototype.hasOwnProperty.call(type, 'name')) return type.name;\n var str = type.toString();\n var match = str.match(/^\\s*function (.+)\\(/);\n return match ? match[1] : str;\n },\n\n error: function error(err, options) {\n var originalError = null;\n if (typeof err.message === 'string' && err.message !== '') {\n if (typeof options === 'string' || (options && options.message)) {\n originalError = util.copy(err);\n originalError.message = err.message;\n }\n }\n err.message = err.message || null;\n\n if (typeof options === 'string') {\n err.message = options;\n } else if (typeof options === 'object' && options !== null) {\n util.update(err, options);\n if (options.message)\n err.message = options.message;\n if (options.code || options.name)\n err.code = options.code || options.name;\n if (options.stack)\n err.stack = options.stack;\n }\n\n if (typeof Object.defineProperty === 'function') {\n Object.defineProperty(err, 'name', {writable: true, enumerable: false});\n Object.defineProperty(err, 'message', {enumerable: true});\n }\n\n err.name = String(options && options.name || err.name || err.code || 'Error');\n err.time = new Date();\n\n if (originalError) {\n err.originalError = originalError;\n }\n\n\n for (var key in options || {}) {\n if (key[0] === '[' && key[key.length - 1] === ']') {\n key = key.slice(1, -1);\n if (key === 'code' || key === 'message') {\n continue;\n }\n err['[' + key + ']'] = 'See error.' + key + ' for details.';\n Object.defineProperty(err, key, {\n value: err[key] || (options && options[key]) || (originalError && originalError[key]),\n enumerable: false,\n writable: true\n });\n }\n }\n\n return err;\n },\n\n /**\n * @api private\n */\n inherit: function inherit(klass, features) {\n var newObject = null;\n if (features === undefined) {\n features = klass;\n klass = Object;\n newObject = {};\n } else {\n var ctor = function ConstructorWrapper() {};\n ctor.prototype = klass.prototype;\n newObject = new ctor();\n }\n\n // constructor not supplied, create pass-through ctor\n if (features.constructor === Object) {\n features.constructor = function() {\n if (klass !== Object) {\n return klass.apply(this, arguments);\n }\n };\n }\n\n features.constructor.prototype = newObject;\n util.update(features.constructor.prototype, features);\n features.constructor.__super__ = klass;\n return features.constructor;\n },\n\n /**\n * @api private\n */\n mixin: function mixin() {\n var klass = arguments[0];\n for (var i = 1; i < arguments.length; i++) {\n // jshint forin:false\n for (var prop in arguments[i].prototype) {\n var fn = arguments[i].prototype[prop];\n if (prop !== 'constructor') {\n klass.prototype[prop] = fn;\n }\n }\n }\n return klass;\n },\n\n /**\n * @api private\n */\n hideProperties: function hideProperties(obj, props) {\n if (typeof Object.defineProperty !== 'function') return;\n\n util.arrayEach(props, function (key) {\n Object.defineProperty(obj, key, {\n enumerable: false, writable: true, configurable: true });\n });\n },\n\n /**\n * @api private\n */\n property: function property(obj, name, value, enumerable, isValue) {\n var opts = {\n configurable: true,\n enumerable: enumerable !== undefined ? enumerable : true\n };\n if (typeof value === 'function' && !isValue) {\n opts.get = value;\n }\n else {\n opts.value = value; opts.writable = true;\n }\n\n Object.defineProperty(obj, name, opts);\n },\n\n /**\n * @api private\n */\n memoizedProperty: function memoizedProperty(obj, name, get, enumerable) {\n var cachedValue = null;\n\n // build enumerable attribute for each value with lazy accessor.\n util.property(obj, name, function() {\n if (cachedValue === null) {\n cachedValue = get();\n }\n return cachedValue;\n }, enumerable);\n },\n\n /**\n * TODO Remove in major version revision\n * This backfill populates response data without the\n * top-level payload name.\n *\n * @api private\n */\n hoistPayloadMember: function hoistPayloadMember(resp) {\n var req = resp.request;\n var operationName = req.operation;\n var operation = req.service.api.operations[operationName];\n var output = operation.output;\n if (output.payload && !operation.hasEventOutput) {\n var payloadMember = output.members[output.payload];\n var responsePayload = resp.data[output.payload];\n if (payloadMember.type === 'structure') {\n util.each(responsePayload, function(key, value) {\n util.property(resp.data, key, value, false);\n });\n }\n }\n },\n\n /**\n * Compute SHA-256 checksums of streams\n *\n * @api private\n */\n computeSha256: function computeSha256(body, done) {\n if (util.isNode()) {\n var Stream = util.stream.Stream;\n var fs = require('fs');\n if (typeof Stream === 'function' && body instanceof Stream) {\n if (typeof body.path === 'string') { // assume file object\n var settings = {};\n if (typeof body.start === 'number') {\n settings.start = body.start;\n }\n if (typeof body.end === 'number') {\n settings.end = body.end;\n }\n body = fs.createReadStream(body.path, settings);\n } else { // TODO support other stream types\n return done(new Error('Non-file stream objects are ' +\n 'not supported with SigV4'));\n }\n }\n }\n\n util.crypto.sha256(body, 'hex', function(err, sha) {\n if (err) done(err);\n else done(null, sha);\n });\n },\n\n /**\n * @api private\n */\n isClockSkewed: function isClockSkewed(serverTime) {\n if (serverTime) {\n util.property(AWS.config, 'isClockSkewed',\n Math.abs(new Date().getTime() - serverTime) >= 300000, false);\n return AWS.config.isClockSkewed;\n }\n },\n\n applyClockOffset: function applyClockOffset(serverTime) {\n if (serverTime)\n AWS.config.systemClockOffset = serverTime - new Date().getTime();\n },\n\n /**\n * @api private\n */\n extractRequestId: function extractRequestId(resp) {\n var requestId = resp.httpResponse.headers['x-amz-request-id'] ||\n resp.httpResponse.headers['x-amzn-requestid'];\n\n if (!requestId && resp.data && resp.data.ResponseMetadata) {\n requestId = resp.data.ResponseMetadata.RequestId;\n }\n\n if (requestId) {\n resp.requestId = requestId;\n }\n\n if (resp.error) {\n resp.error.requestId = requestId;\n }\n },\n\n /**\n * @api private\n */\n addPromises: function addPromises(constructors, PromiseDependency) {\n var deletePromises = false;\n if (PromiseDependency === undefined && AWS && AWS.config) {\n PromiseDependency = AWS.config.getPromisesDependency();\n }\n if (PromiseDependency === undefined && typeof Promise !== 'undefined') {\n PromiseDependency = Promise;\n }\n if (typeof PromiseDependency !== 'function') deletePromises = true;\n if (!Array.isArray(constructors)) constructors = [constructors];\n\n for (var ind = 0; ind < constructors.length; ind++) {\n var constructor = constructors[ind];\n if (deletePromises) {\n if (constructor.deletePromisesFromClass) {\n constructor.deletePromisesFromClass();\n }\n } else if (constructor.addPromisesToClass) {\n constructor.addPromisesToClass(PromiseDependency);\n }\n }\n },\n\n /**\n * @api private\n * Return a function that will return a promise whose fate is decided by the\n * callback behavior of the given method with `methodName`. The method to be\n * promisified should conform to node.js convention of accepting a callback as\n * last argument and calling that callback with error as the first argument\n * and success value on the second argument.\n */\n promisifyMethod: function promisifyMethod(methodName, PromiseDependency) {\n return function promise() {\n var self = this;\n var args = Array.prototype.slice.call(arguments);\n return new PromiseDependency(function(resolve, reject) {\n args.push(function(err, data) {\n if (err) {\n reject(err);\n } else {\n resolve(data);\n }\n });\n self[methodName].apply(self, args);\n });\n };\n },\n\n /**\n * @api private\n */\n isDualstackAvailable: function isDualstackAvailable(service) {\n if (!service) return false;\n var metadata = require('../apis/metadata.json');\n if (typeof service !== 'string') service = service.serviceIdentifier;\n if (typeof service !== 'string' || !metadata.hasOwnProperty(service)) return false;\n return !!metadata[service].dualstackAvailable;\n },\n\n /**\n * @api private\n */\n calculateRetryDelay: function calculateRetryDelay(retryCount, retryDelayOptions, err) {\n if (!retryDelayOptions) retryDelayOptions = {};\n var customBackoff = retryDelayOptions.customBackoff || null;\n if (typeof customBackoff === 'function') {\n return customBackoff(retryCount, err);\n }\n var base = typeof retryDelayOptions.base === 'number' ? retryDelayOptions.base : 100;\n var delay = Math.random() * (Math.pow(2, retryCount) * base);\n return delay;\n },\n\n /**\n * @api private\n */\n handleRequestWithRetries: function handleRequestWithRetries(httpRequest, options, cb) {\n if (!options) options = {};\n var http = AWS.HttpClient.getInstance();\n var httpOptions = options.httpOptions || {};\n var retryCount = 0;\n\n var errCallback = function(err) {\n var maxRetries = options.maxRetries || 0;\n if (err && err.code === 'TimeoutError') err.retryable = true;\n\n // Call `calculateRetryDelay()` only when relevant, see #3401\n if (err && err.retryable && retryCount < maxRetries) {\n var delay = util.calculateRetryDelay(retryCount, options.retryDelayOptions, err);\n if (delay >= 0) {\n retryCount++;\n setTimeout(sendRequest, delay + (err.retryAfter || 0));\n return;\n }\n }\n cb(err);\n };\n\n var sendRequest = function() {\n var data = '';\n http.handleRequest(httpRequest, httpOptions, function(httpResponse) {\n httpResponse.on('data', function(chunk) { data += chunk.toString(); });\n httpResponse.on('end', function() {\n var statusCode = httpResponse.statusCode;\n if (statusCode < 300) {\n cb(null, data);\n } else {\n var retryAfter = parseInt(httpResponse.headers['retry-after'], 10) * 1000 || 0;\n var err = util.error(new Error(),\n {\n statusCode: statusCode,\n retryable: statusCode >= 500 || statusCode === 429\n }\n );\n if (retryAfter && err.retryable) err.retryAfter = retryAfter;\n errCallback(err);\n }\n });\n }, errCallback);\n };\n\n AWS.util.defer(sendRequest);\n },\n\n /**\n * @api private\n */\n uuid: {\n v4: function uuidV4() {\n return require('uuid').v4();\n }\n },\n\n /**\n * @api private\n */\n convertPayloadToString: function convertPayloadToString(resp) {\n var req = resp.request;\n var operation = req.operation;\n var rules = req.service.api.operations[operation].output || {};\n if (rules.payload && resp.data[rules.payload]) {\n resp.data[rules.payload] = resp.data[rules.payload].toString();\n }\n },\n\n /**\n * @api private\n */\n defer: function defer(callback) {\n if (typeof process === 'object' && typeof process.nextTick === 'function') {\n process.nextTick(callback);\n } else if (typeof setImmediate === 'function') {\n setImmediate(callback);\n } else {\n setTimeout(callback, 0);\n }\n },\n\n /**\n * @api private\n */\n getRequestPayloadShape: function getRequestPayloadShape(req) {\n var operations = req.service.api.operations;\n if (!operations) return undefined;\n var operation = (operations || {})[req.operation];\n if (!operation || !operation.input || !operation.input.payload) return undefined;\n return operation.input.members[operation.input.payload];\n },\n\n getProfilesFromSharedConfig: function getProfilesFromSharedConfig(iniLoader, filename) {\n var profiles = {};\n var profilesFromConfig = {};\n if (process.env[util.configOptInEnv]) {\n var profilesFromConfig = iniLoader.loadFrom({\n isConfig: true,\n filename: process.env[util.sharedConfigFileEnv]\n });\n }\n var profilesFromCreds= {};\n try {\n var profilesFromCreds = iniLoader.loadFrom({\n filename: filename ||\n (process.env[util.configOptInEnv] && process.env[util.sharedCredentialsFileEnv])\n });\n } catch (error) {\n // if using config, assume it is fully descriptive without a credentials file:\n if (!process.env[util.configOptInEnv]) throw error;\n }\n for (var i = 0, profileNames = Object.keys(profilesFromConfig); i < profileNames.length; i++) {\n profiles[profileNames[i]] = objectAssign(profiles[profileNames[i]] || {}, profilesFromConfig[profileNames[i]]);\n }\n for (var i = 0, profileNames = Object.keys(profilesFromCreds); i < profileNames.length; i++) {\n profiles[profileNames[i]] = objectAssign(profiles[profileNames[i]] || {}, profilesFromCreds[profileNames[i]]);\n }\n return profiles;\n\n /**\n * Roughly the semantics of `Object.assign(target, source)`\n */\n function objectAssign(target, source) {\n for (var i = 0, keys = Object.keys(source); i < keys.length; i++) {\n target[keys[i]] = source[keys[i]];\n }\n return target;\n }\n },\n\n /**\n * @api private\n */\n ARN: {\n validate: function validateARN(str) {\n return str && str.indexOf('arn:') === 0 && str.split(':').length >= 6;\n },\n parse: function parseARN(arn) {\n var matched = arn.split(':');\n return {\n partition: matched[1],\n service: matched[2],\n region: matched[3],\n accountId: matched[4],\n resource: matched.slice(5).join(':')\n };\n },\n build: function buildARN(arnObject) {\n if (\n arnObject.service === undefined ||\n arnObject.region === undefined ||\n arnObject.accountId === undefined ||\n arnObject.resource === undefined\n ) throw util.error(new Error('Input ARN object is invalid'));\n return 'arn:'+ (arnObject.partition || 'aws') + ':' + arnObject.service +\n ':' + arnObject.region + ':' + arnObject.accountId + ':' + arnObject.resource;\n }\n },\n\n /**\n * @api private\n */\n defaultProfile: 'default',\n\n /**\n * @api private\n */\n configOptInEnv: 'AWS_SDK_LOAD_CONFIG',\n\n /**\n * @api private\n */\n sharedCredentialsFileEnv: 'AWS_SHARED_CREDENTIALS_FILE',\n\n /**\n * @api private\n */\n sharedConfigFileEnv: 'AWS_CONFIG_FILE',\n\n /**\n * @api private\n */\n imdsDisabledEnv: 'AWS_EC2_METADATA_DISABLED'\n};\n\n/**\n * @api private\n */\nmodule.exports = util;\n","var util = require('../util');\nvar Shape = require('../model/shape');\n\nfunction DomXmlParser() { }\n\nDomXmlParser.prototype.parse = function(xml, shape) {\n if (xml.replace(/^\\s+/, '') === '') return {};\n\n var result, error;\n try {\n if (window.DOMParser) {\n try {\n var parser = new DOMParser();\n result = parser.parseFromString(xml, 'text/xml');\n } catch (syntaxError) {\n throw util.error(new Error('Parse error in document'),\n {\n originalError: syntaxError,\n code: 'XMLParserError',\n retryable: true\n });\n }\n\n if (result.documentElement === null) {\n throw util.error(new Error('Cannot parse empty document.'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n\n var isError = result.getElementsByTagName('parsererror')[0];\n if (isError && (isError.parentNode === result ||\n isError.parentNode.nodeName === 'body' ||\n isError.parentNode.parentNode === result ||\n isError.parentNode.parentNode.nodeName === 'body')) {\n var errorElement = isError.getElementsByTagName('div')[0] || isError;\n throw util.error(new Error(errorElement.textContent || 'Parser error in document'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n } else if (window.ActiveXObject) {\n result = new window.ActiveXObject('Microsoft.XMLDOM');\n result.async = false;\n\n if (!result.loadXML(xml)) {\n throw util.error(new Error('Parse error in document'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n } else {\n throw new Error('Cannot load XML parser');\n }\n } catch (e) {\n error = e;\n }\n\n if (result && result.documentElement && !error) {\n var data = parseXml(result.documentElement, shape);\n var metadata = getElementByTagName(result.documentElement, 'ResponseMetadata');\n if (metadata) {\n data.ResponseMetadata = parseXml(metadata, {});\n }\n return data;\n } else if (error) {\n throw util.error(error || new Error(), {code: 'XMLParserError', retryable: true});\n } else { // empty xml document\n return {};\n }\n};\n\nfunction getElementByTagName(xml, tag) {\n var elements = xml.getElementsByTagName(tag);\n for (var i = 0, iLen = elements.length; i < iLen; i++) {\n if (elements[i].parentNode === xml) {\n return elements[i];\n }\n }\n}\n\nfunction parseXml(xml, shape) {\n if (!shape) shape = {};\n switch (shape.type) {\n case 'structure': return parseStructure(xml, shape);\n case 'map': return parseMap(xml, shape);\n case 'list': return parseList(xml, shape);\n case undefined: case null: return parseUnknown(xml);\n default: return parseScalar(xml, shape);\n }\n}\n\nfunction parseStructure(xml, shape) {\n var data = {};\n if (xml === null) return data;\n\n util.each(shape.members, function(memberName, memberShape) {\n if (memberShape.isXmlAttribute) {\n if (Object.prototype.hasOwnProperty.call(xml.attributes, memberShape.name)) {\n var value = xml.attributes[memberShape.name].value;\n data[memberName] = parseXml({textContent: value}, memberShape);\n }\n } else {\n var xmlChild = memberShape.flattened ? xml :\n getElementByTagName(xml, memberShape.name);\n if (xmlChild) {\n data[memberName] = parseXml(xmlChild, memberShape);\n } else if (\n !memberShape.flattened &&\n memberShape.type === 'list' &&\n !shape.api.xmlNoDefaultLists) {\n data[memberName] = memberShape.defaultValue;\n }\n }\n });\n\n return data;\n}\n\nfunction parseMap(xml, shape) {\n var data = {};\n var xmlKey = shape.key.name || 'key';\n var xmlValue = shape.value.name || 'value';\n var tagName = shape.flattened ? shape.name : 'entry';\n\n var child = xml.firstElementChild;\n while (child) {\n if (child.nodeName === tagName) {\n var key = getElementByTagName(child, xmlKey).textContent;\n var value = getElementByTagName(child, xmlValue);\n data[key] = parseXml(value, shape.value);\n }\n child = child.nextElementSibling;\n }\n return data;\n}\n\nfunction parseList(xml, shape) {\n var data = [];\n var tagName = shape.flattened ? shape.name : (shape.member.name || 'member');\n\n var child = xml.firstElementChild;\n while (child) {\n if (child.nodeName === tagName) {\n data.push(parseXml(child, shape.member));\n }\n child = child.nextElementSibling;\n }\n return data;\n}\n\nfunction parseScalar(xml, shape) {\n if (xml.getAttribute) {\n var encoding = xml.getAttribute('encoding');\n if (encoding === 'base64') {\n shape = new Shape.create({type: encoding});\n }\n }\n\n var text = xml.textContent;\n if (text === '') text = null;\n if (typeof shape.toType === 'function') {\n return shape.toType(text);\n } else {\n return text;\n }\n}\n\nfunction parseUnknown(xml) {\n if (xml === undefined || xml === null) return '';\n\n // empty object\n if (!xml.firstElementChild) {\n if (xml.parentNode.parentNode === null) return {};\n if (xml.childNodes.length === 0) return '';\n else return xml.textContent;\n }\n\n // object, parse as structure\n var shape = {type: 'structure', members: {}};\n var child = xml.firstElementChild;\n while (child) {\n var tag = child.nodeName;\n if (Object.prototype.hasOwnProperty.call(shape.members, tag)) {\n // multiple tags of the same name makes it a list\n shape.members[tag].type = 'list';\n } else {\n shape.members[tag] = {name: tag};\n }\n child = child.nextElementSibling;\n }\n return parseStructure(xml, shape);\n}\n\n/**\n * @api private\n */\nmodule.exports = DomXmlParser;\n","var util = require('../util');\nvar XmlNode = require('./xml-node').XmlNode;\nvar XmlText = require('./xml-text').XmlText;\n\nfunction XmlBuilder() { }\n\nXmlBuilder.prototype.toXML = function(params, shape, rootElement, noEmpty) {\n var xml = new XmlNode(rootElement);\n applyNamespaces(xml, shape, true);\n serialize(xml, params, shape);\n return xml.children.length > 0 || noEmpty ? xml.toString() : '';\n};\n\nfunction serialize(xml, value, shape) {\n switch (shape.type) {\n case 'structure': return serializeStructure(xml, value, shape);\n case 'map': return serializeMap(xml, value, shape);\n case 'list': return serializeList(xml, value, shape);\n default: return serializeScalar(xml, value, shape);\n }\n}\n\nfunction serializeStructure(xml, params, shape) {\n util.arrayEach(shape.memberNames, function(memberName) {\n var memberShape = shape.members[memberName];\n if (memberShape.location !== 'body') return;\n\n var value = params[memberName];\n var name = memberShape.name;\n if (value !== undefined && value !== null) {\n if (memberShape.isXmlAttribute) {\n xml.addAttribute(name, value);\n } else if (memberShape.flattened) {\n serialize(xml, value, memberShape);\n } else {\n var element = new XmlNode(name);\n xml.addChildNode(element);\n applyNamespaces(element, memberShape);\n serialize(element, value, memberShape);\n }\n }\n });\n}\n\nfunction serializeMap(xml, map, shape) {\n var xmlKey = shape.key.name || 'key';\n var xmlValue = shape.value.name || 'value';\n\n util.each(map, function(key, value) {\n var entry = new XmlNode(shape.flattened ? shape.name : 'entry');\n xml.addChildNode(entry);\n\n var entryKey = new XmlNode(xmlKey);\n var entryValue = new XmlNode(xmlValue);\n entry.addChildNode(entryKey);\n entry.addChildNode(entryValue);\n\n serialize(entryKey, key, shape.key);\n serialize(entryValue, value, shape.value);\n });\n}\n\nfunction serializeList(xml, list, shape) {\n if (shape.flattened) {\n util.arrayEach(list, function(value) {\n var name = shape.member.name || shape.name;\n var element = new XmlNode(name);\n xml.addChildNode(element);\n serialize(element, value, shape.member);\n });\n } else {\n util.arrayEach(list, function(value) {\n var name = shape.member.name || 'member';\n var element = new XmlNode(name);\n xml.addChildNode(element);\n serialize(element, value, shape.member);\n });\n }\n}\n\nfunction serializeScalar(xml, value, shape) {\n xml.addChildNode(\n new XmlText(shape.toWireFormat(value))\n );\n}\n\nfunction applyNamespaces(xml, shape, isRoot) {\n var uri, prefix = 'xmlns';\n if (shape.xmlNamespaceUri) {\n uri = shape.xmlNamespaceUri;\n if (shape.xmlNamespacePrefix) prefix += ':' + shape.xmlNamespacePrefix;\n } else if (isRoot && shape.api.xmlNamespaceUri) {\n uri = shape.api.xmlNamespaceUri;\n }\n\n if (uri) xml.addAttribute(prefix, uri);\n}\n\n/**\n * @api private\n */\nmodule.exports = XmlBuilder;\n","/**\n * Escapes characters that can not be in an XML attribute.\n */\nfunction escapeAttribute(value) {\n return value.replace(/&/g, '&').replace(/'/g, ''').replace(//g, '>').replace(/\"/g, '"');\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n escapeAttribute: escapeAttribute\n};\n","/**\n * Escapes characters that can not be in an XML element.\n */\nfunction escapeElement(value) {\n return value.replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\\r/g, ' ')\n .replace(/\\n/g, ' ')\n .replace(/\\u0085/g, '…')\n .replace(/\\u2028/, '
');\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n escapeElement: escapeElement\n};\n","var escapeAttribute = require('./escape-attribute').escapeAttribute;\n\n/**\n * Represents an XML node.\n * @api private\n */\nfunction XmlNode(name, children) {\n if (children === void 0) { children = []; }\n this.name = name;\n this.children = children;\n this.attributes = {};\n}\nXmlNode.prototype.addAttribute = function (name, value) {\n this.attributes[name] = value;\n return this;\n};\nXmlNode.prototype.addChildNode = function (child) {\n this.children.push(child);\n return this;\n};\nXmlNode.prototype.removeAttribute = function (name) {\n delete this.attributes[name];\n return this;\n};\nXmlNode.prototype.toString = function () {\n var hasChildren = Boolean(this.children.length);\n var xmlText = '<' + this.name;\n // add attributes\n var attributes = this.attributes;\n for (var i = 0, attributeNames = Object.keys(attributes); i < attributeNames.length; i++) {\n var attributeName = attributeNames[i];\n var attribute = attributes[attributeName];\n if (typeof attribute !== 'undefined' && attribute !== null) {\n xmlText += ' ' + attributeName + '=\\\"' + escapeAttribute('' + attribute) + '\\\"';\n }\n }\n return xmlText += !hasChildren ? '/>' : '>' + this.children.map(function (c) { return c.toString(); }).join('') + '';\n};\n\n/**\n * @api private\n */\nmodule.exports = {\n XmlNode: XmlNode\n};\n","var escapeElement = require('./escape-element').escapeElement;\n\n/**\n * Represents an XML text value.\n * @api private\n */\nfunction XmlText(value) {\n this.value = value;\n}\n\nXmlText.prototype.toString = function () {\n return escapeElement('' + this.value);\n};\n\n/**\n * @api private\n */\nmodule.exports = {\n XmlText: XmlText\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n 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++]]].join('');\n}\n\nvar _default = bytesToUuid;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes == 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Array(msg.length);\n\n for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i);\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var i;\n var x;\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n var hex;\n\n for (i = 0; i < length32; i += 8) {\n x = input[i >> 5] >>> i % 32 & 0xff;\n hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[(len + 64 >>> 9 << 4) + 14] = len;\n var i;\n var olda;\n var oldb;\n var oldc;\n var oldd;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n var i;\n var output = [];\n output[(input.length >> 2) - 1] = undefined;\n\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0;\n }\n\n var length8 = input.length * 8;\n\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\nfunction rng() {\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n\n return getRandomValues(rnds8);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes == 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Array(msg.length);\n\n for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var i = 0; i < N; i++) {\n M[i] = new Array(16);\n\n for (var j = 0; j < 16; j++) {\n M[i][j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var i = 0; i < N; i++) {\n var W = new Array(80);\n\n for (var t = 0; t < 16; t++) W[t] = M[i][t];\n\n for (var t = 16; t < 80; t++) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var t = 0; t < 80; t++) {\n var s = Math.floor(t / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _bytesToUuid = _interopRequireDefault(require(\"./bytesToUuid.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n 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\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : (0, _bytesToUuid.default)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.URL = exports.DNS = void 0;\n\nvar _bytesToUuid = _interopRequireDefault(require(\"./bytesToUuid.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction uuidToBytes(uuid) {\n // Note: We assume we're being passed a valid uuid string\n var bytes = [];\n uuid.replace(/[a-fA-F0-9]{2}/g, function (hex) {\n bytes.push(parseInt(hex, 16));\n });\n return bytes;\n}\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = new Array(str.length);\n\n for (var i = 0; i < str.length; i++) {\n bytes[i] = str.charCodeAt(i);\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction _default(name, version, hashfunc) {\n var generateUUID = function (value, namespace, buf, offset) {\n var off = buf && offset || 0;\n if (typeof value == 'string') value = stringToBytes(value);\n if (typeof namespace == 'string') namespace = uuidToBytes(namespace);\n if (!Array.isArray(value)) throw TypeError('value must be an array of bytes');\n if (!Array.isArray(namespace) || namespace.length !== 16) throw TypeError('namespace must be uuid string or an Array of 16 byte values'); // Per 4.3\n\n var bytes = hashfunc(namespace.concat(value));\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n for (var idx = 0; idx < 16; ++idx) {\n buf[off + idx] = bytes[idx];\n }\n }\n\n return buf || (0, _bytesToUuid.default)(bytes);\n }; // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name;\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _bytesToUuid = _interopRequireDefault(require(\"./bytesToUuid.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n\n var rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || (0, _bytesToUuid.default)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LRU_1 = require(\"./utils/LRU\");\nvar CACHE_SIZE = 1000;\n/**\n * Inspired node-lru-cache[https://github.com/isaacs/node-lru-cache]\n */\nvar EndpointCache = /** @class */ (function () {\n function EndpointCache(maxSize) {\n if (maxSize === void 0) { maxSize = CACHE_SIZE; }\n this.maxSize = maxSize;\n this.cache = new LRU_1.LRUCache(maxSize);\n }\n ;\n Object.defineProperty(EndpointCache.prototype, \"size\", {\n get: function () {\n return this.cache.length;\n },\n enumerable: true,\n configurable: true\n });\n EndpointCache.prototype.put = function (key, value) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n var endpointRecord = this.populateValue(value);\n this.cache.put(keyString, endpointRecord);\n };\n EndpointCache.prototype.get = function (key) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n var now = Date.now();\n var records = this.cache.get(keyString);\n if (records) {\n for (var i = records.length-1; i >= 0; i--) {\n var record = records[i];\n if (record.Expire < now) {\n records.splice(i, 1);\n }\n }\n if (records.length === 0) {\n this.cache.remove(keyString);\n return undefined;\n }\n }\n return records;\n };\n EndpointCache.getKeyString = function (key) {\n var identifiers = [];\n var identifierNames = Object.keys(key).sort();\n for (var i = 0; i < identifierNames.length; i++) {\n var identifierName = identifierNames[i];\n if (key[identifierName] === undefined)\n continue;\n identifiers.push(key[identifierName]);\n }\n return identifiers.join(' ');\n };\n EndpointCache.prototype.populateValue = function (endpoints) {\n var now = Date.now();\n return endpoints.map(function (endpoint) { return ({\n Address: endpoint.Address || '',\n Expire: now + (endpoint.CachePeriodInMinutes || 1) * 60 * 1000\n }); });\n };\n EndpointCache.prototype.empty = function () {\n this.cache.empty();\n };\n EndpointCache.prototype.remove = function (key) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n this.cache.remove(keyString);\n };\n return EndpointCache;\n}());\nexports.EndpointCache = EndpointCache;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedListNode = /** @class */ (function () {\n function LinkedListNode(key, value) {\n this.key = key;\n this.value = value;\n }\n return LinkedListNode;\n}());\nvar LRUCache = /** @class */ (function () {\n function LRUCache(size) {\n this.nodeMap = {};\n this.size = 0;\n if (typeof size !== 'number' || size < 1) {\n throw new Error('Cache size can only be positive number');\n }\n this.sizeLimit = size;\n }\n Object.defineProperty(LRUCache.prototype, \"length\", {\n get: function () {\n return this.size;\n },\n enumerable: true,\n configurable: true\n });\n LRUCache.prototype.prependToList = function (node) {\n if (!this.headerNode) {\n this.tailNode = node;\n }\n else {\n this.headerNode.prev = node;\n node.next = this.headerNode;\n }\n this.headerNode = node;\n this.size++;\n };\n LRUCache.prototype.removeFromTail = function () {\n if (!this.tailNode) {\n return undefined;\n }\n var node = this.tailNode;\n var prevNode = node.prev;\n if (prevNode) {\n prevNode.next = undefined;\n }\n node.prev = undefined;\n this.tailNode = prevNode;\n this.size--;\n return node;\n };\n LRUCache.prototype.detachFromList = function (node) {\n if (this.headerNode === node) {\n this.headerNode = node.next;\n }\n if (this.tailNode === node) {\n this.tailNode = node.prev;\n }\n if (node.prev) {\n node.prev.next = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n }\n node.next = undefined;\n node.prev = undefined;\n this.size--;\n };\n LRUCache.prototype.get = function (key) {\n if (this.nodeMap[key]) {\n var node = this.nodeMap[key];\n this.detachFromList(node);\n this.prependToList(node);\n return node.value;\n }\n };\n LRUCache.prototype.remove = function (key) {\n if (this.nodeMap[key]) {\n var node = this.nodeMap[key];\n this.detachFromList(node);\n delete this.nodeMap[key];\n }\n };\n LRUCache.prototype.put = function (key, value) {\n if (this.nodeMap[key]) {\n this.remove(key);\n }\n else if (this.size === this.sizeLimit) {\n var tailNode = this.removeFromTail();\n var key_1 = tailNode.key;\n delete this.nodeMap[key_1];\n }\n var newNode = new LinkedListNode(key, value);\n this.nodeMap[key] = newNode;\n this.prependToList(newNode);\n };\n LRUCache.prototype.empty = function () {\n var keys = Object.keys(this.nodeMap);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var node = this.nodeMap[key];\n this.detachFromList(node);\n delete this.nodeMap[key];\n }\n };\n return LRUCache;\n}());\nexports.LRUCache = LRUCache;","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar test = {\n\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","(function(exports) {\n \"use strict\";\n\n function isArray(obj) {\n if (obj !== null) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n } else {\n return false;\n }\n }\n\n function isObject(obj) {\n if (obj !== null) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n } else {\n return false;\n }\n }\n\n function strictDeepEqual(first, second) {\n // Check the scalar case first.\n if (first === second) {\n return true;\n }\n\n // Check if they are the same type.\n var firstType = Object.prototype.toString.call(first);\n if (firstType !== Object.prototype.toString.call(second)) {\n return false;\n }\n // We know that first and second have the same type so we can just check the\n // first type from now on.\n if (isArray(first) === true) {\n // Short circuit if they're not the same length;\n if (first.length !== second.length) {\n return false;\n }\n for (var i = 0; i < first.length; i++) {\n if (strictDeepEqual(first[i], second[i]) === false) {\n return false;\n }\n }\n return true;\n }\n if (isObject(first) === true) {\n // An object is equal if it has the same key/value pairs.\n var keysSeen = {};\n for (var key in first) {\n if (hasOwnProperty.call(first, key)) {\n if (strictDeepEqual(first[key], second[key]) === false) {\n return false;\n }\n keysSeen[key] = true;\n }\n }\n // Now check that there aren't any keys in second that weren't\n // in first.\n for (var key2 in second) {\n if (hasOwnProperty.call(second, key2)) {\n if (keysSeen[key2] !== true) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n function isFalse(obj) {\n // From the spec:\n // A false value corresponds to the following values:\n // Empty list\n // Empty object\n // Empty string\n // False boolean\n // null value\n\n // First check the scalar values.\n if (obj === \"\" || obj === false || obj === null) {\n return true;\n } else if (isArray(obj) && obj.length === 0) {\n // Check for an empty array.\n return true;\n } else if (isObject(obj)) {\n // Check for an empty object.\n for (var key in obj) {\n // If there are any keys, then\n // the object is not empty so the object\n // is not false.\n if (obj.hasOwnProperty(key)) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n }\n\n function objValues(obj) {\n var keys = Object.keys(obj);\n var values = [];\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n }\n\n function merge(a, b) {\n var merged = {};\n for (var key in a) {\n merged[key] = a[key];\n }\n for (var key2 in b) {\n merged[key2] = b[key2];\n }\n return merged;\n }\n\n var trimLeft;\n if (typeof String.prototype.trimLeft === \"function\") {\n trimLeft = function(str) {\n return str.trimLeft();\n };\n } else {\n trimLeft = function(str) {\n return str.match(/^\\s*(.*)/)[1];\n };\n }\n\n // Type constants used to define functions.\n var TYPE_NUMBER = 0;\n var TYPE_ANY = 1;\n var TYPE_STRING = 2;\n var TYPE_ARRAY = 3;\n var TYPE_OBJECT = 4;\n var TYPE_BOOLEAN = 5;\n var TYPE_EXPREF = 6;\n var TYPE_NULL = 7;\n var TYPE_ARRAY_NUMBER = 8;\n var TYPE_ARRAY_STRING = 9;\n var TYPE_NAME_TABLE = {\n 0: 'number',\n 1: 'any',\n 2: 'string',\n 3: 'array',\n 4: 'object',\n 5: 'boolean',\n 6: 'expression',\n 7: 'null',\n 8: 'Array',\n 9: 'Array'\n };\n\n var TOK_EOF = \"EOF\";\n var TOK_UNQUOTEDIDENTIFIER = \"UnquotedIdentifier\";\n var TOK_QUOTEDIDENTIFIER = \"QuotedIdentifier\";\n var TOK_RBRACKET = \"Rbracket\";\n var TOK_RPAREN = \"Rparen\";\n var TOK_COMMA = \"Comma\";\n var TOK_COLON = \"Colon\";\n var TOK_RBRACE = \"Rbrace\";\n var TOK_NUMBER = \"Number\";\n var TOK_CURRENT = \"Current\";\n var TOK_EXPREF = \"Expref\";\n var TOK_PIPE = \"Pipe\";\n var TOK_OR = \"Or\";\n var TOK_AND = \"And\";\n var TOK_EQ = \"EQ\";\n var TOK_GT = \"GT\";\n var TOK_LT = \"LT\";\n var TOK_GTE = \"GTE\";\n var TOK_LTE = \"LTE\";\n var TOK_NE = \"NE\";\n var TOK_FLATTEN = \"Flatten\";\n var TOK_STAR = \"Star\";\n var TOK_FILTER = \"Filter\";\n var TOK_DOT = \"Dot\";\n var TOK_NOT = \"Not\";\n var TOK_LBRACE = \"Lbrace\";\n var TOK_LBRACKET = \"Lbracket\";\n var TOK_LPAREN= \"Lparen\";\n var TOK_LITERAL= \"Literal\";\n\n // The \"&\", \"[\", \"<\", \">\" tokens\n // are not in basicToken because\n // there are two token variants\n // (\"&&\", \"[?\", \"<=\", \">=\"). This is specially handled\n // below.\n\n var basicTokens = {\n \".\": TOK_DOT,\n \"*\": TOK_STAR,\n \",\": TOK_COMMA,\n \":\": TOK_COLON,\n \"{\": TOK_LBRACE,\n \"}\": TOK_RBRACE,\n \"]\": TOK_RBRACKET,\n \"(\": TOK_LPAREN,\n \")\": TOK_RPAREN,\n \"@\": TOK_CURRENT\n };\n\n var operatorStartToken = {\n \"<\": true,\n \">\": true,\n \"=\": true,\n \"!\": true\n };\n\n var skipChars = {\n \" \": true,\n \"\\t\": true,\n \"\\n\": true\n };\n\n\n function isAlpha(ch) {\n return (ch >= \"a\" && ch <= \"z\") ||\n (ch >= \"A\" && ch <= \"Z\") ||\n ch === \"_\";\n }\n\n function isNum(ch) {\n return (ch >= \"0\" && ch <= \"9\") ||\n ch === \"-\";\n }\n function isAlphaNum(ch) {\n return (ch >= \"a\" && ch <= \"z\") ||\n (ch >= \"A\" && ch <= \"Z\") ||\n (ch >= \"0\" && ch <= \"9\") ||\n ch === \"_\";\n }\n\n function Lexer() {\n }\n Lexer.prototype = {\n tokenize: function(stream) {\n var tokens = [];\n this._current = 0;\n var start;\n var identifier;\n var token;\n while (this._current < stream.length) {\n if (isAlpha(stream[this._current])) {\n start = this._current;\n identifier = this._consumeUnquotedIdentifier(stream);\n tokens.push({type: TOK_UNQUOTEDIDENTIFIER,\n value: identifier,\n start: start});\n } else if (basicTokens[stream[this._current]] !== undefined) {\n tokens.push({type: basicTokens[stream[this._current]],\n value: stream[this._current],\n start: this._current});\n this._current++;\n } else if (isNum(stream[this._current])) {\n token = this._consumeNumber(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"[\") {\n // No need to increment this._current. This happens\n // in _consumeLBracket\n token = this._consumeLBracket(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"\\\"\") {\n start = this._current;\n identifier = this._consumeQuotedIdentifier(stream);\n tokens.push({type: TOK_QUOTEDIDENTIFIER,\n value: identifier,\n start: start});\n } else if (stream[this._current] === \"'\") {\n start = this._current;\n identifier = this._consumeRawStringLiteral(stream);\n tokens.push({type: TOK_LITERAL,\n value: identifier,\n start: start});\n } else if (stream[this._current] === \"`\") {\n start = this._current;\n var literal = this._consumeLiteral(stream);\n tokens.push({type: TOK_LITERAL,\n value: literal,\n start: start});\n } else if (operatorStartToken[stream[this._current]] !== undefined) {\n tokens.push(this._consumeOperator(stream));\n } else if (skipChars[stream[this._current]] !== undefined) {\n // Ignore whitespace.\n this._current++;\n } else if (stream[this._current] === \"&\") {\n start = this._current;\n this._current++;\n if (stream[this._current] === \"&\") {\n this._current++;\n tokens.push({type: TOK_AND, value: \"&&\", start: start});\n } else {\n tokens.push({type: TOK_EXPREF, value: \"&\", start: start});\n }\n } else if (stream[this._current] === \"|\") {\n start = this._current;\n this._current++;\n if (stream[this._current] === \"|\") {\n this._current++;\n tokens.push({type: TOK_OR, value: \"||\", start: start});\n } else {\n tokens.push({type: TOK_PIPE, value: \"|\", start: start});\n }\n } else {\n var error = new Error(\"Unknown character:\" + stream[this._current]);\n error.name = \"LexerError\";\n throw error;\n }\n }\n return tokens;\n },\n\n _consumeUnquotedIdentifier: function(stream) {\n var start = this._current;\n this._current++;\n while (this._current < stream.length && isAlphaNum(stream[this._current])) {\n this._current++;\n }\n return stream.slice(start, this._current);\n },\n\n _consumeQuotedIdentifier: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (stream[this._current] !== \"\\\"\" && this._current < maxLength) {\n // You can escape a double quote and you can escape an escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"\\\"\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n this._current++;\n return JSON.parse(stream.slice(start, this._current));\n },\n\n _consumeRawStringLiteral: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (stream[this._current] !== \"'\" && this._current < maxLength) {\n // You can escape a single quote and you can escape an escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"'\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n this._current++;\n var literal = stream.slice(start + 1, this._current - 1);\n return literal.replace(\"\\\\'\", \"'\");\n },\n\n _consumeNumber: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (isNum(stream[this._current]) && this._current < maxLength) {\n this._current++;\n }\n var value = parseInt(stream.slice(start, this._current));\n return {type: TOK_NUMBER, value: value, start: start};\n },\n\n _consumeLBracket: function(stream) {\n var start = this._current;\n this._current++;\n if (stream[this._current] === \"?\") {\n this._current++;\n return {type: TOK_FILTER, value: \"[?\", start: start};\n } else if (stream[this._current] === \"]\") {\n this._current++;\n return {type: TOK_FLATTEN, value: \"[]\", start: start};\n } else {\n return {type: TOK_LBRACKET, value: \"[\", start: start};\n }\n },\n\n _consumeOperator: function(stream) {\n var start = this._current;\n var startingChar = stream[start];\n this._current++;\n if (startingChar === \"!\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_NE, value: \"!=\", start: start};\n } else {\n return {type: TOK_NOT, value: \"!\", start: start};\n }\n } else if (startingChar === \"<\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_LTE, value: \"<=\", start: start};\n } else {\n return {type: TOK_LT, value: \"<\", start: start};\n }\n } else if (startingChar === \">\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_GTE, value: \">=\", start: start};\n } else {\n return {type: TOK_GT, value: \">\", start: start};\n }\n } else if (startingChar === \"=\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_EQ, value: \"==\", start: start};\n }\n }\n },\n\n _consumeLiteral: function(stream) {\n this._current++;\n var start = this._current;\n var maxLength = stream.length;\n var literal;\n while(stream[this._current] !== \"`\" && this._current < maxLength) {\n // You can escape a literal char or you can escape the escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"`\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n var literalString = trimLeft(stream.slice(start, this._current));\n literalString = literalString.replace(\"\\\\`\", \"`\");\n if (this._looksLikeJSON(literalString)) {\n literal = JSON.parse(literalString);\n } else {\n // Try to JSON parse it as \"\"\n literal = JSON.parse(\"\\\"\" + literalString + \"\\\"\");\n }\n // +1 gets us to the ending \"`\", +1 to move on to the next char.\n this._current++;\n return literal;\n },\n\n _looksLikeJSON: function(literalString) {\n var startingChars = \"[{\\\"\";\n var jsonLiterals = [\"true\", \"false\", \"null\"];\n var numberLooking = \"-0123456789\";\n\n if (literalString === \"\") {\n return false;\n } else if (startingChars.indexOf(literalString[0]) >= 0) {\n return true;\n } else if (jsonLiterals.indexOf(literalString) >= 0) {\n return true;\n } else if (numberLooking.indexOf(literalString[0]) >= 0) {\n try {\n JSON.parse(literalString);\n return true;\n } catch (ex) {\n return false;\n }\n } else {\n return false;\n }\n }\n };\n\n var bindingPower = {};\n bindingPower[TOK_EOF] = 0;\n bindingPower[TOK_UNQUOTEDIDENTIFIER] = 0;\n bindingPower[TOK_QUOTEDIDENTIFIER] = 0;\n bindingPower[TOK_RBRACKET] = 0;\n bindingPower[TOK_RPAREN] = 0;\n bindingPower[TOK_COMMA] = 0;\n bindingPower[TOK_RBRACE] = 0;\n bindingPower[TOK_NUMBER] = 0;\n bindingPower[TOK_CURRENT] = 0;\n bindingPower[TOK_EXPREF] = 0;\n bindingPower[TOK_PIPE] = 1;\n bindingPower[TOK_OR] = 2;\n bindingPower[TOK_AND] = 3;\n bindingPower[TOK_EQ] = 5;\n bindingPower[TOK_GT] = 5;\n bindingPower[TOK_LT] = 5;\n bindingPower[TOK_GTE] = 5;\n bindingPower[TOK_LTE] = 5;\n bindingPower[TOK_NE] = 5;\n bindingPower[TOK_FLATTEN] = 9;\n bindingPower[TOK_STAR] = 20;\n bindingPower[TOK_FILTER] = 21;\n bindingPower[TOK_DOT] = 40;\n bindingPower[TOK_NOT] = 45;\n bindingPower[TOK_LBRACE] = 50;\n bindingPower[TOK_LBRACKET] = 55;\n bindingPower[TOK_LPAREN] = 60;\n\n function Parser() {\n }\n\n Parser.prototype = {\n parse: function(expression) {\n this._loadTokens(expression);\n this.index = 0;\n var ast = this.expression(0);\n if (this._lookahead(0) !== TOK_EOF) {\n var t = this._lookaheadToken(0);\n var error = new Error(\n \"Unexpected token type: \" + t.type + \", value: \" + t.value);\n error.name = \"ParserError\";\n throw error;\n }\n return ast;\n },\n\n _loadTokens: function(expression) {\n var lexer = new Lexer();\n var tokens = lexer.tokenize(expression);\n tokens.push({type: TOK_EOF, value: \"\", start: expression.length});\n this.tokens = tokens;\n },\n\n expression: function(rbp) {\n var leftToken = this._lookaheadToken(0);\n this._advance();\n var left = this.nud(leftToken);\n var currentToken = this._lookahead(0);\n while (rbp < bindingPower[currentToken]) {\n this._advance();\n left = this.led(currentToken, left);\n currentToken = this._lookahead(0);\n }\n return left;\n },\n\n _lookahead: function(number) {\n return this.tokens[this.index + number].type;\n },\n\n _lookaheadToken: function(number) {\n return this.tokens[this.index + number];\n },\n\n _advance: function() {\n this.index++;\n },\n\n nud: function(token) {\n var left;\n var right;\n var expression;\n switch (token.type) {\n case TOK_LITERAL:\n return {type: \"Literal\", value: token.value};\n case TOK_UNQUOTEDIDENTIFIER:\n return {type: \"Field\", name: token.value};\n case TOK_QUOTEDIDENTIFIER:\n var node = {type: \"Field\", name: token.value};\n if (this._lookahead(0) === TOK_LPAREN) {\n throw new Error(\"Quoted identifier not allowed for function names.\");\n }\n return node;\n case TOK_NOT:\n right = this.expression(bindingPower.Not);\n return {type: \"NotExpression\", children: [right]};\n case TOK_STAR:\n left = {type: \"Identity\"};\n right = null;\n if (this._lookahead(0) === TOK_RBRACKET) {\n // This can happen in a multiselect,\n // [a, b, *]\n right = {type: \"Identity\"};\n } else {\n right = this._parseProjectionRHS(bindingPower.Star);\n }\n return {type: \"ValueProjection\", children: [left, right]};\n case TOK_FILTER:\n return this.led(token.type, {type: \"Identity\"});\n case TOK_LBRACE:\n return this._parseMultiselectHash();\n case TOK_FLATTEN:\n left = {type: TOK_FLATTEN, children: [{type: \"Identity\"}]};\n right = this._parseProjectionRHS(bindingPower.Flatten);\n return {type: \"Projection\", children: [left, right]};\n case TOK_LBRACKET:\n if (this._lookahead(0) === TOK_NUMBER || this._lookahead(0) === TOK_COLON) {\n right = this._parseIndexExpression();\n return this._projectIfSlice({type: \"Identity\"}, right);\n } else if (this._lookahead(0) === TOK_STAR &&\n this._lookahead(1) === TOK_RBRACKET) {\n this._advance();\n this._advance();\n right = this._parseProjectionRHS(bindingPower.Star);\n return {type: \"Projection\",\n children: [{type: \"Identity\"}, right]};\n }\n return this._parseMultiselectList();\n case TOK_CURRENT:\n return {type: TOK_CURRENT};\n case TOK_EXPREF:\n expression = this.expression(bindingPower.Expref);\n return {type: \"ExpressionReference\", children: [expression]};\n case TOK_LPAREN:\n var args = [];\n while (this._lookahead(0) !== TOK_RPAREN) {\n if (this._lookahead(0) === TOK_CURRENT) {\n expression = {type: TOK_CURRENT};\n this._advance();\n } else {\n expression = this.expression(0);\n }\n args.push(expression);\n }\n this._match(TOK_RPAREN);\n return args[0];\n default:\n this._errorToken(token);\n }\n },\n\n led: function(tokenName, left) {\n var right;\n switch(tokenName) {\n case TOK_DOT:\n var rbp = bindingPower.Dot;\n if (this._lookahead(0) !== TOK_STAR) {\n right = this._parseDotRHS(rbp);\n return {type: \"Subexpression\", children: [left, right]};\n }\n // Creating a projection.\n this._advance();\n right = this._parseProjectionRHS(rbp);\n return {type: \"ValueProjection\", children: [left, right]};\n case TOK_PIPE:\n right = this.expression(bindingPower.Pipe);\n return {type: TOK_PIPE, children: [left, right]};\n case TOK_OR:\n right = this.expression(bindingPower.Or);\n return {type: \"OrExpression\", children: [left, right]};\n case TOK_AND:\n right = this.expression(bindingPower.And);\n return {type: \"AndExpression\", children: [left, right]};\n case TOK_LPAREN:\n var name = left.name;\n var args = [];\n var expression, node;\n while (this._lookahead(0) !== TOK_RPAREN) {\n if (this._lookahead(0) === TOK_CURRENT) {\n expression = {type: TOK_CURRENT};\n this._advance();\n } else {\n expression = this.expression(0);\n }\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n }\n args.push(expression);\n }\n this._match(TOK_RPAREN);\n node = {type: \"Function\", name: name, children: args};\n return node;\n case TOK_FILTER:\n var condition = this.expression(0);\n this._match(TOK_RBRACKET);\n if (this._lookahead(0) === TOK_FLATTEN) {\n right = {type: \"Identity\"};\n } else {\n right = this._parseProjectionRHS(bindingPower.Filter);\n }\n return {type: \"FilterProjection\", children: [left, right, condition]};\n case TOK_FLATTEN:\n var leftNode = {type: TOK_FLATTEN, children: [left]};\n var rightNode = this._parseProjectionRHS(bindingPower.Flatten);\n return {type: \"Projection\", children: [leftNode, rightNode]};\n case TOK_EQ:\n case TOK_NE:\n case TOK_GT:\n case TOK_GTE:\n case TOK_LT:\n case TOK_LTE:\n return this._parseComparator(left, tokenName);\n case TOK_LBRACKET:\n var token = this._lookaheadToken(0);\n if (token.type === TOK_NUMBER || token.type === TOK_COLON) {\n right = this._parseIndexExpression();\n return this._projectIfSlice(left, right);\n }\n this._match(TOK_STAR);\n this._match(TOK_RBRACKET);\n right = this._parseProjectionRHS(bindingPower.Star);\n return {type: \"Projection\", children: [left, right]};\n default:\n this._errorToken(this._lookaheadToken(0));\n }\n },\n\n _match: function(tokenType) {\n if (this._lookahead(0) === tokenType) {\n this._advance();\n } else {\n var t = this._lookaheadToken(0);\n var error = new Error(\"Expected \" + tokenType + \", got: \" + t.type);\n error.name = \"ParserError\";\n throw error;\n }\n },\n\n _errorToken: function(token) {\n var error = new Error(\"Invalid token (\" +\n token.type + \"): \\\"\" +\n token.value + \"\\\"\");\n error.name = \"ParserError\";\n throw error;\n },\n\n\n _parseIndexExpression: function() {\n if (this._lookahead(0) === TOK_COLON || this._lookahead(1) === TOK_COLON) {\n return this._parseSliceExpression();\n } else {\n var node = {\n type: \"Index\",\n value: this._lookaheadToken(0).value};\n this._advance();\n this._match(TOK_RBRACKET);\n return node;\n }\n },\n\n _projectIfSlice: function(left, right) {\n var indexExpr = {type: \"IndexExpression\", children: [left, right]};\n if (right.type === \"Slice\") {\n return {\n type: \"Projection\",\n children: [indexExpr, this._parseProjectionRHS(bindingPower.Star)]\n };\n } else {\n return indexExpr;\n }\n },\n\n _parseSliceExpression: function() {\n // [start:end:step] where each part is optional, as well as the last\n // colon.\n var parts = [null, null, null];\n var index = 0;\n var currentToken = this._lookahead(0);\n while (currentToken !== TOK_RBRACKET && index < 3) {\n if (currentToken === TOK_COLON) {\n index++;\n this._advance();\n } else if (currentToken === TOK_NUMBER) {\n parts[index] = this._lookaheadToken(0).value;\n this._advance();\n } else {\n var t = this._lookahead(0);\n var error = new Error(\"Syntax error, unexpected token: \" +\n t.value + \"(\" + t.type + \")\");\n error.name = \"Parsererror\";\n throw error;\n }\n currentToken = this._lookahead(0);\n }\n this._match(TOK_RBRACKET);\n return {\n type: \"Slice\",\n children: parts\n };\n },\n\n _parseComparator: function(left, comparator) {\n var right = this.expression(bindingPower[comparator]);\n return {type: \"Comparator\", name: comparator, children: [left, right]};\n },\n\n _parseDotRHS: function(rbp) {\n var lookahead = this._lookahead(0);\n var exprTokens = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER, TOK_STAR];\n if (exprTokens.indexOf(lookahead) >= 0) {\n return this.expression(rbp);\n } else if (lookahead === TOK_LBRACKET) {\n this._match(TOK_LBRACKET);\n return this._parseMultiselectList();\n } else if (lookahead === TOK_LBRACE) {\n this._match(TOK_LBRACE);\n return this._parseMultiselectHash();\n }\n },\n\n _parseProjectionRHS: function(rbp) {\n var right;\n if (bindingPower[this._lookahead(0)] < 10) {\n right = {type: \"Identity\"};\n } else if (this._lookahead(0) === TOK_LBRACKET) {\n right = this.expression(rbp);\n } else if (this._lookahead(0) === TOK_FILTER) {\n right = this.expression(rbp);\n } else if (this._lookahead(0) === TOK_DOT) {\n this._match(TOK_DOT);\n right = this._parseDotRHS(rbp);\n } else {\n var t = this._lookaheadToken(0);\n var error = new Error(\"Sytanx error, unexpected token: \" +\n t.value + \"(\" + t.type + \")\");\n error.name = \"ParserError\";\n throw error;\n }\n return right;\n },\n\n _parseMultiselectList: function() {\n var expressions = [];\n while (this._lookahead(0) !== TOK_RBRACKET) {\n var expression = this.expression(0);\n expressions.push(expression);\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n if (this._lookahead(0) === TOK_RBRACKET) {\n throw new Error(\"Unexpected token Rbracket\");\n }\n }\n }\n this._match(TOK_RBRACKET);\n return {type: \"MultiSelectList\", children: expressions};\n },\n\n _parseMultiselectHash: function() {\n var pairs = [];\n var identifierTypes = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER];\n var keyToken, keyName, value, node;\n for (;;) {\n keyToken = this._lookaheadToken(0);\n if (identifierTypes.indexOf(keyToken.type) < 0) {\n throw new Error(\"Expecting an identifier token, got: \" +\n keyToken.type);\n }\n keyName = keyToken.value;\n this._advance();\n this._match(TOK_COLON);\n value = this.expression(0);\n node = {type: \"KeyValuePair\", name: keyName, value: value};\n pairs.push(node);\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n } else if (this._lookahead(0) === TOK_RBRACE) {\n this._match(TOK_RBRACE);\n break;\n }\n }\n return {type: \"MultiSelectHash\", children: pairs};\n }\n };\n\n\n function TreeInterpreter(runtime) {\n this.runtime = runtime;\n }\n\n TreeInterpreter.prototype = {\n search: function(node, value) {\n return this.visit(node, value);\n },\n\n visit: function(node, value) {\n var matched, current, result, first, second, field, left, right, collected, i;\n switch (node.type) {\n case \"Field\":\n if (value !== null && isObject(value)) {\n field = value[node.name];\n if (field === undefined) {\n return null;\n } else {\n return field;\n }\n }\n return null;\n case \"Subexpression\":\n result = this.visit(node.children[0], value);\n for (i = 1; i < node.children.length; i++) {\n result = this.visit(node.children[1], result);\n if (result === null) {\n return null;\n }\n }\n return result;\n case \"IndexExpression\":\n left = this.visit(node.children[0], value);\n right = this.visit(node.children[1], left);\n return right;\n case \"Index\":\n if (!isArray(value)) {\n return null;\n }\n var index = node.value;\n if (index < 0) {\n index = value.length + index;\n }\n result = value[index];\n if (result === undefined) {\n result = null;\n }\n return result;\n case \"Slice\":\n if (!isArray(value)) {\n return null;\n }\n var sliceParams = node.children.slice(0);\n var computed = this.computeSliceParams(value.length, sliceParams);\n var start = computed[0];\n var stop = computed[1];\n var step = computed[2];\n result = [];\n if (step > 0) {\n for (i = start; i < stop; i += step) {\n result.push(value[i]);\n }\n } else {\n for (i = start; i > stop; i += step) {\n result.push(value[i]);\n }\n }\n return result;\n case \"Projection\":\n // Evaluate left child.\n var base = this.visit(node.children[0], value);\n if (!isArray(base)) {\n return null;\n }\n collected = [];\n for (i = 0; i < base.length; i++) {\n current = this.visit(node.children[1], base[i]);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n case \"ValueProjection\":\n // Evaluate left child.\n base = this.visit(node.children[0], value);\n if (!isObject(base)) {\n return null;\n }\n collected = [];\n var values = objValues(base);\n for (i = 0; i < values.length; i++) {\n current = this.visit(node.children[1], values[i]);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n case \"FilterProjection\":\n base = this.visit(node.children[0], value);\n if (!isArray(base)) {\n return null;\n }\n var filtered = [];\n var finalResults = [];\n for (i = 0; i < base.length; i++) {\n matched = this.visit(node.children[2], base[i]);\n if (!isFalse(matched)) {\n filtered.push(base[i]);\n }\n }\n for (var j = 0; j < filtered.length; j++) {\n current = this.visit(node.children[1], filtered[j]);\n if (current !== null) {\n finalResults.push(current);\n }\n }\n return finalResults;\n case \"Comparator\":\n first = this.visit(node.children[0], value);\n second = this.visit(node.children[1], value);\n switch(node.name) {\n case TOK_EQ:\n result = strictDeepEqual(first, second);\n break;\n case TOK_NE:\n result = !strictDeepEqual(first, second);\n break;\n case TOK_GT:\n result = first > second;\n break;\n case TOK_GTE:\n result = first >= second;\n break;\n case TOK_LT:\n result = first < second;\n break;\n case TOK_LTE:\n result = first <= second;\n break;\n default:\n throw new Error(\"Unknown comparator: \" + node.name);\n }\n return result;\n case TOK_FLATTEN:\n var original = this.visit(node.children[0], value);\n if (!isArray(original)) {\n return null;\n }\n var merged = [];\n for (i = 0; i < original.length; i++) {\n current = original[i];\n if (isArray(current)) {\n merged.push.apply(merged, current);\n } else {\n merged.push(current);\n }\n }\n return merged;\n case \"Identity\":\n return value;\n case \"MultiSelectList\":\n if (value === null) {\n return null;\n }\n collected = [];\n for (i = 0; i < node.children.length; i++) {\n collected.push(this.visit(node.children[i], value));\n }\n return collected;\n case \"MultiSelectHash\":\n if (value === null) {\n return null;\n }\n collected = {};\n var child;\n for (i = 0; i < node.children.length; i++) {\n child = node.children[i];\n collected[child.name] = this.visit(child.value, value);\n }\n return collected;\n case \"OrExpression\":\n matched = this.visit(node.children[0], value);\n if (isFalse(matched)) {\n matched = this.visit(node.children[1], value);\n }\n return matched;\n case \"AndExpression\":\n first = this.visit(node.children[0], value);\n\n if (isFalse(first) === true) {\n return first;\n }\n return this.visit(node.children[1], value);\n case \"NotExpression\":\n first = this.visit(node.children[0], value);\n return isFalse(first);\n case \"Literal\":\n return node.value;\n case TOK_PIPE:\n left = this.visit(node.children[0], value);\n return this.visit(node.children[1], left);\n case TOK_CURRENT:\n return value;\n case \"Function\":\n var resolvedArgs = [];\n for (i = 0; i < node.children.length; i++) {\n resolvedArgs.push(this.visit(node.children[i], value));\n }\n return this.runtime.callFunction(node.name, resolvedArgs);\n case \"ExpressionReference\":\n var refNode = node.children[0];\n // Tag the node with a specific attribute so the type\n // checker verify the type.\n refNode.jmespathType = TOK_EXPREF;\n return refNode;\n default:\n throw new Error(\"Unknown node type: \" + node.type);\n }\n },\n\n computeSliceParams: function(arrayLength, sliceParams) {\n var start = sliceParams[0];\n var stop = sliceParams[1];\n var step = sliceParams[2];\n var computed = [null, null, null];\n if (step === null) {\n step = 1;\n } else if (step === 0) {\n var error = new Error(\"Invalid slice, step cannot be 0\");\n error.name = \"RuntimeError\";\n throw error;\n }\n var stepValueNegative = step < 0 ? true : false;\n\n if (start === null) {\n start = stepValueNegative ? arrayLength - 1 : 0;\n } else {\n start = this.capSliceRange(arrayLength, start, step);\n }\n\n if (stop === null) {\n stop = stepValueNegative ? -1 : arrayLength;\n } else {\n stop = this.capSliceRange(arrayLength, stop, step);\n }\n computed[0] = start;\n computed[1] = stop;\n computed[2] = step;\n return computed;\n },\n\n capSliceRange: function(arrayLength, actualValue, step) {\n if (actualValue < 0) {\n actualValue += arrayLength;\n if (actualValue < 0) {\n actualValue = step < 0 ? -1 : 0;\n }\n } else if (actualValue >= arrayLength) {\n actualValue = step < 0 ? arrayLength - 1 : arrayLength;\n }\n return actualValue;\n }\n\n };\n\n function Runtime(interpreter) {\n this._interpreter = interpreter;\n this.functionTable = {\n // name: [function, ]\n // The can be:\n //\n // {\n // args: [[type1, type2], [type1, type2]],\n // variadic: true|false\n // }\n //\n // Each arg in the arg list is a list of valid types\n // (if the function is overloaded and supports multiple\n // types. If the type is \"any\" then no type checking\n // occurs on the argument. Variadic is optional\n // and if not provided is assumed to be false.\n abs: {_func: this._functionAbs, _signature: [{types: [TYPE_NUMBER]}]},\n avg: {_func: this._functionAvg, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},\n ceil: {_func: this._functionCeil, _signature: [{types: [TYPE_NUMBER]}]},\n contains: {\n _func: this._functionContains,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY]},\n {types: [TYPE_ANY]}]},\n \"ends_with\": {\n _func: this._functionEndsWith,\n _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},\n floor: {_func: this._functionFloor, _signature: [{types: [TYPE_NUMBER]}]},\n length: {\n _func: this._functionLength,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY, TYPE_OBJECT]}]},\n map: {\n _func: this._functionMap,\n _signature: [{types: [TYPE_EXPREF]}, {types: [TYPE_ARRAY]}]},\n max: {\n _func: this._functionMax,\n _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},\n \"merge\": {\n _func: this._functionMerge,\n _signature: [{types: [TYPE_OBJECT], variadic: true}]\n },\n \"max_by\": {\n _func: this._functionMaxBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n sum: {_func: this._functionSum, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},\n \"starts_with\": {\n _func: this._functionStartsWith,\n _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},\n min: {\n _func: this._functionMin,\n _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},\n \"min_by\": {\n _func: this._functionMinBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n type: {_func: this._functionType, _signature: [{types: [TYPE_ANY]}]},\n keys: {_func: this._functionKeys, _signature: [{types: [TYPE_OBJECT]}]},\n values: {_func: this._functionValues, _signature: [{types: [TYPE_OBJECT]}]},\n sort: {_func: this._functionSort, _signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]},\n \"sort_by\": {\n _func: this._functionSortBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n join: {\n _func: this._functionJoin,\n _signature: [\n {types: [TYPE_STRING]},\n {types: [TYPE_ARRAY_STRING]}\n ]\n },\n reverse: {\n _func: this._functionReverse,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}]},\n \"to_array\": {_func: this._functionToArray, _signature: [{types: [TYPE_ANY]}]},\n \"to_string\": {_func: this._functionToString, _signature: [{types: [TYPE_ANY]}]},\n \"to_number\": {_func: this._functionToNumber, _signature: [{types: [TYPE_ANY]}]},\n \"not_null\": {\n _func: this._functionNotNull,\n _signature: [{types: [TYPE_ANY], variadic: true}]\n }\n };\n }\n\n Runtime.prototype = {\n callFunction: function(name, resolvedArgs) {\n var functionEntry = this.functionTable[name];\n if (functionEntry === undefined) {\n throw new Error(\"Unknown function: \" + name + \"()\");\n }\n this._validateArgs(name, resolvedArgs, functionEntry._signature);\n return functionEntry._func.call(this, resolvedArgs);\n },\n\n _validateArgs: function(name, args, signature) {\n // Validating the args requires validating\n // the correct arity and the correct type of each arg.\n // If the last argument is declared as variadic, then we need\n // a minimum number of args to be required. Otherwise it has to\n // be an exact amount.\n var pluralized;\n if (signature[signature.length - 1].variadic) {\n if (args.length < signature.length) {\n pluralized = signature.length === 1 ? \" argument\" : \" arguments\";\n throw new Error(\"ArgumentError: \" + name + \"() \" +\n \"takes at least\" + signature.length + pluralized +\n \" but received \" + args.length);\n }\n } else if (args.length !== signature.length) {\n pluralized = signature.length === 1 ? \" argument\" : \" arguments\";\n throw new Error(\"ArgumentError: \" + name + \"() \" +\n \"takes \" + signature.length + pluralized +\n \" but received \" + args.length);\n }\n var currentSpec;\n var actualType;\n var typeMatched;\n for (var i = 0; i < signature.length; i++) {\n typeMatched = false;\n currentSpec = signature[i].types;\n actualType = this._getTypeName(args[i]);\n for (var j = 0; j < currentSpec.length; j++) {\n if (this._typeMatches(actualType, currentSpec[j], args[i])) {\n typeMatched = true;\n break;\n }\n }\n if (!typeMatched) {\n var expected = currentSpec\n .map(function(typeIdentifier) {\n return TYPE_NAME_TABLE[typeIdentifier];\n })\n .join(',');\n throw new Error(\"TypeError: \" + name + \"() \" +\n \"expected argument \" + (i + 1) +\n \" to be type \" + expected +\n \" but received type \" +\n TYPE_NAME_TABLE[actualType] + \" instead.\");\n }\n }\n },\n\n _typeMatches: function(actual, expected, argValue) {\n if (expected === TYPE_ANY) {\n return true;\n }\n if (expected === TYPE_ARRAY_STRING ||\n expected === TYPE_ARRAY_NUMBER ||\n expected === TYPE_ARRAY) {\n // The expected type can either just be array,\n // or it can require a specific subtype (array of numbers).\n //\n // The simplest case is if \"array\" with no subtype is specified.\n if (expected === TYPE_ARRAY) {\n return actual === TYPE_ARRAY;\n } else if (actual === TYPE_ARRAY) {\n // Otherwise we need to check subtypes.\n // I think this has potential to be improved.\n var subtype;\n if (expected === TYPE_ARRAY_NUMBER) {\n subtype = TYPE_NUMBER;\n } else if (expected === TYPE_ARRAY_STRING) {\n subtype = TYPE_STRING;\n }\n for (var i = 0; i < argValue.length; i++) {\n if (!this._typeMatches(\n this._getTypeName(argValue[i]), subtype,\n argValue[i])) {\n return false;\n }\n }\n return true;\n }\n } else {\n return actual === expected;\n }\n },\n _getTypeName: function(obj) {\n switch (Object.prototype.toString.call(obj)) {\n case \"[object String]\":\n return TYPE_STRING;\n case \"[object Number]\":\n return TYPE_NUMBER;\n case \"[object Array]\":\n return TYPE_ARRAY;\n case \"[object Boolean]\":\n return TYPE_BOOLEAN;\n case \"[object Null]\":\n return TYPE_NULL;\n case \"[object Object]\":\n // Check if it's an expref. If it has, it's been\n // tagged with a jmespathType attr of 'Expref';\n if (obj.jmespathType === TOK_EXPREF) {\n return TYPE_EXPREF;\n } else {\n return TYPE_OBJECT;\n }\n }\n },\n\n _functionStartsWith: function(resolvedArgs) {\n return resolvedArgs[0].lastIndexOf(resolvedArgs[1]) === 0;\n },\n\n _functionEndsWith: function(resolvedArgs) {\n var searchStr = resolvedArgs[0];\n var suffix = resolvedArgs[1];\n return searchStr.indexOf(suffix, searchStr.length - suffix.length) !== -1;\n },\n\n _functionReverse: function(resolvedArgs) {\n var typeName = this._getTypeName(resolvedArgs[0]);\n if (typeName === TYPE_STRING) {\n var originalStr = resolvedArgs[0];\n var reversedStr = \"\";\n for (var i = originalStr.length - 1; i >= 0; i--) {\n reversedStr += originalStr[i];\n }\n return reversedStr;\n } else {\n var reversedArray = resolvedArgs[0].slice(0);\n reversedArray.reverse();\n return reversedArray;\n }\n },\n\n _functionAbs: function(resolvedArgs) {\n return Math.abs(resolvedArgs[0]);\n },\n\n _functionCeil: function(resolvedArgs) {\n return Math.ceil(resolvedArgs[0]);\n },\n\n _functionAvg: function(resolvedArgs) {\n var sum = 0;\n var inputArray = resolvedArgs[0];\n for (var i = 0; i < inputArray.length; i++) {\n sum += inputArray[i];\n }\n return sum / inputArray.length;\n },\n\n _functionContains: function(resolvedArgs) {\n return resolvedArgs[0].indexOf(resolvedArgs[1]) >= 0;\n },\n\n _functionFloor: function(resolvedArgs) {\n return Math.floor(resolvedArgs[0]);\n },\n\n _functionLength: function(resolvedArgs) {\n if (!isObject(resolvedArgs[0])) {\n return resolvedArgs[0].length;\n } else {\n // As far as I can tell, there's no way to get the length\n // of an object without O(n) iteration through the object.\n return Object.keys(resolvedArgs[0]).length;\n }\n },\n\n _functionMap: function(resolvedArgs) {\n var mapped = [];\n var interpreter = this._interpreter;\n var exprefNode = resolvedArgs[0];\n var elements = resolvedArgs[1];\n for (var i = 0; i < elements.length; i++) {\n mapped.push(interpreter.visit(exprefNode, elements[i]));\n }\n return mapped;\n },\n\n _functionMerge: function(resolvedArgs) {\n var merged = {};\n for (var i = 0; i < resolvedArgs.length; i++) {\n var current = resolvedArgs[i];\n for (var key in current) {\n merged[key] = current[key];\n }\n }\n return merged;\n },\n\n _functionMax: function(resolvedArgs) {\n if (resolvedArgs[0].length > 0) {\n var typeName = this._getTypeName(resolvedArgs[0][0]);\n if (typeName === TYPE_NUMBER) {\n return Math.max.apply(Math, resolvedArgs[0]);\n } else {\n var elements = resolvedArgs[0];\n var maxElement = elements[0];\n for (var i = 1; i < elements.length; i++) {\n if (maxElement.localeCompare(elements[i]) < 0) {\n maxElement = elements[i];\n }\n }\n return maxElement;\n }\n } else {\n return null;\n }\n },\n\n _functionMin: function(resolvedArgs) {\n if (resolvedArgs[0].length > 0) {\n var typeName = this._getTypeName(resolvedArgs[0][0]);\n if (typeName === TYPE_NUMBER) {\n return Math.min.apply(Math, resolvedArgs[0]);\n } else {\n var elements = resolvedArgs[0];\n var minElement = elements[0];\n for (var i = 1; i < elements.length; i++) {\n if (elements[i].localeCompare(minElement) < 0) {\n minElement = elements[i];\n }\n }\n return minElement;\n }\n } else {\n return null;\n }\n },\n\n _functionSum: function(resolvedArgs) {\n var sum = 0;\n var listToSum = resolvedArgs[0];\n for (var i = 0; i < listToSum.length; i++) {\n sum += listToSum[i];\n }\n return sum;\n },\n\n _functionType: function(resolvedArgs) {\n switch (this._getTypeName(resolvedArgs[0])) {\n case TYPE_NUMBER:\n return \"number\";\n case TYPE_STRING:\n return \"string\";\n case TYPE_ARRAY:\n return \"array\";\n case TYPE_OBJECT:\n return \"object\";\n case TYPE_BOOLEAN:\n return \"boolean\";\n case TYPE_EXPREF:\n return \"expref\";\n case TYPE_NULL:\n return \"null\";\n }\n },\n\n _functionKeys: function(resolvedArgs) {\n return Object.keys(resolvedArgs[0]);\n },\n\n _functionValues: function(resolvedArgs) {\n var obj = resolvedArgs[0];\n var keys = Object.keys(obj);\n var values = [];\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n },\n\n _functionJoin: function(resolvedArgs) {\n var joinChar = resolvedArgs[0];\n var listJoin = resolvedArgs[1];\n return listJoin.join(joinChar);\n },\n\n _functionToArray: function(resolvedArgs) {\n if (this._getTypeName(resolvedArgs[0]) === TYPE_ARRAY) {\n return resolvedArgs[0];\n } else {\n return [resolvedArgs[0]];\n }\n },\n\n _functionToString: function(resolvedArgs) {\n if (this._getTypeName(resolvedArgs[0]) === TYPE_STRING) {\n return resolvedArgs[0];\n } else {\n return JSON.stringify(resolvedArgs[0]);\n }\n },\n\n _functionToNumber: function(resolvedArgs) {\n var typeName = this._getTypeName(resolvedArgs[0]);\n var convertedValue;\n if (typeName === TYPE_NUMBER) {\n return resolvedArgs[0];\n } else if (typeName === TYPE_STRING) {\n convertedValue = +resolvedArgs[0];\n if (!isNaN(convertedValue)) {\n return convertedValue;\n }\n }\n return null;\n },\n\n _functionNotNull: function(resolvedArgs) {\n for (var i = 0; i < resolvedArgs.length; i++) {\n if (this._getTypeName(resolvedArgs[i]) !== TYPE_NULL) {\n return resolvedArgs[i];\n }\n }\n return null;\n },\n\n _functionSort: function(resolvedArgs) {\n var sortedArray = resolvedArgs[0].slice(0);\n sortedArray.sort();\n return sortedArray;\n },\n\n _functionSortBy: function(resolvedArgs) {\n var sortedArray = resolvedArgs[0].slice(0);\n if (sortedArray.length === 0) {\n return sortedArray;\n }\n var interpreter = this._interpreter;\n var exprefNode = resolvedArgs[1];\n var requiredType = this._getTypeName(\n interpreter.visit(exprefNode, sortedArray[0]));\n if ([TYPE_NUMBER, TYPE_STRING].indexOf(requiredType) < 0) {\n throw new Error(\"TypeError\");\n }\n var that = this;\n // In order to get a stable sort out of an unstable\n // sort algorithm, we decorate/sort/undecorate (DSU)\n // by creating a new list of [index, element] pairs.\n // In the cmp function, if the evaluated elements are\n // equal, then the index will be used as the tiebreaker.\n // After the decorated list has been sorted, it will be\n // undecorated to extract the original elements.\n var decorated = [];\n for (var i = 0; i < sortedArray.length; i++) {\n decorated.push([i, sortedArray[i]]);\n }\n decorated.sort(function(a, b) {\n var exprA = interpreter.visit(exprefNode, a[1]);\n var exprB = interpreter.visit(exprefNode, b[1]);\n if (that._getTypeName(exprA) !== requiredType) {\n throw new Error(\n \"TypeError: expected \" + requiredType + \", received \" +\n that._getTypeName(exprA));\n } else if (that._getTypeName(exprB) !== requiredType) {\n throw new Error(\n \"TypeError: expected \" + requiredType + \", received \" +\n that._getTypeName(exprB));\n }\n if (exprA > exprB) {\n return 1;\n } else if (exprA < exprB) {\n return -1;\n } else {\n // If they're equal compare the items by their\n // order to maintain relative order of equal keys\n // (i.e. to get a stable sort).\n return a[0] - b[0];\n }\n });\n // Undecorate: extract out the original list elements.\n for (var j = 0; j < decorated.length; j++) {\n sortedArray[j] = decorated[j][1];\n }\n return sortedArray;\n },\n\n _functionMaxBy: function(resolvedArgs) {\n var exprefNode = resolvedArgs[1];\n var resolvedArray = resolvedArgs[0];\n var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);\n var maxNumber = -Infinity;\n var maxRecord;\n var current;\n for (var i = 0; i < resolvedArray.length; i++) {\n current = keyFunction(resolvedArray[i]);\n if (current > maxNumber) {\n maxNumber = current;\n maxRecord = resolvedArray[i];\n }\n }\n return maxRecord;\n },\n\n _functionMinBy: function(resolvedArgs) {\n var exprefNode = resolvedArgs[1];\n var resolvedArray = resolvedArgs[0];\n var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);\n var minNumber = Infinity;\n var minRecord;\n var current;\n for (var i = 0; i < resolvedArray.length; i++) {\n current = keyFunction(resolvedArray[i]);\n if (current < minNumber) {\n minNumber = current;\n minRecord = resolvedArray[i];\n }\n }\n return minRecord;\n },\n\n createKeyFunction: function(exprefNode, allowedTypes) {\n var that = this;\n var interpreter = this._interpreter;\n var keyFunc = function(x) {\n var current = interpreter.visit(exprefNode, x);\n if (allowedTypes.indexOf(that._getTypeName(current)) < 0) {\n var msg = \"TypeError: expected one of \" + allowedTypes +\n \", received \" + that._getTypeName(current);\n throw new Error(msg);\n }\n return current;\n };\n return keyFunc;\n }\n\n };\n\n function compile(stream) {\n var parser = new Parser();\n var ast = parser.parse(stream);\n return ast;\n }\n\n function tokenize(stream) {\n var lexer = new Lexer();\n return lexer.tokenize(stream);\n }\n\n function search(data, expression) {\n var parser = new Parser();\n // This needs to be improved. Both the interpreter and runtime depend on\n // each other. The runtime needs the interpreter to support exprefs.\n // There's likely a clean way to avoid the cyclic dependency.\n var runtime = new Runtime();\n var interpreter = new TreeInterpreter(runtime);\n runtime._interpreter = interpreter;\n var node = parser.parse(expression);\n return interpreter.search(node, data);\n }\n\n exports.tokenize = tokenize;\n exports.compile = compile;\n exports.search = search;\n exports.strictDeepEqual = strictDeepEqual;\n})(typeof exports === \"undefined\" ? this.jmespath = {} : exports);\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar punycode = require('punycode');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a puny coded representation of \"domain\".\n // It only converts the part of the domain name that\n // has non ASCII characters. I.e. it dosent matter if\n // you call it with a domain that already is in ASCII.\n var domainArray = this.hostname.split('.');\n var newOut = [];\n for (var i = 0; i < domainArray.length; ++i) {\n var s = domainArray[i];\n newOut.push(s.match(/[^A-Za-z0-9_-]/) ?\n 'xn--' + punycode.encode(s) : s);\n }\n this.hostname = newOut.join('.');\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n Object.keys(this).forEach(function(k) {\n result[k] = this[k];\n }, this);\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n Object.keys(relative).forEach(function(k) {\n if (k !== 'protocol')\n result[k] = relative[k];\n });\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n Object.keys(relative).forEach(function(k) {\n result[k] = relative[k];\n });\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host) && (last === '.' || last === '..') ||\n last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last == '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n\nfunction isString(arg) {\n return typeof arg === \"string\";\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isNull(arg) {\n return arg === null;\n}\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n","/**\n * @license React\n * use-sync-external-store-with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var g=require(\"react\");function n(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var p=\"function\"===typeof Object.is?Object.is:n,q=g.useSyncExternalStore,r=g.useRef,t=g.useEffect,u=g.useMemo,v=g.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,h){var c=r(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=u(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==h&&f.hasValue){var b=f.value;if(h(b,a))return k=b}return k=a}b=k;if(p(d,a))return b;var e=l(a);if(void 0!==h&&h(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,h]);var d=q(a,c[0],c[1]);\nt(function(){f.hasValue=!0;f.value=d},[d]);v(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/use-sync-external-store-with-selector.production.min.js');\n} else {\n module.exports = require('./cjs/use-sync-external-store-with-selector.development.js');\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\n/** @type {(O: object) => string} */\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\n\n/** @type {(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {(receiver: import('.').TypedArray) => string | typeof Uint8Array.prototype.slice.call | typeof Uint8Array.prototype.set.call} Getter */\n/** @type {{ [k in `\\$${import('.').TypedArrayName}`]?: Getter } & { __proto__: null }} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(fn);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = $slice(typedArray, 1);\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: typeof cache, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = $slice(name, 1);\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: any;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. May be either a URL or the pieces of a\n * URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { warning, invariant, parsePath } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on
,\n * useSubmit(), , etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\";\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport interface Submission {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n}\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: any;\n}\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n formData?: Submission[\"formData\"];\n actionResult?: DataResult;\n defaultShouldRevalidate: boolean;\n }): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n detectErrorBoundary: DetectErrorBoundaryFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n hasErrorBoundary: detectErrorBoundary(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n id,\n hasErrorBoundary: detectErrorBoundary(route),\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n detectErrorBoundary,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explodes _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n const starParam = params[star];\n\n // Apply the splat\n return starParam;\n }\n\n const keyMatch = segment.match(/^:(\\w+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n\n if (optional === \"?\") {\n return param == null ? \"\" : param;\n }\n\n if (param == null) {\n invariant(false, `Missing \":${key}\" param`);\n }\n\n return param;\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"/([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, null, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n if (error) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n error?: Error;\n internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n DataResult,\n DeferredData,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DeferredResult,\n ErrorResult,\n FormEncType,\n FormMethod,\n DetectErrorBoundaryFunction,\n RedirectResult,\n RouteData,\n AgnosticRouteObject,\n Submission,\n SuccessResult,\n AgnosticRouteMatch,\n ShouldRevalidateFunction,\n RouteManifest,\n ImmutableRouteKey,\n ActionFunction,\n LoaderFunction,\n V7_MutationFormMethod,\n V7_FormMethod,\n HTMLFormMethod,\n MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponse,\n ResultType,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string,\n opts?: RouterNavigateOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key?: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key?: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_normalizeFormMethod: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n future?: FutureConfig;\n hydrationData?: HydrationState;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (state: RouterState): void;\n}\n\ninterface UseMatchesMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: unknown;\n handle: unknown;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UseMatchesMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\n/**\n * Options for a navigate() call for a Link navigation\n */\ntype LinkNavigateOptions = {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n};\n\n/**\n * Options for a navigate() call for a Form navigation\n */\ntype SubmissionNavigateOptions = {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n formData: FormData;\n};\n\n/**\n * Options to pass to navigate() for either a Link or Form navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions =\n | Omit\n | Omit;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: FormMethod | V7_FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Loading: {\n state: \"loading\";\n formMethod: FormMethod | V7_FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\";\nconst isServer = !isBrowser;\n\nconst defaultDetectErrorBoundary = (route: AgnosticRouteObject) =>\n Boolean(route.hasErrorBoundary);\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let detectErrorBoundary =\n init.detectErrorBoundary || defaultDetectErrorBoundary;\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n detectErrorBoundary,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_normalizeFormMethod: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(\n dataRoutes,\n init.history.location,\n init.basename\n );\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized =\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n !initialMatches.some((m) => m.route.lazy) &&\n // And we have to either have no loaders or have been provided hydrationData\n (!initialMatches.some((m) => m.route.loader) || init.hydrationData != null);\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidate()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations from their actions\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n deleteBlocker(blockerKey!);\n updateState({ blockers: new Map(router.state.blockers) });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location);\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(newState: Partial): void {\n state = {\n ...state,\n ...newState,\n };\n subscribers.forEach((subscriber) => subscriber(state));\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n for (let [key] of blockerFunctions) {\n deleteBlocker(key);\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n updateState({\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers: new Map(state.blockers),\n });\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n to,\n future,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n deleteBlocker(blockerKey!);\n updateState({ blockers: new Map(state.blockers) });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponse;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, init.basename);\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n });\n return;\n }\n\n // Short circuit if it's only a hash change and not a mutation submission\n // For example, on /page#hash and submit a which will\n // default to a navigation to /page\n if (\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n ...opts.submission,\n };\n loadingNavigation = navigation;\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts?: { replace?: boolean }\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n ...submission,\n };\n updateState({ navigation });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation;\n if (!loadingNavigation) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n ...submission,\n };\n loadingNavigation = navigation;\n }\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission || fetcherSubmission\n ? submission || fetcherSubmission\n : loadingNavigation.formMethod &&\n loadingNavigation.formAction &&\n loadingNavigation.formData &&\n loadingNavigation.formEncType\n ? {\n formMethod: loadingNavigation.formMethod,\n formAction: loadingNavigation.formAction,\n formData: loadingNavigation.formData,\n formEncType: loadingNavigation.formEncType,\n }\n : undefined;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n routesToUse,\n init.basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n completeNavigation(location, {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n });\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: fetcher && fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState({\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n }\n\n pendingNavigationLoadId = ++incrementingLoadId;\n revalidatingFetchers.forEach((rf) =>\n fetchControllers.set(rf.key, pendingNavigationController!)\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n await startRedirectNavigation(state, redirect, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n\n return {\n loaderData,\n errors,\n ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n };\n }\n\n function getFetcher(key: string): Fetcher {\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches = matchRoutes(routesToUse, href, init.basename);\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: href })\n );\n return;\n }\n\n let { path, submission } = normalizeNavigateOptions(\n href,\n future,\n opts,\n true\n );\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, submission);\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(key, routeId, path, match, matches, submission);\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n ...submission,\n data: existingFetcher && existingFetcher.data,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n fetchRedirectIds.add(key);\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n ...submission,\n data: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n return startRedirectNavigation(state, actionResult, {\n submission,\n isFetchActionRedirect: true,\n });\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, init.basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: actionResult.data,\n ...submission,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n routesToUse,\n init.basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: existingFetcher && existingFetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(staleKey, revalidatingFetcher);\n fetchControllers.set(staleKey, abortController);\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n return startRedirectNavigation(state, redirect);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: actionResult.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n\n let didAbortFetchLoads = abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n ...(didAbortFetchLoads ? { fetchers: new Map(state.fetchers) } : {}),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n ...submission,\n data: existingFetcher && existingFetcher.data,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n await startRedirectNavigation(state, result);\n return;\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n state.fetchers.delete(key);\n // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n // do we need to behave any differently with our non-redirect errors?\n // What if it was a non-redirect Response?\n updateState({\n fetchers: new Map(state.fetchers),\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n });\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n replace,\n isFetchActionRedirect,\n }: {\n submission?: Submission;\n replace?: boolean;\n isFetchActionRedirect?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(\n state.location,\n redirect.location,\n // TODO: This can be removed once we get rid of useTransition in Remix v2\n {\n _isRedirect: true,\n ...(isFetchActionRedirect ? { _isFetchActionRedirect: true } : {}),\n }\n );\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n // Check if this an absolute external redirect that goes to a new origin\n if (\n ABSOLUTE_URL_REGEX.test(redirect.location) &&\n isBrowser &&\n typeof window?.location !== \"undefined\"\n ) {\n let url = init.history.createURL(redirect.location);\n let isDifferentBasename =\n stripBasename(url.pathname, init.basename || \"/\") == null;\n\n if (window.location.origin !== url.origin || isDifferentBasename) {\n if (replace) {\n window.location.replace(redirect.location);\n } else {\n window.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType, formData } = state.navigation;\n if (!submission && formMethod && formAction && formData && formEncType) {\n submission = {\n formMethod,\n formAction,\n formEncType,\n formData,\n };\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n submission &&\n isMutationMethod(submission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...submission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else if (isFetchActionRedirect) {\n // For a fetch action redirect, we kick off a new loading navigation\n // without the fetcher submission, but we send it along for shouldRevalidate\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation: {\n state: \"loading\",\n location: redirectLocation,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n },\n fetcherSubmission: submission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // Otherwise, we kick off a new loading navigation, preserving the\n // submission info for the duration of this navigation\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation: {\n state: \"loading\",\n location: redirectLocation,\n formMethod: submission ? submission.formMethod : undefined,\n formAction: submission ? submission.formAction : undefined,\n formEncType: submission ? submission.formEncType : undefined,\n formData: submission ? submission.formData : undefined,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n detectErrorBoundary,\n router.basename\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, request.signal),\n f.match,\n f.matches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n request.signal,\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n request.signal,\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\n }\n\n function deleteFetcher(key: string): void {\n if (fetchControllers.has(key)) abortFetcher(key);\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n state.fetchers.delete(key);\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): void {\n let doneKeys = [];\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n }\n }\n markFetchersDone(doneKeys);\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n state.blockers.set(key, newBlocker);\n updateState({ blockers: new Map(state.blockers) });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || ((location) => location.key);\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n inFlightDataRoutes = newRoutes;\n }\n\n router = {\n get basename() {\n return init.basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let detectErrorBoundary =\n opts?.detectErrorBoundary || defaultDetectErrorBoundary;\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n detectErrorBoundary,\n undefined,\n manifest\n );\n let basename = (opts ? opts.basename : null) || \"/\";\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error && !isRedirectResponse(e.response)) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n detectErrorBoundary,\n basename,\n true,\n isRouteRequest,\n requestContext\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n detectErrorBoundary,\n basename,\n true,\n isRouteRequest,\n requestContext\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: RouterNavigateOptions\n): opts is SubmissionNavigateOptions {\n return opts != null && \"formData\" in opts;\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n to: To,\n future: FutureConfig,\n opts?: RouterNavigateOptions,\n isFetcher = false\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponse;\n} {\n let path = typeof to === \"string\" ? to : createPath(to);\n\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n // Create a Submission on non-GET navigations\n let submission: Submission | undefined;\n if (opts.formData) {\n let formMethod = opts.formMethod || \"get\";\n submission = {\n formMethod: future.v7_normalizeFormMethod\n ? (formMethod.toUpperCase() as V7_FormMethod)\n : (formMethod.toLowerCase() as FormMethod),\n formAction: stripHashFromPath(path),\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData: opts.formData,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n let searchParams = convertFormDataToSearchParams(opts.formData);\n // Since fetcher GET submissions only run a single loader (as opposed to\n // navigation GET submissions which run all loaders), we need to preserve\n // any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n fetchLoadMatches: Map,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n let defaultShouldRevalidate =\n // Forced revalidation due to submission, useRevalidate, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.toString() === nextUrl.toString() ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search;\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n if (match.route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (match.route.loader == null) {\n return false;\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n defaultShouldRevalidate ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate if fetcher won't be present in the subsequent render\n if (!matches.some((m) => m.route.id === f.routeId)) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData\n if (!fetcherMatches) {\n revalidatingFetchers.push({ key, ...f, matches: null, match: null });\n return;\n }\n\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n if (cancelledFetcherLoads.includes(key)) {\n revalidatingFetchers.push({\n key,\n matches: fetcherMatches,\n match: fetcherMatch,\n ...f,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // hit a static href, so they _always_ check shouldRevalidate and the\n // default is strictly if a revalidation is explicitly required (action\n // submissions, useRevalidator, X-Remix-Revalidate).\n let shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate,\n });\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n matches: fetcherMatches,\n match: fetcherMatch,\n ...f,\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: Parameters[0]\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n detectErrorBoundary: DetectErrorBoundaryFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to detectErrorBoundary\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `detectErrorBoundary` function to set the `hasErrorBoundary` route\n // property since the logic will differ between frameworks.\n hasErrorBoundary: detectErrorBoundary({ ...routeToUpdate }),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n detectErrorBoundary: DetectErrorBoundaryFunction,\n basename = \"/\",\n isStaticRequest: boolean = false,\n isRouteRequest: boolean = false,\n requestContext?: unknown\n): Promise {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({ request, params: match.params, context: requestContext }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let values = await Promise.all([\n runHandler(handler),\n loadLazyRouteModule(match.route, detectErrorBoundary, manifest),\n ]);\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, detectErrorBoundary, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n throw getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else {\n invariant(\n handler,\n `Could not find the ${type} to run on the \"${match.route.id}\" route`\n );\n\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let activeMatches = matches.slice(0, matches.indexOf(match) + 1);\n let routePathnames = getPathContributingMatches(activeMatches).map(\n (match) => match.pathnameBase\n );\n let resolvedLocation = resolveTo(\n location,\n routePathnames,\n new URL(request.url).pathname\n );\n invariant(\n createPath(resolvedLocation),\n `Unable to resolve redirect location: ${location}`\n );\n\n // Prepend the basename to the redirect location if we have one\n if (basename) {\n let path = resolvedLocation.pathname;\n resolvedLocation.pathname =\n path === \"/\" ? basename : joinPaths([basename, path]);\n }\n\n location = createPath(resolvedLocation);\n } else if (!isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (isRouteRequest) {\n // eslint-disable-next-line no-throw-literal\n throw {\n type: resultType || ResultType.data,\n response: result,\n };\n }\n\n let data: any;\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponse(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType, formData } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n init.body =\n formEncType === \"application/x-www-form-urlencoded\"\n ? convertFormDataToSearchParams(formData)\n : formData;\n }\n\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, value instanceof File ? value.name : value);\n }\n\n return searchParams;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponse(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results: DataResult[]): RedirectResult | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return result;\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n return (\n a.pathname === b.pathname && a.search === b.search && a.hash !== b.hash\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signal: AbortSignal,\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\n// Note: This should match the format exported by useMatches, so if you change\n// this please also change that :) Eventually we'll DRY this up\nfunction createUseMatchesMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UseMatchesMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id] as unknown,\n handle: route.handle as unknown,\n };\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n//#endregion\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport * as React from \"react\";\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction isPolyfill(x: any, y: any) {\n return (\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y) // eslint-disable-line no-self-compare\n );\n}\n\nconst is: (x: any, y: any) => boolean =\n typeof Object.is === \"function\" ? Object.is : isPolyfill;\n\n// Intentionally not using named imports because Rollup uses dynamic\n// dispatch for CommonJS interop named imports.\nconst { useState, useEffect, useLayoutEffect, useDebugValue } = React;\n\nlet didWarnOld18Alpha = false;\nlet didWarnUncachedGetSnapshot = false;\n\n// Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\nexport function useSyncExternalStore(\n subscribe: (fn: () => void) => () => void,\n getSnapshot: () => T,\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n getServerSnapshot?: () => T\n): T {\n if (__DEV__) {\n if (!didWarnOld18Alpha) {\n if (\"startTransition\" in React) {\n didWarnOld18Alpha = true;\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that \" +\n \"does not support useSyncExternalStore. The \" +\n \"use-sync-external-store shim will not work correctly. Upgrade \" +\n \"to a newer pre-release.\"\n );\n }\n }\n }\n\n // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n const value = getSnapshot();\n if (__DEV__) {\n if (!didWarnUncachedGetSnapshot) {\n const cachedValue = getSnapshot();\n if (!is(value, cachedValue)) {\n console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n );\n didWarnUncachedGetSnapshot = true;\n }\n }\n }\n\n // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n const [{ inst }, forceUpdate] = useState({ inst: { value, getSnapshot } });\n\n // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n useLayoutEffect(() => {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n\n // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe, value, getSnapshot]);\n\n useEffect(() => {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n const handleStoreChange = () => {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n };\n // Subscribe to the store and return a clean-up function.\n return subscribe(handleStoreChange);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe]);\n\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst: any) {\n const latestGetSnapshot = inst.getSnapshot;\n const prevValue = inst.value;\n try {\n const nextValue = latestGetSnapshot();\n return !is(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n","/**\n * Inlined into the react-router repo since use-sync-external-store does not\n * provide a UMD-compatible package, so we need this to be able to distribute\n * UMD react-router bundles\n */\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @flow\n */\n\nimport * as React from \"react\";\n\nimport { useSyncExternalStore as client } from \"./useSyncExternalStoreShimClient\";\nimport { useSyncExternalStore as server } from \"./useSyncExternalStoreShimServer\";\n\nconst canUseDOM: boolean = !!(\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n);\nconst isServerEnvironment = !canUseDOM;\nconst shim = isServerEnvironment ? server : client;\n\nexport const useSyncExternalStore =\n \"useSyncExternalStore\" in React\n ? ((module) => module.useSyncExternalStore)(React)\n : shim;\n","import * as React from \"react\";\nimport type {\n AgnosticRouteMatch,\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n History,\n Location,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n LazyRouteFunction,\n} from \"@remix-run/router\";\nimport type { Action as NavigationType } from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n Router as RemixRouter,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n DataRouteMatch,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n AwaitContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history. If this is a root navigation, then we\n // navigate to the raw basename which allows the basename to have full\n // control over the presence of a trailing slash on root links\n if (basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let dataRouterStateContext = React.useContext(DataRouterStateContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterStateContext || undefined\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own \n ErrorBoundary prop on \n <Route>\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (state.location !== props.location) {\n return {\n error: props.error,\n location: props.location,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState?: RemixRouter[\"state\"]\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for the current errors: ${errors}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement: React.ReactNode | null = null;\n if (dataRouterState) {\n if (match.route.ErrorBoundary) {\n errorElement = ;\n } else if (match.route.errorElement) {\n errorElement = match.route.errorElement;\n } else {\n errorElement = ;\n }\n }\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode = outlet;\n if (error) {\n children = errorElement;\n } else if (match.route.Component) {\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return {\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n };\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches() {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () =>\n matches.map((match) => {\n let { pathname, params } = match;\n // Note: This structure matches that created by createUseMatchesMatch\n // in the @remix-run/router , so if you change this please also change\n // that :) Eventually we'll DRY this up\n return {\n id: match.route.id,\n pathname,\n params,\n data: loaderData[match.route.id] as unknown,\n handle: match.route.handle as unknown,\n };\n }),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n let [blockerKey] = React.useState(() => String(++blockerId));\n\n let blockerFunction = React.useCallback(\n (args) => {\n return typeof shouldBlock === \"function\"\n ? !!shouldBlock(args)\n : !!shouldBlock;\n },\n [shouldBlock]\n );\n\n let blocker = router.getBlocker(blockerKey, blockerFunction);\n\n // Cleanup on unmount\n React.useEffect(\n () => () => router.deleteBlocker(blockerKey),\n [router, blockerKey]\n );\n\n // Prefer the blocker from state since DataRouterContext is memoized so this\n // ensures we update on blocker state updates\n return state.blockers.get(blockerKey) || blocker;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import * as React from \"react\";\nimport type {\n TrackedPromise,\n InitialEntry,\n Location,\n MemoryHistory,\n Router as RemixRouter,\n RouterState,\n To,\n LazyRouteFunction,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n AbortedDeferredError,\n createMemoryHistory,\n UNSAFE_invariant as invariant,\n parsePath,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport { useSyncExternalStore as useSyncExternalStoreShim } from \"./use-sync-external-store-shim\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n RouteMatch,\n RouteObject,\n Navigator,\n NonIndexRouteObject,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n LocationContext,\n NavigationContext,\n DataRouterContext,\n DataRouterStateContext,\n AwaitContext,\n} from \"./context\";\nimport {\n useAsyncValue,\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n}\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n}: RouterProviderProps): React.ReactElement {\n let getState = React.useCallback(() => router.state, [router]);\n\n // Sync router state to our component state to force re-renders\n let state: RouterState = useSyncExternalStoreShim(\n router.subscribe,\n getState,\n // We have to provide this so React@18 doesn't complain during hydration,\n // but we pass our serialized hydration data into the router so state here\n // is already synced with what the server saw\n getState\n );\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a