UNPKG

525 kBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./node_modules/buffer/index.js","webpack:///external \"aws_amplify_core\"","webpack://aws_amplify_auth/../amazon-cognito-identity-js/node_modules/crypto-js/core.js?a1a4","webpack:///./node_modules/url/url.js","webpack:///./node_modules/crypto-js/hmac-sha256.js","webpack:///./node_modules/js-cookie/src/js.cookie.js","webpack:///(webpack)/buildin/global.js","webpack://aws_amplify_auth/../amazon-cognito-identity-js/node_modules/crypto-js/sha256.js?523f","webpack://aws_amplify_auth/../amazon-cognito-identity-js/node_modules/crypto-js/enc-base64.js?1c7c","webpack:///./node_modules/crypto-js/lib-typedarrays.js","webpack:///./node_modules/unfetch/dist/unfetch.module.js","webpack:///./node_modules/crypto-js/core.js","webpack:///./node_modules/amazon-cognito-identity-js/es/utils/cryptoSecureRandomInt.js","webpack:///./node_modules/crypto-js/sha256.js","webpack:///./node_modules/crypto-js/enc-base64.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/crypto-js/hmac.js","webpack:///./node_modules/isomorphic-unfetch/browser.js","webpack:///./node_modules/punycode/punycode.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/url/util.js","webpack:///./node_modules/querystring-es3/index.js","webpack:///./node_modules/querystring-es3/decode.js","webpack:///./node_modules/querystring-es3/encode.js","webpack:///../../src/types/Auth.ts","webpack:///./node_modules/amazon-cognito-identity-js/es/AuthenticationDetails.js","webpack:///./node_modules/amazon-cognito-identity-js/es/utils/WordArray.js","webpack:///./node_modules/amazon-cognito-identity-js/es/BigInteger.js","webpack:///./node_modules/amazon-cognito-identity-js/es/AuthenticationHelper.js","webpack:///./node_modules/amazon-cognito-identity-js/es/CognitoJwtToken.js","webpack:///./node_modules/amazon-cognito-identity-js/es/CognitoAccessToken.js","webpack:///./node_modules/amazon-cognito-identity-js/es/CognitoIdToken.js","webpack:///./node_modules/amazon-cognito-identity-js/es/CognitoRefreshToken.js","webpack:///./node_modules/amazon-cognito-identity-js/es/CognitoUserSession.js","webpack:///./node_modules/amazon-cognito-identity-js/es/DateHelper.js","webpack:///./node_modules/amazon-cognito-identity-js/es/CognitoUserAttribute.js","webpack:///./node_modules/amazon-cognito-identity-js/es/StorageHelper.js","webpack:///./node_modules/amazon-cognito-identity-js/es/CognitoUser.js","webpack:///./node_modules/amazon-cognito-identity-js/es/Platform/index.js","webpack:///./node_modules/amazon-cognito-identity-js/es/UserAgent.js","webpack:///./node_modules/amazon-cognito-identity-js/es/Client.js","webpack:///./node_modules/amazon-cognito-identity-js/es/CognitoUserPool.js","webpack:///../../src/common/AuthErrorStrings.ts","webpack:///./node_modules/amazon-cognito-identity-js/es/CookieStorage.js","webpack:///../../src/OAuth/urlOpener.ts","webpack:///../../src/OAuth/OAuth.ts","webpack:///../../src/OAuth/oauthStorage.ts","webpack:///../src/Errors.ts","webpack:///../src/Auth.ts","webpack:///../src/urlListener.ts","webpack:///../src/index.ts"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE__1__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","base64","ieee754","isArray","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","length","RangeError","Uint8Array","__proto__","arg","encodingOrOffset","Error","allocUnsafe","from","TypeError","ArrayBuffer","array","byteOffset","byteLength","undefined","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","write","slice","fromString","obj","isBuffer","len","checked","copy","buffer","val","type","data","fromObject","assertSize","size","toString","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","indexOf","lastIndexOf","arr","indexSize","arrLength","valLength","String","read","buf","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","push","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","Math","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","apply","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","subarray","e","typedArraySupport","poolSize","_augment","species","configurable","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","swap16","swap32","swap64","arguments","equals","inspect","max","match","join","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","Array","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","trim","replace","stringtrim","base64clean","src","dst","CryptoJS","crypto","window","self","globalThis","msCrypto","err","cryptoSecureRandomInt","getRandomValues","Uint32Array","randomBytes","F","subtype","C","C_lib","lib","Base","extend","overrides","mixIn","init","$super","instance","properties","propertyName","clone","WordArray","words","sigBytes","encoder","Hex","stringify","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","ceil","random","nBytes","C_enc","enc","hexChars","bite","parse","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","decodeURIComponent","escape","utf8Str","unescape","encodeURIComponent","BufferedBlockAlgorithm","reset","_data","_nDataBytes","_append","_process","doFlush","processedWords","dataWords","dataSigBytes","blockSize","nBlocksReady","nWordsReady","_minBufferSize","nBytesReady","_doProcessBlock","splice","C_algo","Hasher","cfg","_doReset","update","messageUpdate","finalize","_doFinalize","_createHelper","hasher","message","_createHmacHelper","HMAC","algo","punycode","util","Url","protocol","slashes","auth","host","port","hostname","hash","search","query","pathname","path","href","urlParse","resolve","source","relative","resolveObject","format","isString","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","url","parseQueryString","slashesDenoteHost","isObject","u","queryIndex","splitter","uSplit","split","rest","simplePath","exec","proto","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","part","newpart","k","validParts","notHost","bit","unshift","toASCII","h","ae","esc","qm","keys","charAt","rel","result","tkeys","tk","tkey","rkeys","rk","rkey","v","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","pop","isNullOrUndefined","authInHost","isNull","last","hasTrailingSlash","up","isAbsolute","HmacSHA256","OldCookies","Cookies","api","noConflict","attributes","decode","converter","document","defaults","expires","Date","toUTCString","JSON","test","stringifiedAttributes","attributeName","cookie","json","jar","cookies","parts","getJSON","remove","withConverter","g","Function","H","K","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","W","SHA256","_hash","M","f","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","t1","nBitsTotal","nBitsLeft","Base64","map","_map","base64Chars","triplet","paddingChar","base64Str","base64StrLength","reverseMap","_reverseMap","paddingIndex","bits1","bits2","bitsCombined","parseLoop","superInit","typedArray","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","typedArrayByteLength","Promise","XMLHttpRequest","ok","status","statusText","responseURL","text","responseText","then","blob","Blob","response","headers","entries","has","open","method","onload","getAllResponseHeaders","onerror","withCredentials","credentials","setRequestHeader","send","body","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","num","output","isLE","mLen","eLen","eMax","eBias","nBits","NaN","rt","abs","log","LN2","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","fetch","default","nodeType","freeGlobal","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","stringFromCharCode","error","fn","mapDomain","ucs2decode","extra","counter","ucs2encode","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","base","input","basic","index","oldi","w","baseMinusT","inputLength","bias","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","webpackPolyfill","deprecate","paths","children","prop","qs","sep","eq","options","regexp","maxKeys","kstr","vstr","idx","xs","stringifyPrimitive","objectKeys","ks","CognitoHostedUIIdentityProvider","AuthErrorTypes","GRAPHQL_AUTH_MODE","isFederatedSignInOptions","find","isCognitoHostedOpts","oauth","redirectSignIn","AuthenticationDetails","_ref","ValidationData","Username","Password","AuthParameters","ClientMetadata","validationData","authParameters","clientMetadata","username","password","_proto","getUsername","getPassword","getValidationData","getAuthParameters","getClientMetadata","dbits","hexStringify","BigInteger","nbi","inBrowser","navigator","appName","am","xl","xh","DB","DM","DV","FV","F1","F2","rr","vv","BI_RC","int2char","intAt","nbv","fromInt","nbits","Montgomery","mp","invDigit","mpl","mph","um","mt2","convert","dlShiftTo","divRemTo","compareTo","ZERO","subTo","revert","copyTo","reduce","u0","drShiftTo","mulTo","multiplyTo","sqrTo","squareTo","mi","sh","lShiftTo","bs","cbs","bm","ds","rShiftTo","pm","pt","ts","ms","nsh","ys","y0","yt","d1","d2","ONE","qd","addTo","negate","km","bitLength","mod","add","subtract","multiply","divide","modPow","callback","z","k1","g2","is1","r2","HEX_MSB_REGEX","AuthenticationHelper","PoolName","N","hexHash","padHex","smallAValue","generateRandomSmallA","getLargeAValue","infoBits","poolName","getSmallAValue","_this","largeAValue","calculateA","hexRandom","generateRandomString","getRandomPassword","randomPassword","getSaltDevices","SaltToHashDevices","getVerifierDevices","verifierDevices","generateHashDevice","deviceGroupKey","_this2","combinedString","hashedString","verifierDevicesNotPadded","_this3","A","calculateU","B","UHexHash","hashHex","computehkdf","ikm","salt","infoBitsWordArray","ikmWordArray","saltWordArray","prk","hmac","getPasswordAuthenticationKey","serverBValue","_this4","UValue","usernamePassword","usernamePasswordHash","xValue","calculateS","sValue","hkdf","_this5","gModPowXN","err2","getNewPasswordRequiredChallengeUserAttributePrefix","bigInt","isNegative","invertedNibbles","invertedNibble","toUpperCase","startsWith","substring","CognitoJwtToken","token","jwtToken","payload","decodePayload","getJwtToken","getExpiration","exp","getIssuedAt","iat","_setPrototypeOf","setPrototypeOf","CognitoAccessToken","_CognitoJwtToken","subClass","superClass","_temp","AccessToken","constructor","CognitoIdToken","IdToken","CognitoRefreshToken","RefreshToken","getToken","CognitoUserSession","ClockDrift","idToken","refreshToken","accessToken","clockDrift","calculateClockDrift","getIdToken","getRefreshToken","getAccessToken","getClockDrift","isValid","adjusted","monthNames","weekNames","DateHelper","getNowString","now","weekDay","getUTCDay","month","getUTCMonth","day","getUTCDate","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","getUTCFullYear","CognitoUserAttribute","Name","Value","getValue","setValue","getName","setName","dataMemory","MemoryStorage","setItem","getItem","removeItem","clear","StorageHelper","storageWindow","localStorage","exception","getStorage","userAgent","CognitoUser","Pool","pool","Session","client","signInUserSession","authenticationFlowType","storage","Storage","keyPrefix","getClientId","userDataKey","setSignInUserSession","clearCachedUserData","cacheTokens","getSignInUserSession","getAuthenticationFlowType","setAuthenticationFlowType","initiateAuth","authDetails","USERNAME","clientMetaData","jsonReq","AuthFlow","ClientId","getUserContextData","UserContextData","request","onFailure","challengeName","ChallengeName","challengeParameters","ChallengeParameters","customChallenge","getCognitoUserSession","AuthenticationResult","onSuccess","authenticateUser","authenticateUserPlainUsernamePassword","authenticateUserDefaultAuth","authenticationHelper","getUserPoolId","dateHelper","deviceKey","DEVICE_KEY","errOnAValue","aValue","SRP_A","CHALLENGE_NAME","USER_ID_FOR_SRP","SRP_B","SALT","getCachedDeviceKeyAndPassword","errOnHkdf","dateNow","SECRET_BLOCK","signatureString","challengeResponses","PASSWORD_CLAIM_SECRET_BLOCK","TIMESTAMP","PASSWORD_CLAIM_SIGNATURE","jsonReqResp","ChallengeResponses","respondToAuthChallenge","challenge","challengeCallback","errChallenge","dataChallenge","clearCachedDeviceKeyAndPassword","errAuthenticate","dataAuthenticate","authenticateUserInternal","PASSWORD","authResult","mfaRequired","selectMFAType","mfaSetup","totpRequired","userAttributes","rawRequiredAttributes","requiredAttributes","userAttributesPrefix","newPasswordRequired","getDeviceResponse","newDeviceMetadata","NewDeviceMetadata","DeviceGroupKey","DeviceKey","errGenHash","deviceSecretVerifierConfig","Salt","PasswordVerifier","DeviceSecretVerifierConfig","DeviceName","errConfirm","dataConfirm","cacheDeviceKeyAndPassword","UserConfirmationNecessary","completeNewPasswordChallenge","newPassword","requiredAttributeData","finalUserAttributes","forEach","NEW_PASSWORD","_this6","errAValue","errHkdf","confirmRegistration","confirmationCode","forceAliasCreation","ConfirmationCode","ForceAliasCreation","sendCustomChallengeAnswer","answerChallenge","_this7","ANSWER","sendMFACode","mfaType","_this8","SMS_MFA_CODE","mfaTypeSelection","SOFTWARE_TOKEN_MFA_CODE","changePassword","oldUserPassword","newUserPassword","PreviousPassword","ProposedPassword","enableMFA","mfaOptions","DeliveryMedium","AttributeName","MFAOptions","setUserMfaPreference","smsMfaSettings","softwareTokenMfaSettings","SMSMfaSettings","SoftwareTokenMfaSettings","disableMFA","deleteUser","_this9","clearCachedUser","updateAttributes","_this10","UserAttributes","getUserData","bypassCache","getUserAttributes","userData","attributeList","attribute","userAttribute","getMFAOptions","createGetUserRequest","promisifyRequest","refreshSessionIfPossible","_this11","refresh","refreshSession","params","_this12","getUserDataFromCache","isFetchUserDataAndTokenRequired","fetchUserData","_ref$bypassCache","_this13","cacheUserData","deleteAttributes","_this14","UserAttributeNames","resendConfirmationCode","getSession","idTokenKey","accessTokenKey","refreshTokenKey","clockDriftKey","cachedSession","_this15","wrappedCallback","wrapRefreshSessionCallback","REFRESH_TOKEN","lastUserKey","deviceKeyKey","authenticationResult","clearCachedTokens","randomPasswordKey","deviceGroupKeyKey","forgotPassword","inputVerificationCode","confirmPassword","getAttributeVerificationCode","verifyAttribute","Code","getDevice","forgetSpecificDevice","forgetDevice","_this16","setDeviceStatusRemembered","DeviceRememberedStatus","setDeviceStatusNotRemembered","listDevices","paginationToken","requestParams","Limit","PaginationToken","globalSignOut","_this17","signOut","revokeTokenCallback","_this18","_session","revokeTokens","cleanClientData","isSessionRevocable","revokeToken","origin_jti","_ref2","requestWithRetry","Token","sendMFASelectionAnswer","_this19","associateSoftwareToken","_this20","associateSecretCode","SecretCode","verifySoftwareToken","totpCode","friendlyDeviceName","_this21","UserCode","FriendlyDeviceName","errRespond","dataRespond","Platform","BASE_USER_AGENT","product","isReactNative","UserAgent","appendToCognitoUserAgent","content","_inheritsLoose","_wrapNativeSuper","Class","_cache","Map","Wrapper","_construct","_getPrototypeOf","writable","Parent","args","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","getPrototypeOf","CognitoError","_Error","statusCode","Client","region","endpoint","fetchOptions","operation","reject","functionToRetry","maxDelayMs","retry","delayFn","attempt","logger","retryIn","setTimeout","delay","jitteredBackoff","jitteredExponentialRetry","rej","assign","cache","resp","__type","Message","ex","AuthErrorStrings","CognitoUserPool","UserPoolId","AdvancedSecurityDataCollectionFlag","userPoolId","clientId","advancedSecurityDataCollectionFlag","signUp","cognitoUser","returnData","user","userConfirmed","UserConfirmed","userSub","UserSub","codeDeliveryDetails","CodeDeliveryDetails","getCurrentUser","lastAuthUser","AmazonCognitoAdvancedSecurityData","amazonCognitoAdvancedSecurityDataConst","advancedSecurityData","getData","EncodedData","CookieStorage","domain","secure","sameSite","numKeys","launchUri","windowProxy","AMPLIFY_SYMBOL","dispatchAuthEvent","event","Hub","dispatch","Logger","_a","config","cognitoClientId","_b","scopes","_urlOpener","urlOpener","_config","_cognitoClientId","isValidScopes","_scopes","OAuth","every","scope","responseType","provider","customState","Cognito","generatedState","_generateState","state","urlSafeEncode","sessionStorage","oAuthStorage","private_key","pkce_key","_generateRandom","code_challenge","_generateChallenge","scopesString","URL","__assign","redirect_uri","response_type","client_id","identity_provider","code_challenge_method","debug","currentUrl","accum","_c","currentUrlPathname","redirectSignInPathname","oAuthTokenEndpoint","clientID","redirectUri","ouath_pkce_key","oAuthTokenBody","grant_type","code_verifier","access_token","refresh_token","id_token","urlParams","acc","error_description","_validateState","_handleCodeFlow","_handleImplicitFlow","e_1","oauth_state","savedState","returnedState","oAuthLogoutEndpoint","signout_uri","redirectSignOut","returnTo","logout_uri","oAuth","chars","round","_base64URL","sha256","_bufferToString","CHARSET","AuthError","__extends","_super","NoUserPoolError","authErrorMessages","noConfig","DEFAULT_MSG","missingAuthConfig","emptyUsername","EMPTY_USERNAME","invalidUsername","INVALID_USERNAME","emptyPassword","EMPTY_PASSWORD","emptyCode","EMPTY_CODE","signUpError","SIGN_UP_ERROR","noMFA","NO_MFA","invalidMFA","INVALID_MFA","emptyChallengeResponse","EMPTY_CHALLENGE","noUserSession","NO_USER_SESSION","deviceConfig","DEVICE_CONFIG","networkError","NETWORK_ERROR","Auth","Credentials","configure","currentCredentials","currentUserCredentials","listen","_storage","AuthClass","conf","Parser","parseMobilehubConfig","userPoolWebClientId","cookieStorage","identityPoolId","mandatorySignIn","refreshHandlers","identityPoolRegion","_isValidAuthStorage","ssr","UniversalStorage","_storageSync","userPoolData","userPool","cognitoHostedUIConfig","awsCognito","cognitoAuthParams","_oAuthHandler","usedResponseUrls_1","JS","browserOrNode","isBrowser","location","isNode","urlListener","_handleAuthResponse","restOfAttrs","rejectNoUserPool","email","phone_number","_typeof","rejectAuthError","SignUpError","attrs_1","validationDataObject_1","EmptyPassword","EmptyUsername","EmptyCode","createCognitoUser","usernameOrSignInOpts","pw","InvalidUsername","warn","signInWithPassword","signInWithoutPassword","session","cred","currentUserPoolUser","currentUser","e_2","challengeParam","pendingSignIn","authCallbacks","isSessionInvalid","cleanUpInvalidSession","cleanUpError_1","_getMfaTypeFromUserData","preferredMFA","PreferredMfaSetting","mfaList","UserMFASettingList","cleanUpError_2","mfaMethod","_getUserData","totpMfaSettings","PreferredMfa","Enabled","currentMFAType","InvalidMFA","NoMFA","cleanUpError_3","secretCode","challengeAnswer","e_3","e_4","EmptyChallengeResponse","attributeNames","userSession","e_5","isSignedInHostedUI","user_1","cleanUpError_4","cleanCachedItems","oAuthSignOutRedirect","attr","attrs","attributesToObject","unverified","verified","isErrorWithMessage","isUserDisabledError","isUserDoesNotExistError","isTokenRevokedError","isRefreshTokenRevokedError","isRefreshTokenExpiredError","isOAuthInProgress","timeoutId","hostedUISignCallback","clearTimeout","cleanUpError_5","cleanUpError_6","oAuthFlowInProgress","federatedUser","e_7","federatedInfo","e_8","NoUserSession","cleanUpError_7","e_9","refreshFederatedToken","currentSession","success","verifyUserAttribute","verifyUserAttributeSubmit","opts","e_10","cleanUpError_8","oAuthSignOutRedirectOrReject","oAuthSignOutAndResolve","cognitoIdentitySignOut","oldPassword","getCredSource","userAttrs","e_12","id","identityId","err_1","providerOrOptions","hasCustomState","customProvider","oauthSignIn","loggedInUser","identity_id","expires_at","currentAuthenticatedUser","hasCodeOrError","hasTokenOrError","handleAuthResponse","isCustomStateIncluded","history","replaceState","urlSafeDecode","err_2","accessKeyId","sessionToken","secretAccessKey","authenticated","isTruthyString","NoConfig","MissingAuthConfig","noUserPoolErrorHandler","currUser","error_1","DeviceConfig","NetworkError","error_2","error_3","cb","deviceList","Devices","deviceName","device","DeviceAttributes","Amplify","register"],"mappings":"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","file":"aws-amplify-auth.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"aws_amplify_core\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"aws_amplify_auth\", [\"aws_amplify_core\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"aws_amplify_auth\"] = factory(require(\"aws_amplify_core\"));\n\telse\n\t\troot[\"aws_amplify_auth\"] = factory(root[\"aws_amplify_core\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__1__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 29);\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <http://feross.org>\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 '<Buffer ' + str + '>'\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","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\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 punycode = require('punycode');\nvar util = require('./util');\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 // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\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 && util.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 (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\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 if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\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 punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\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 if (rest.indexOf(ae) === -1)\n continue;\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 (util.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 util.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 (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\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 var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\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 var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\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 (!util.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 especially 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 (!util.isNull(result.pathname) || !util.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 || srcPath.length > 1) &&\n (last === '.' || last === '..') || 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 especially 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 (!util.isNull(result.pathname) || !util.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",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.HmacSHA256;\n\n}));","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));","export default function(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||\"get\",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},s.onerror=r,s.withCredentials=\"include\"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null)})}\n//# sourceMappingURL=unfetch.module.js.map\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));","var crypto; // Native crypto from window (Browser)\n\nif (typeof window !== 'undefined' && window.crypto) {\n crypto = window.crypto;\n} // Native (experimental IE 11) crypto from window (Browser)\n\n\nif (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n crypto = window.msCrypto;\n} // Native crypto from global (NodeJS)\n\n\nif (!crypto && typeof global !== 'undefined' && global.crypto) {\n crypto = global.crypto;\n} // Native crypto import via require (NodeJS)\n\n\nif (!crypto && typeof require === 'function') {\n try {\n crypto = require('crypto');\n } catch (err) {}\n}\n/*\n * Cryptographically secure pseudorandom number generator\n * As Math.random() is cryptographically not safe to use\n */\n\n\nexport default function cryptoSecureRandomInt() {\n if (crypto) {\n // Use getRandomValues method (Browser)\n if (typeof crypto.getRandomValues === 'function') {\n try {\n return crypto.getRandomValues(new Uint32Array(1))[0];\n } catch (err) {}\n } // Use randomBytes method (NodeJS)\n\n\n if (typeof crypto.randomBytes === 'function') {\n try {\n return crypto.randomBytes(4).readInt32LE();\n } catch (err) {}\n }\n }\n\n throw new Error('Native crypto module could not be used to get secure random number.');\n}",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));","'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","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.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","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));","module.exports = self.fetch || (self.fetch = require('unfetch').default || require('unfetch'));\n","/*! https://mths.be/punycode v1.4.1 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 new 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 <https://mathiasbynens.be/notes/javascript-encoding>\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 * https://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 <n,i> state to <m,0>,\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.4.1',\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 <https://mathiasbynens.be/notes/javascript-encoding>\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) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// 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 {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\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 (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\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 map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], 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\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n",null,"/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/** @class */\nvar AuthenticationDetails = /*#__PURE__*/function () {\n /**\n * Constructs a new AuthenticationDetails object\n * @param {object=} data Creation options.\n * @param {string} data.Username User being authenticated.\n * @param {string} data.Password Plain-text password to authenticate with.\n * @param {(AttributeArg[])?} data.ValidationData Application extra metadata.\n * @param {(AttributeArg[])?} data.AuthParamaters Authentication paramaters for custom auth.\n */\n function AuthenticationDetails(data) {\n var _ref = data || {},\n ValidationData = _ref.ValidationData,\n Username = _ref.Username,\n Password = _ref.Password,\n AuthParameters = _ref.AuthParameters,\n ClientMetadata = _ref.ClientMetadata;\n\n this.validationData = ValidationData || {};\n this.authParameters = AuthParameters || {};\n this.clientMetadata = ClientMetadata || {};\n this.username = Username;\n this.password = Password;\n }\n /**\n * @returns {string} the record's username\n */\n\n\n var _proto = AuthenticationDetails.prototype;\n\n _proto.getUsername = function getUsername() {\n return this.username;\n }\n /**\n * @returns {string} the record's password\n */\n ;\n\n _proto.getPassword = function getPassword() {\n return this.password;\n }\n /**\n * @returns {Array} the record's validationData\n */\n ;\n\n _proto.getValidationData = function getValidationData() {\n return this.validationData;\n }\n /**\n * @returns {Array} the record's authParameters\n */\n ;\n\n _proto.getAuthParameters = function getAuthParameters() {\n return this.authParameters;\n }\n /**\n * @returns {ClientMetadata} the clientMetadata for a Lambda trigger\n */\n ;\n\n _proto.getClientMetadata = function getClientMetadata() {\n return this.clientMetadata;\n };\n\n return AuthenticationDetails;\n}();\n\nexport { AuthenticationDetails as default };","import cryptoSecureRandomInt from './cryptoSecureRandomInt';\n/**\n * Hex encoding strategy.\n * Converts a word array to a hex string.\n * @param {WordArray} wordArray The word array.\n * @return {string} The hex string.\n * @static\n */\n\nfunction hexStringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes; // Convert\n\n var hexChars = [];\n\n for (var i = 0; i < sigBytes; i++) {\n var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n hexChars.push((bite >>> 4).toString(16));\n hexChars.push((bite & 0x0f).toString(16));\n }\n\n return hexChars.join('');\n}\n\nvar WordArray = /*#__PURE__*/function () {\n function WordArray(words, sigBytes) {\n words = this.words = words || [];\n\n if (sigBytes != undefined) {\n this.sigBytes = sigBytes;\n } else {\n this.sigBytes = words.length * 4;\n }\n }\n\n var _proto = WordArray.prototype;\n\n _proto.random = function random(nBytes) {\n var words = [];\n\n for (var i = 0; i < nBytes; i += 4) {\n words.push(cryptoSecureRandomInt());\n }\n\n return new WordArray(words, nBytes);\n };\n\n _proto.toString = function toString() {\n return hexStringify(this);\n };\n\n return WordArray;\n}();\n\nexport { WordArray as default };","// A small implementation of BigInteger based on http://www-cs-students.stanford.edu/~tjw/jsbn/\n//\n// All public methods have been removed except the following:\n// new BigInteger(a, b) (only radix 2, 4, 8, 16 and 32 supported)\n// toString (only radix 2, 4, 8, 16 and 32 supported)\n// negate\n// abs\n// compareTo\n// bitLength\n// mod\n// equals\n// add\n// subtract\n// multiply\n// divide\n// modPow\nexport default BigInteger;\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a 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\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY\n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n// (public) Constructor\n\nfunction BigInteger(a, b) {\n if (a != null) this.fromString(a, b);\n} // return new, unset BigInteger\n\n\nfunction nbi() {\n return new BigInteger(null);\n} // Bits per digit\n\n\nvar dbits; // JavaScript engine analysis\n\nvar canary = 0xdeadbeefcafe;\nvar j_lm = (canary & 0xffffff) == 0xefcafe; // am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n\nfunction am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c;\n c = Math.floor(v / 0x4000000);\n w[j++] = v & 0x3ffffff;\n }\n\n return c;\n} // am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n\n\nfunction am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff,\n xh = x >> 15;\n\n while (--n >= 0) {\n var l = this[i] & 0x7fff;\n var h = this[i++] >> 15;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);\n w[j++] = l & 0x3fffffff;\n }\n\n return c;\n} // Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\n\n\nfunction am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff,\n xh = x >> 14;\n\n while (--n >= 0) {\n var l = this[i] & 0x3fff;\n var h = this[i++] >> 14;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;\n c = (l >> 28) + (m >> 14) + xh * h;\n w[j++] = l & 0xfffffff;\n }\n\n return c;\n}\n\nvar inBrowser = typeof navigator !== 'undefined';\n\nif (inBrowser && j_lm && navigator.appName == 'Microsoft Internet Explorer') {\n BigInteger.prototype.am = am2;\n dbits = 30;\n} else if (inBrowser && j_lm && navigator.appName != 'Netscape') {\n BigInteger.prototype.am = am1;\n dbits = 26;\n} else {\n // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = (1 << dbits) - 1;\nBigInteger.prototype.DV = 1 << dbits;\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP; // Digit conversions\n\nvar BI_RM = '0123456789abcdefghijklmnopqrstuvwxyz';\nvar BI_RC = new Array();\nvar rr, vv;\nrr = '0'.charCodeAt(0);\n\nfor (vv = 0; vv <= 9; ++vv) {\n BI_RC[rr++] = vv;\n}\n\nrr = 'a'.charCodeAt(0);\n\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\n\nrr = 'A'.charCodeAt(0);\n\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\n\nfunction int2char(n) {\n return BI_RM.charAt(n);\n}\n\nfunction intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)];\n return c == null ? -1 : c;\n} // (protected) copy this to r\n\n\nfunction bnpCopyTo(r) {\n for (var i = this.t - 1; i >= 0; --i) {\n r[i] = this[i];\n }\n\n r.t = this.t;\n r.s = this.s;\n} // (protected) set from integer value x, -DV <= x < DV\n\n\nfunction bnpFromInt(x) {\n this.t = 1;\n this.s = x < 0 ? -1 : 0;\n if (x > 0) this[0] = x;else if (x < -1) this[0] = x + this.DV;else this.t = 0;\n} // return bigint initialized to value\n\n\nfunction nbv(i) {\n var r = nbi();\n r.fromInt(i);\n return r;\n} // (protected) set from string and radix\n\n\nfunction bnpFromString(s, b) {\n var k;\n if (b == 16) k = 4;else if (b == 8) k = 3;else if (b == 2) k = 1;else if (b == 32) k = 5;else if (b == 4) k = 2;else throw new Error('Only radix 2, 4, 8, 16, 32 are supported');\n this.t = 0;\n this.s = 0;\n var i = s.length,\n mi = false,\n sh = 0;\n\n while (--i >= 0) {\n var x = intAt(s, i);\n\n if (x < 0) {\n if (s.charAt(i) == '-') mi = true;\n continue;\n }\n\n mi = false;\n if (sh == 0) this[this.t++] = x;else if (sh + k > this.DB) {\n this[this.t - 1] |= (x & (1 << this.DB - sh) - 1) << sh;\n this[this.t++] = x >> this.DB - sh;\n } else this[this.t - 1] |= x << sh;\n sh += k;\n if (sh >= this.DB) sh -= this.DB;\n }\n\n this.clamp();\n if (mi) BigInteger.ZERO.subTo(this, this);\n} // (protected) clamp off excess high words\n\n\nfunction bnpClamp() {\n var c = this.s & this.DM;\n\n while (this.t > 0 && this[this.t - 1] == c) {\n --this.t;\n }\n} // (public) return string representation in given radix\n\n\nfunction bnToString(b) {\n if (this.s < 0) return '-' + this.negate().toString(b);\n var k;\n if (b == 16) k = 4;else if (b == 8) k = 3;else if (b == 2) k = 1;else if (b == 32) k = 5;else if (b == 4) k = 2;else throw new Error('Only radix 2, 4, 8, 16, 32 are supported');\n var km = (1 << k) - 1,\n d,\n m = false,\n r = '',\n i = this.t;\n var p = this.DB - i * this.DB % k;\n\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true;\n r = int2char(d);\n }\n\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & (1 << p) - 1) << k - p;\n d |= this[--i] >> (p += this.DB - k);\n } else {\n d = this[i] >> (p -= k) & km;\n\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n\n if (d > 0) m = true;\n if (m) r += int2char(d);\n }\n }\n\n return m ? r : '0';\n} // (public) -this\n\n\nfunction bnNegate() {\n var r = nbi();\n BigInteger.ZERO.subTo(this, r);\n return r;\n} // (public) |this|\n\n\nfunction bnAbs() {\n return this.s < 0 ? this.negate() : this;\n} // (public) return + if this > a, - if this < a, 0 if equal\n\n\nfunction bnCompareTo(a) {\n var r = this.s - a.s;\n if (r != 0) return r;\n var i = this.t;\n r = i - a.t;\n if (r != 0) return this.s < 0 ? -r : r;\n\n while (--i >= 0) {\n if ((r = this[i] - a[i]) != 0) return r;\n }\n\n return 0;\n} // returns bit length of the integer x\n\n\nfunction nbits(x) {\n var r = 1,\n t;\n\n if ((t = x >>> 16) != 0) {\n x = t;\n r += 16;\n }\n\n if ((t = x >> 8) != 0) {\n x = t;\n r += 8;\n }\n\n if ((t = x >> 4) != 0) {\n x = t;\n r += 4;\n }\n\n if ((t = x >> 2) != 0) {\n x = t;\n r += 2;\n }\n\n if ((t = x >> 1) != 0) {\n x = t;\n r += 1;\n }\n\n return r;\n} // (public) return the number of bits in \"this\"\n\n\nfunction bnBitLength() {\n if (this.t <= 0) return 0;\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ this.s & this.DM);\n} // (protected) r = this << n*DB\n\n\nfunction bnpDLShiftTo(n, r) {\n var i;\n\n for (i = this.t - 1; i >= 0; --i) {\n r[i + n] = this[i];\n }\n\n for (i = n - 1; i >= 0; --i) {\n r[i] = 0;\n }\n\n r.t = this.t + n;\n r.s = this.s;\n} // (protected) r = this >> n*DB\n\n\nfunction bnpDRShiftTo(n, r) {\n for (var i = n; i < this.t; ++i) {\n r[i - n] = this[i];\n }\n\n r.t = Math.max(this.t - n, 0);\n r.s = this.s;\n} // (protected) r = this << n\n\n\nfunction bnpLShiftTo(n, r) {\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << cbs) - 1;\n var ds = Math.floor(n / this.DB),\n c = this.s << bs & this.DM,\n i;\n\n for (i = this.t - 1; i >= 0; --i) {\n r[i + ds + 1] = this[i] >> cbs | c;\n c = (this[i] & bm) << bs;\n }\n\n for (i = ds - 1; i >= 0; --i) {\n r[i] = 0;\n }\n\n r[ds] = c;\n r.t = this.t + ds + 1;\n r.s = this.s;\n r.clamp();\n} // (protected) r = this >> n\n\n\nfunction bnpRShiftTo(n, r) {\n r.s = this.s;\n var ds = Math.floor(n / this.DB);\n\n if (ds >= this.t) {\n r.t = 0;\n return;\n }\n\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << bs) - 1;\n r[0] = this[ds] >> bs;\n\n for (var i = ds + 1; i < this.t; ++i) {\n r[i - ds - 1] |= (this[i] & bm) << cbs;\n r[i - ds] = this[i] >> bs;\n }\n\n if (bs > 0) r[this.t - ds - 1] |= (this.s & bm) << cbs;\n r.t = this.t - ds;\n r.clamp();\n} // (protected) r = this - a\n\n\nfunction bnpSubTo(a, r) {\n var i = 0,\n c = 0,\n m = Math.min(a.t, this.t);\n\n while (i < m) {\n c += this[i] - a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n if (a.t < this.t) {\n c -= a.s;\n\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n c += this.s;\n } else {\n c += this.s;\n\n while (i < a.t) {\n c -= a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n c -= a.s;\n }\n\n r.s = c < 0 ? -1 : 0;\n if (c < -1) r[i++] = this.DV + c;else if (c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n} // (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\n\n\nfunction bnpMultiplyTo(a, r) {\n var x = this.abs(),\n y = a.abs();\n var i = x.t;\n r.t = i + y.t;\n\n while (--i >= 0) {\n r[i] = 0;\n }\n\n for (i = 0; i < y.t; ++i) {\n r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);\n }\n\n r.s = 0;\n r.clamp();\n if (this.s != a.s) BigInteger.ZERO.subTo(r, r);\n} // (protected) r = this^2, r != this (HAC 14.16)\n\n\nfunction bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2 * x.t;\n\n while (--i >= 0) {\n r[i] = 0;\n }\n\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1);\n\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n r[i + x.t] -= x.DV;\n r[i + x.t + 1] = 1;\n }\n }\n\n if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);\n r.s = 0;\n r.clamp();\n} // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\n\n\nfunction bnpDivRemTo(m, q, r) {\n var pm = m.abs();\n if (pm.t <= 0) return;\n var pt = this.abs();\n\n if (pt.t < pm.t) {\n if (q != null) q.fromInt(0);\n if (r != null) this.copyTo(r);\n return;\n }\n\n if (r == null) r = nbi();\n var y = nbi(),\n ts = this.s,\n ms = m.s;\n var nsh = this.DB - nbits(pm[pm.t - 1]); // normalize modulus\n\n if (nsh > 0) {\n pm.lShiftTo(nsh, y);\n pt.lShiftTo(nsh, r);\n } else {\n pm.copyTo(y);\n pt.copyTo(r);\n }\n\n var ys = y.t;\n var y0 = y[ys - 1];\n if (y0 == 0) return;\n var yt = y0 * (1 << this.F1) + (ys > 1 ? y[ys - 2] >> this.F2 : 0);\n var d1 = this.FV / yt,\n d2 = (1 << this.F1) / yt,\n e = 1 << this.F2;\n var i = r.t,\n j = i - ys,\n t = q == null ? nbi() : q;\n y.dlShiftTo(j, t);\n\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t, r);\n }\n\n BigInteger.ONE.dlShiftTo(ys, t);\n t.subTo(y, y); // \"negative\" y so we can replace sub with am later\n\n while (y.t < ys) {\n y[y.t++] = 0;\n }\n\n while (--j >= 0) {\n // Estimate quotient digit\n var qd = r[--i] == y0 ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);\n\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) {\n // Try it out\n y.dlShiftTo(j, t);\n r.subTo(t, r);\n\n while (r[i] < --qd) {\n r.subTo(t, r);\n }\n }\n }\n\n if (q != null) {\n r.drShiftTo(ys, q);\n if (ts != ms) BigInteger.ZERO.subTo(q, q);\n }\n\n r.t = ys;\n r.clamp();\n if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder\n\n if (ts < 0) BigInteger.ZERO.subTo(r, r);\n} // (public) this mod a\n\n\nfunction bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a, null, r);\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r);\n return r;\n} // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\n\n\nfunction bnpInvDigit() {\n if (this.t < 1) return 0;\n var x = this[0];\n if ((x & 1) == 0) return 0;\n var y = x & 3; // y == 1/x mod 2^2\n\n y = y * (2 - (x & 0xf) * y) & 0xf; // y == 1/x mod 2^4\n\n y = y * (2 - (x & 0xff) * y) & 0xff; // y == 1/x mod 2^8\n\n y = y * (2 - ((x & 0xffff) * y & 0xffff)) & 0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n\n y = y * (2 - x * y % this.DV) % this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n\n return y > 0 ? this.DV - y : -y;\n}\n\nfunction bnEquals(a) {\n return this.compareTo(a) == 0;\n} // (protected) r = this + a\n\n\nfunction bnpAddTo(a, r) {\n var i = 0,\n c = 0,\n m = Math.min(a.t, this.t);\n\n while (i < m) {\n c += this[i] + a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n if (a.t < this.t) {\n c += a.s;\n\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n c += this.s;\n } else {\n c += this.s;\n\n while (i < a.t) {\n c += a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n c += a.s;\n }\n\n r.s = c < 0 ? -1 : 0;\n if (c > 0) r[i++] = c;else if (c < -1) r[i++] = this.DV + c;\n r.t = i;\n r.clamp();\n} // (public) this + a\n\n\nfunction bnAdd(a) {\n var r = nbi();\n this.addTo(a, r);\n return r;\n} // (public) this - a\n\n\nfunction bnSubtract(a) {\n var r = nbi();\n this.subTo(a, r);\n return r;\n} // (public) this * a\n\n\nfunction bnMultiply(a) {\n var r = nbi();\n this.multiplyTo(a, r);\n return r;\n} // (public) this / a\n\n\nfunction bnDivide(a) {\n var r = nbi();\n this.divRemTo(a, r, null);\n return r;\n} // Montgomery reduction\n\n\nfunction Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp & 0x7fff;\n this.mph = this.mp >> 15;\n this.um = (1 << m.DB - 15) - 1;\n this.mt2 = 2 * m.t;\n} // xR mod m\n\n\nfunction montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t, r);\n r.divRemTo(this.m, null, r);\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r);\n return r;\n} // x/R mod m\n\n\nfunction montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n} // x = x/R mod m (HAC 14.32)\n\n\nfunction montReduce(x) {\n while (x.t <= this.mt2) {\n // pad x so am has enough room later\n x[x.t++] = 0;\n }\n\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff;\n var u0 = j * this.mpl + ((j * this.mph + (x[i] >> 15) * this.mpl & this.um) << 15) & x.DM; // use am to combine the multiply-shift-add into one call\n\n j = i + this.m.t;\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t); // propagate carry\n\n while (x[j] >= x.DV) {\n x[j] -= x.DV;\n x[++j]++;\n }\n }\n\n x.clamp();\n x.drShiftTo(this.m.t, x);\n if (x.compareTo(this.m) >= 0) x.subTo(this.m, x);\n} // r = \"x^2/R mod m\"; x != r\n\n\nfunction montSqrTo(x, r) {\n x.squareTo(r);\n this.reduce(r);\n} // r = \"xy/R mod m\"; x,y != r\n\n\nfunction montMulTo(x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n}\n\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo; // (public) this^e % m (HAC 14.85)\n\nfunction bnModPow(e, m, callback) {\n var i = e.bitLength(),\n k,\n r = nbv(1),\n z = new Montgomery(m);\n if (i <= 0) return r;else if (i < 18) k = 1;else if (i < 48) k = 3;else if (i < 144) k = 4;else if (i < 768) k = 5;else k = 6; // precomputation\n\n var g = new Array(),\n n = 3,\n k1 = k - 1,\n km = (1 << k) - 1;\n g[1] = z.convert(this);\n\n if (k > 1) {\n var g2 = nbi();\n z.sqrTo(g[1], g2);\n\n while (n <= km) {\n g[n] = nbi();\n z.mulTo(g2, g[n - 2], g[n]);\n n += 2;\n }\n }\n\n var j = e.t - 1,\n w,\n is1 = true,\n r2 = nbi(),\n t;\n i = nbits(e[j]) - 1;\n\n while (j >= 0) {\n if (i >= k1) w = e[j] >> i - k1 & km;else {\n w = (e[j] & (1 << i + 1) - 1) << k1 - i;\n if (j > 0) w |= e[j - 1] >> this.DB + i - k1;\n }\n n = k;\n\n while ((w & 1) == 0) {\n w >>= 1;\n --n;\n }\n\n if ((i -= n) < 0) {\n i += this.DB;\n --j;\n }\n\n if (is1) {\n // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n } else {\n while (n > 1) {\n z.sqrTo(r, r2);\n z.sqrTo(r2, r);\n n -= 2;\n }\n\n if (n > 0) z.sqrTo(r, r2);else {\n t = r;\n r = r2;\n r2 = t;\n }\n z.mulTo(r2, g[w], r);\n }\n\n while (j >= 0 && (e[j] & 1 << i) == 0) {\n z.sqrTo(r, r2);\n t = r;\n r = r2;\n r2 = t;\n\n if (--i < 0) {\n i = this.DB - 1;\n --j;\n }\n }\n }\n\n var result = z.revert(r);\n callback(null, result);\n return result;\n} // protected\n\n\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.addTo = bnpAddTo; // public\n\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.equals = bnEquals;\nBigInteger.prototype.add = bnAdd;\nBigInteger.prototype.subtract = bnSubtract;\nBigInteger.prototype.multiply = bnMultiply;\nBigInteger.prototype.divide = bnDivide;\nBigInteger.prototype.modPow = bnModPow; // \"constants\"\n\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { Buffer } from 'buffer';\nimport CryptoJS from 'crypto-js/core';\nimport 'crypto-js/lib-typedarrays'; // necessary for crypto js\n\nimport SHA256 from 'crypto-js/sha256';\nimport HmacSHA256 from 'crypto-js/hmac-sha256';\nimport WordArray from './utils/WordArray';\n/**\n * Returns a Buffer with a sequence of random nBytes\n *\n * @param {number} nBytes\n * @returns {Buffer} fixed-length sequence of random bytes\n */\n\nfunction randomBytes(nBytes) {\n return Buffer.from(new WordArray().random(nBytes).toString(), 'hex');\n}\n\nimport BigInteger from './BigInteger';\n/**\n * Tests if a hex string has it most significant bit set (case-insensitive regex)\n */\n\nvar HEX_MSB_REGEX = /^[89a-f]/i;\nvar initN = 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1' + '29024E088A67CC74020BBEA63B139B22514A08798E3404DD' + 'EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245' + 'E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED' + 'EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D' + 'C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F' + '83655D23DCA3AD961C62F356208552BB9ED529077096966D' + '670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B' + 'E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9' + 'DE2BCBF6955817183995497CEA956AE515D2261898FA0510' + '15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64' + 'ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7' + 'ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B' + 'F12FFA06D98A0864D87602733EC86A64521F2B18177B200C' + 'BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31' + '43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF';\nvar newPasswordRequiredChallengeUserAttributePrefix = 'userAttributes.';\n/** @class */\n\nvar AuthenticationHelper = /*#__PURE__*/function () {\n /**\n * Constructs a new AuthenticationHelper object\n * @param {string} PoolName Cognito user pool name.\n */\n function AuthenticationHelper(PoolName) {\n this.N = new BigInteger(initN, 16);\n this.g = new BigInteger('2', 16);\n this.k = new BigInteger(this.hexHash(\"\" + this.padHex(this.N) + this.padHex(this.g)), 16);\n this.smallAValue = this.generateRandomSmallA();\n this.getLargeAValue(function () {});\n this.infoBits = Buffer.from('Caldera Derived Key', 'utf8');\n this.poolName = PoolName;\n }\n /**\n * @returns {BigInteger} small A, a random number\n */\n\n\n var _proto = AuthenticationHelper.prototype;\n\n _proto.getSmallAValue = function getSmallAValue() {\n return this.smallAValue;\n }\n /**\n * @param {nodeCallback<BigInteger>} callback Called with (err, largeAValue)\n * @returns {void}\n */\n ;\n\n _proto.getLargeAValue = function getLargeAValue(callback) {\n var _this = this;\n\n if (this.largeAValue) {\n callback(null, this.largeAValue);\n } else {\n this.calculateA(this.smallAValue, function (err, largeAValue) {\n if (err) {\n callback(err, null);\n }\n\n _this.largeAValue = largeAValue;\n callback(null, _this.largeAValue);\n });\n }\n }\n /**\n * helper function to generate a random big integer\n * @returns {BigInteger} a random value.\n * @private\n */\n ;\n\n _proto.generateRandomSmallA = function generateRandomSmallA() {\n // This will be interpreted as a postive 128-bit integer\n var hexRandom = randomBytes(128).toString('hex');\n var randomBigInt = new BigInteger(hexRandom, 16); // There is no need to do randomBigInt.mod(this.N - 1) as N (3072-bit) is > 128 bytes (1024-bit)\n\n return randomBigInt;\n }\n /**\n * helper function to generate a random string\n * @returns {string} a random value.\n * @private\n */\n ;\n\n _proto.generateRandomString = function generateRandomString() {\n return randomBytes(40).toString('base64');\n }\n /**\n * @returns {string} Generated random value included in password hash.\n */\n ;\n\n _proto.getRandomPassword = function getRandomPassword() {\n return this.randomPassword;\n }\n /**\n * @returns {string} Generated random value included in devices hash.\n */\n ;\n\n _proto.getSaltDevices = function getSaltDevices() {\n return this.SaltToHashDevices;\n }\n /**\n * @returns {string} Value used to verify devices.\n */\n ;\n\n _proto.getVerifierDevices = function getVerifierDevices() {\n return this.verifierDevices;\n }\n /**\n * Generate salts and compute verifier.\n * @param {string} deviceGroupKey Devices to generate verifier for.\n * @param {string} username User to generate verifier for.\n * @param {nodeCallback<null>} callback Called with (err, null)\n * @returns {void}\n */\n ;\n\n _proto.generateHashDevice = function generateHashDevice(deviceGroupKey, username, callback) {\n var _this2 = this;\n\n this.randomPassword = this.generateRandomString();\n var combinedString = \"\" + deviceGroupKey + username + \":\" + this.randomPassword;\n var hashedString = this.hash(combinedString);\n var hexRandom = randomBytes(16).toString('hex'); // The random hex will be unambiguously represented as a postive integer\n\n this.SaltToHashDevices = this.padHex(new BigInteger(hexRandom, 16));\n this.g.modPow(new BigInteger(this.hexHash(this.SaltToHashDevices + hashedString), 16), this.N, function (err, verifierDevicesNotPadded) {\n if (err) {\n callback(err, null);\n }\n\n _this2.verifierDevices = _this2.padHex(verifierDevicesNotPadded);\n callback(null, null);\n });\n }\n /**\n * Calculate the client's public value A = g^a%N\n * with the generated random number a\n * @param {BigInteger} a Randomly generated small A.\n * @param {nodeCallback<BigInteger>} callback Called with (err, largeAValue)\n * @returns {void}\n * @private\n */\n ;\n\n _proto.calculateA = function calculateA(a, callback) {\n var _this3 = this;\n\n this.g.modPow(a, this.N, function (err, A) {\n if (err) {\n callback(err, null);\n }\n\n if (A.mod(_this3.N).equals(BigInteger.ZERO)) {\n callback(new Error('Illegal paramater. A mod N cannot be 0.'), null);\n }\n\n callback(null, A);\n });\n }\n /**\n * Calculate the client's value U which is the hash of A and B\n * @param {BigInteger} A Large A value.\n * @param {BigInteger} B Server B value.\n * @returns {BigInteger} Computed U value.\n * @private\n */\n ;\n\n _proto.calculateU = function calculateU(A, B) {\n this.UHexHash = this.hexHash(this.padHex(A) + this.padHex(B));\n var finalU = new BigInteger(this.UHexHash, 16);\n return finalU;\n }\n /**\n * Calculate a hash from a bitArray\n * @param {Buffer} buf Value to hash.\n * @returns {String} Hex-encoded hash.\n * @private\n */\n ;\n\n _proto.hash = function hash(buf) {\n var str = buf instanceof Buffer ? CryptoJS.lib.WordArray.create(buf) : buf;\n var hashHex = SHA256(str).toString();\n return new Array(64 - hashHex.length).join('0') + hashHex;\n }\n /**\n * Calculate a hash from a hex string\n * @param {String} hexStr Value to hash.\n * @returns {String} Hex-encoded hash.\n * @private\n */\n ;\n\n _proto.hexHash = function hexHash(hexStr) {\n return this.hash(Buffer.from(hexStr, 'hex'));\n }\n /**\n * Standard hkdf algorithm\n * @param {Buffer} ikm Input key material.\n * @param {Buffer} salt Salt value.\n * @returns {Buffer} Strong key material.\n * @private\n */\n ;\n\n _proto.computehkdf = function computehkdf(ikm, salt) {\n var infoBitsWordArray = CryptoJS.lib.WordArray.create(Buffer.concat([this.infoBits, Buffer.from(String.fromCharCode(1), 'utf8')]));\n var ikmWordArray = ikm instanceof Buffer ? CryptoJS.lib.WordArray.create(ikm) : ikm;\n var saltWordArray = salt instanceof Buffer ? CryptoJS.lib.WordArray.create(salt) : salt;\n var prk = HmacSHA256(ikmWordArray, saltWordArray);\n var hmac = HmacSHA256(infoBitsWordArray, prk);\n return Buffer.from(hmac.toString(), 'hex').slice(0, 16);\n }\n /**\n * Calculates the final hkdf based on computed S value, and computed U value and the key\n * @param {String} username Username.\n * @param {String} password Password.\n * @param {BigInteger} serverBValue Server B value.\n * @param {BigInteger} salt Generated salt.\n * @param {nodeCallback<Buffer>} callback Called with (err, hkdfValue)\n * @returns {void}\n */\n ;\n\n _proto.getPasswordAuthenticationKey = function getPasswordAuthenticationKey(username, password, serverBValue, salt, callback) {\n var _this4 = this;\n\n if (serverBValue.mod(this.N).equals(BigInteger.ZERO)) {\n throw new Error('B cannot be zero.');\n }\n\n this.UValue = this.calculateU(this.largeAValue, serverBValue);\n\n if (this.UValue.equals(BigInteger.ZERO)) {\n throw new Error('U cannot be zero.');\n }\n\n var usernamePassword = \"\" + this.poolName + username + \":\" + password;\n var usernamePasswordHash = this.hash(usernamePassword);\n var xValue = new BigInteger(this.hexHash(this.padHex(salt) + usernamePasswordHash), 16);\n this.calculateS(xValue, serverBValue, function (err, sValue) {\n if (err) {\n callback(err, null);\n }\n\n var hkdf = _this4.computehkdf(Buffer.from(_this4.padHex(sValue), 'hex'), Buffer.from(_this4.padHex(_this4.UValue), 'hex'));\n\n callback(null, hkdf);\n });\n }\n /**\n * Calculates the S value used in getPasswordAuthenticationKey\n * @param {BigInteger} xValue Salted password hash value.\n * @param {BigInteger} serverBValue Server B value.\n * @param {nodeCallback<string>} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.calculateS = function calculateS(xValue, serverBValue, callback) {\n var _this5 = this;\n\n this.g.modPow(xValue, this.N, function (err, gModPowXN) {\n if (err) {\n callback(err, null);\n }\n\n var intValue2 = serverBValue.subtract(_this5.k.multiply(gModPowXN));\n intValue2.modPow(_this5.smallAValue.add(_this5.UValue.multiply(xValue)), _this5.N, function (err2, result) {\n if (err2) {\n callback(err2, null);\n }\n\n callback(null, result.mod(_this5.N));\n });\n });\n }\n /**\n * Return constant newPasswordRequiredChallengeUserAttributePrefix\n * @return {newPasswordRequiredChallengeUserAttributePrefix} constant prefix value\n */\n ;\n\n _proto.getNewPasswordRequiredChallengeUserAttributePrefix = function getNewPasswordRequiredChallengeUserAttributePrefix() {\n return newPasswordRequiredChallengeUserAttributePrefix;\n }\n /**\n * Returns an unambiguous, even-length hex string of the two's complement encoding of an integer.\n *\n * It is compatible with the hex encoding of Java's BigInteger's toByteArray(), wich returns a\n * byte array containing the two's-complement representation of a BigInteger. The array contains\n * the minimum number of bytes required to represent the BigInteger, including at least one sign bit.\n *\n * Examples showing how ambiguity is avoided by left padding with:\n * \t\"00\" (for positive values where the most-significant-bit is set)\n * \"FF\" (for negative values where the most-significant-bit is set)\n *\n * padHex(bigInteger.fromInt(-236)) === \"FF14\"\n * padHex(bigInteger.fromInt(20)) === \"14\"\n *\n * padHex(bigInteger.fromInt(-200)) === \"FF38\"\n * padHex(bigInteger.fromInt(56)) === \"38\"\n *\n * padHex(bigInteger.fromInt(-20)) === \"EC\"\n * padHex(bigInteger.fromInt(236)) === \"00EC\"\n *\n * padHex(bigInteger.fromInt(-56)) === \"C8\"\n * padHex(bigInteger.fromInt(200)) === \"00C8\"\n *\n * @param {BigInteger} bigInt Number to encode.\n * @returns {String} even-length hex string of the two's complement encoding.\n */\n ;\n\n _proto.padHex = function padHex(bigInt) {\n if (!(bigInt instanceof BigInteger)) {\n throw new Error('Not a BigInteger');\n }\n\n var isNegative = bigInt.compareTo(BigInteger.ZERO) < 0;\n /* Get a hex string for abs(bigInt) */\n\n var hexStr = bigInt.abs().toString(16);\n /* Pad hex to even length if needed */\n\n hexStr = hexStr.length % 2 !== 0 ? \"0\" + hexStr : hexStr;\n /* Prepend \"00\" if the most significant bit is set */\n\n hexStr = HEX_MSB_REGEX.test(hexStr) ? \"00\" + hexStr : hexStr;\n\n if (isNegative) {\n /* Flip the bits of the representation */\n var invertedNibbles = hexStr.split('').map(function (x) {\n var invertedNibble = ~parseInt(x, 16) & 0xf;\n return '0123456789ABCDEF'.charAt(invertedNibble);\n }).join('');\n /* After flipping the bits, add one to get the 2's complement representation */\n\n var flippedBitsBI = new BigInteger(invertedNibbles, 16).add(BigInteger.ONE);\n hexStr = flippedBitsBI.toString(16);\n /*\n For hex strings starting with 'FF8', 'FF' can be dropped, e.g. 0xFFFF80=0xFF80=0x80=-128\n \t\tAny sequence of '1' bits on the left can always be substituted with a single '1' bit\n without changing the represented value.\n \t\tThis only happens in the case when the input is 80...00\n */\n\n if (hexStr.toUpperCase().startsWith('FF8')) {\n hexStr = hexStr.substring(2);\n }\n }\n\n return hexStr;\n };\n\n return AuthenticationHelper;\n}();\n\nexport { AuthenticationHelper as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { Buffer } from 'buffer';\n/** @class */\n\nvar CognitoJwtToken = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoJwtToken object\n * @param {string=} token The JWT token.\n */\n function CognitoJwtToken(token) {\n // Assign object\n this.jwtToken = token || '';\n this.payload = this.decodePayload();\n }\n /**\n * @returns {string} the record's token.\n */\n\n\n var _proto = CognitoJwtToken.prototype;\n\n _proto.getJwtToken = function getJwtToken() {\n return this.jwtToken;\n }\n /**\n * @returns {int} the token's expiration (exp member).\n */\n ;\n\n _proto.getExpiration = function getExpiration() {\n return this.payload.exp;\n }\n /**\n * @returns {int} the token's \"issued at\" (iat member).\n */\n ;\n\n _proto.getIssuedAt = function getIssuedAt() {\n return this.payload.iat;\n }\n /**\n * @returns {object} the token's payload.\n */\n ;\n\n _proto.decodePayload = function decodePayload() {\n var payload = this.jwtToken.split('.')[1];\n\n try {\n return JSON.parse(Buffer.from(payload, 'base64').toString('utf8'));\n } catch (err) {\n return {};\n }\n };\n\n return CognitoJwtToken;\n}();\n\nexport { CognitoJwtToken as default };","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport CognitoJwtToken from './CognitoJwtToken';\n/** @class */\n\nvar CognitoAccessToken = /*#__PURE__*/function (_CognitoJwtToken) {\n _inheritsLoose(CognitoAccessToken, _CognitoJwtToken);\n\n /**\n * Constructs a new CognitoAccessToken object\n * @param {string=} AccessToken The JWT access token.\n */\n function CognitoAccessToken(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n AccessToken = _ref.AccessToken;\n\n return _CognitoJwtToken.call(this, AccessToken || '') || this;\n }\n\n return CognitoAccessToken;\n}(CognitoJwtToken);\n\nexport { CognitoAccessToken as default };","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport CognitoJwtToken from './CognitoJwtToken';\n/** @class */\n\nvar CognitoIdToken = /*#__PURE__*/function (_CognitoJwtToken) {\n _inheritsLoose(CognitoIdToken, _CognitoJwtToken);\n\n /**\n * Constructs a new CognitoIdToken object\n * @param {string=} IdToken The JWT Id token\n */\n function CognitoIdToken(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n IdToken = _ref.IdToken;\n\n return _CognitoJwtToken.call(this, IdToken || '') || this;\n }\n\n return CognitoIdToken;\n}(CognitoJwtToken);\n\nexport { CognitoIdToken as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/** @class */\nvar CognitoRefreshToken = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoRefreshToken object\n * @param {string=} RefreshToken The JWT refresh token.\n */\n function CognitoRefreshToken(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n RefreshToken = _ref.RefreshToken;\n\n // Assign object\n this.token = RefreshToken || '';\n }\n /**\n * @returns {string} the record's token.\n */\n\n\n var _proto = CognitoRefreshToken.prototype;\n\n _proto.getToken = function getToken() {\n return this.token;\n };\n\n return CognitoRefreshToken;\n}();\n\nexport { CognitoRefreshToken as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/** @class */\nvar CognitoUserSession = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUserSession object\n * @param {CognitoIdToken} IdToken The session's Id token.\n * @param {CognitoRefreshToken=} RefreshToken The session's refresh token.\n * @param {CognitoAccessToken} AccessToken The session's access token.\n * @param {int} ClockDrift The saved computer's clock drift or undefined to force calculation.\n */\n function CognitoUserSession(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n IdToken = _ref.IdToken,\n RefreshToken = _ref.RefreshToken,\n AccessToken = _ref.AccessToken,\n ClockDrift = _ref.ClockDrift;\n\n if (AccessToken == null || IdToken == null) {\n throw new Error('Id token and Access Token must be present.');\n }\n\n this.idToken = IdToken;\n this.refreshToken = RefreshToken;\n this.accessToken = AccessToken;\n this.clockDrift = ClockDrift === undefined ? this.calculateClockDrift() : ClockDrift;\n }\n /**\n * @returns {CognitoIdToken} the session's Id token\n */\n\n\n var _proto = CognitoUserSession.prototype;\n\n _proto.getIdToken = function getIdToken() {\n return this.idToken;\n }\n /**\n * @returns {CognitoRefreshToken} the session's refresh token\n */\n ;\n\n _proto.getRefreshToken = function getRefreshToken() {\n return this.refreshToken;\n }\n /**\n * @returns {CognitoAccessToken} the session's access token\n */\n ;\n\n _proto.getAccessToken = function getAccessToken() {\n return this.accessToken;\n }\n /**\n * @returns {int} the session's clock drift\n */\n ;\n\n _proto.getClockDrift = function getClockDrift() {\n return this.clockDrift;\n }\n /**\n * @returns {int} the computer's clock drift\n */\n ;\n\n _proto.calculateClockDrift = function calculateClockDrift() {\n var now = Math.floor(new Date() / 1000);\n var iat = Math.min(this.accessToken.getIssuedAt(), this.idToken.getIssuedAt());\n return now - iat;\n }\n /**\n * Checks to see if the session is still valid based on session expiry information found\n * in tokens and the current time (adjusted with clock drift)\n * @returns {boolean} if the session is still valid\n */\n ;\n\n _proto.isValid = function isValid() {\n var now = Math.floor(new Date() / 1000);\n var adjusted = now - this.clockDrift;\n return adjusted < this.accessToken.getExpiration() && adjusted < this.idToken.getExpiration();\n };\n\n return CognitoUserSession;\n}();\n\nexport { CognitoUserSession as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nvar monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nvar weekNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n/** @class */\n\nvar DateHelper = /*#__PURE__*/function () {\n function DateHelper() {}\n\n var _proto = DateHelper.prototype;\n\n /**\n * @returns {string} The current time in \"ddd MMM D HH:mm:ss UTC YYYY\" format.\n */\n _proto.getNowString = function getNowString() {\n var now = new Date();\n var weekDay = weekNames[now.getUTCDay()];\n var month = monthNames[now.getUTCMonth()];\n var day = now.getUTCDate();\n var hours = now.getUTCHours();\n\n if (hours < 10) {\n hours = \"0\" + hours;\n }\n\n var minutes = now.getUTCMinutes();\n\n if (minutes < 10) {\n minutes = \"0\" + minutes;\n }\n\n var seconds = now.getUTCSeconds();\n\n if (seconds < 10) {\n seconds = \"0\" + seconds;\n }\n\n var year = now.getUTCFullYear(); // ddd MMM D HH:mm:ss UTC YYYY\n\n var dateNow = weekDay + \" \" + month + \" \" + day + \" \" + hours + \":\" + minutes + \":\" + seconds + \" UTC \" + year;\n return dateNow;\n };\n\n return DateHelper;\n}();\n\nexport { DateHelper as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/** @class */\nvar CognitoUserAttribute = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUserAttribute object\n * @param {string=} Name The record's name\n * @param {string=} Value The record's value\n */\n function CognitoUserAttribute(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n Name = _ref.Name,\n Value = _ref.Value;\n\n this.Name = Name || '';\n this.Value = Value || '';\n }\n /**\n * @returns {string} the record's value.\n */\n\n\n var _proto = CognitoUserAttribute.prototype;\n\n _proto.getValue = function getValue() {\n return this.Value;\n }\n /**\n * Sets the record's value.\n * @param {string} value The new value.\n * @returns {CognitoUserAttribute} The record for method chaining.\n */\n ;\n\n _proto.setValue = function setValue(value) {\n this.Value = value;\n return this;\n }\n /**\n * @returns {string} the record's name.\n */\n ;\n\n _proto.getName = function getName() {\n return this.Name;\n }\n /**\n * Sets the record's name\n * @param {string} name The new name.\n * @returns {CognitoUserAttribute} The record for method chaining.\n */\n ;\n\n _proto.setName = function setName(name) {\n this.Name = name;\n return this;\n }\n /**\n * @returns {string} a string representation of the record.\n */\n ;\n\n _proto.toString = function toString() {\n return JSON.stringify(this);\n }\n /**\n * @returns {object} a flat object representing the record.\n */\n ;\n\n _proto.toJSON = function toJSON() {\n return {\n Name: this.Name,\n Value: this.Value\n };\n };\n\n return CognitoUserAttribute;\n}();\n\nexport { CognitoUserAttribute as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nvar dataMemory = {};\n/** @class */\n\nexport var MemoryStorage = /*#__PURE__*/function () {\n function MemoryStorage() {}\n\n /**\n * This is used to set a specific item in storage\n * @param {string} key - the key for the item\n * @param {object} value - the value\n * @returns {string} value that was set\n */\n MemoryStorage.setItem = function setItem(key, value) {\n dataMemory[key] = value;\n return dataMemory[key];\n }\n /**\n * This is used to get a specific key from storage\n * @param {string} key - the key for the item\n * This is used to clear the storage\n * @returns {string} the data item\n */\n ;\n\n MemoryStorage.getItem = function getItem(key) {\n return Object.prototype.hasOwnProperty.call(dataMemory, key) ? dataMemory[key] : undefined;\n }\n /**\n * This is used to remove an item from storage\n * @param {string} key - the key being set\n * @returns {boolean} return true\n */\n ;\n\n MemoryStorage.removeItem = function removeItem(key) {\n return delete dataMemory[key];\n }\n /**\n * This is used to clear the storage\n * @returns {string} nothing\n */\n ;\n\n MemoryStorage.clear = function clear() {\n dataMemory = {};\n return dataMemory;\n };\n\n return MemoryStorage;\n}();\n/** @class */\n\nvar StorageHelper = /*#__PURE__*/function () {\n /**\n * This is used to get a storage object\n * @returns {object} the storage\n */\n function StorageHelper() {\n try {\n this.storageWindow = window.localStorage;\n this.storageWindow.setItem('aws.cognito.test-ls', 1);\n this.storageWindow.removeItem('aws.cognito.test-ls');\n } catch (exception) {\n this.storageWindow = MemoryStorage;\n }\n }\n /**\n * This is used to return the storage\n * @returns {object} the storage\n */\n\n\n var _proto = StorageHelper.prototype;\n\n _proto.getStorage = function getStorage() {\n return this.storageWindow;\n };\n\n return StorageHelper;\n}();\n\nexport { StorageHelper as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { Buffer } from 'buffer';\nimport CryptoJS from 'crypto-js/core';\nimport TypedArrays from 'crypto-js/lib-typedarrays'; // necessary for crypto js\n\nimport Base64 from 'crypto-js/enc-base64';\nimport HmacSHA256 from 'crypto-js/hmac-sha256';\nimport BigInteger from './BigInteger';\nimport AuthenticationHelper from './AuthenticationHelper';\nimport CognitoAccessToken from './CognitoAccessToken';\nimport CognitoIdToken from './CognitoIdToken';\nimport CognitoRefreshToken from './CognitoRefreshToken';\nimport CognitoUserSession from './CognitoUserSession';\nimport DateHelper from './DateHelper';\nimport CognitoUserAttribute from './CognitoUserAttribute';\nimport StorageHelper from './StorageHelper';\n/**\n * @callback nodeCallback\n * @template T result\n * @param {*} err The operation failure reason, or null.\n * @param {T} result The operation result.\n */\n\n/**\n * @callback onFailure\n * @param {*} err Failure reason.\n */\n\n/**\n * @callback onSuccess\n * @template T result\n * @param {T} result The operation result.\n */\n\n/**\n * @callback mfaRequired\n * @param {*} details MFA challenge details.\n */\n\n/**\n * @callback customChallenge\n * @param {*} details Custom challenge details.\n */\n\n/**\n * @callback inputVerificationCode\n * @param {*} data Server response.\n */\n\n/**\n * @callback authSuccess\n * @param {CognitoUserSession} session The new session.\n * @param {bool=} userConfirmationNecessary User must be confirmed.\n */\n\nvar isBrowser = typeof navigator !== 'undefined';\nvar userAgent = isBrowser ? navigator.userAgent : 'nodejs';\n/** @class */\n\nvar CognitoUser = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUser object\n * @param {object} data Creation options\n * @param {string} data.Username The user's username.\n * @param {CognitoUserPool} data.Pool Pool containing the user.\n * @param {object} data.Storage Optional storage object.\n */\n function CognitoUser(data) {\n if (data == null || data.Username == null || data.Pool == null) {\n throw new Error('Username and Pool information are required.');\n }\n\n this.username = data.Username || '';\n this.pool = data.Pool;\n this.Session = null;\n this.client = data.Pool.client;\n this.signInUserSession = null;\n this.authenticationFlowType = 'USER_SRP_AUTH';\n this.storage = data.Storage || new StorageHelper().getStorage();\n this.keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n this.userDataKey = this.keyPrefix + \".\" + this.username + \".userData\";\n }\n /**\n * Sets the session for this user\n * @param {CognitoUserSession} signInUserSession the session\n * @returns {void}\n */\n\n\n var _proto = CognitoUser.prototype;\n\n _proto.setSignInUserSession = function setSignInUserSession(signInUserSession) {\n this.clearCachedUserData();\n this.signInUserSession = signInUserSession;\n this.cacheTokens();\n }\n /**\n * @returns {CognitoUserSession} the current session for this user\n */\n ;\n\n _proto.getSignInUserSession = function getSignInUserSession() {\n return this.signInUserSession;\n }\n /**\n * @returns {string} the user's username\n */\n ;\n\n _proto.getUsername = function getUsername() {\n return this.username;\n }\n /**\n * @returns {String} the authentication flow type\n */\n ;\n\n _proto.getAuthenticationFlowType = function getAuthenticationFlowType() {\n return this.authenticationFlowType;\n }\n /**\n * sets authentication flow type\n * @param {string} authenticationFlowType New value.\n * @returns {void}\n */\n ;\n\n _proto.setAuthenticationFlowType = function setAuthenticationFlowType(authenticationFlowType) {\n this.authenticationFlowType = authenticationFlowType;\n }\n /**\n * This is used for authenticating the user through the custom authentication flow.\n * @param {AuthenticationDetails} authDetails Contains the authentication data\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */\n ;\n\n _proto.initiateAuth = function initiateAuth(authDetails, callback) {\n var _this = this;\n\n var authParameters = authDetails.getAuthParameters();\n authParameters.USERNAME = this.username;\n var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n var jsonReq = {\n AuthFlow: 'CUSTOM_AUTH',\n ClientId: this.pool.getClientId(),\n AuthParameters: authParameters,\n ClientMetadata: clientMetaData\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('InitiateAuth', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n var challengeName = data.ChallengeName;\n var challengeParameters = data.ChallengeParameters;\n\n if (challengeName === 'CUSTOM_CHALLENGE') {\n _this.Session = data.Session;\n return callback.customChallenge(challengeParameters);\n }\n\n _this.signInUserSession = _this.getCognitoUserSession(data.AuthenticationResult);\n\n _this.cacheTokens();\n\n return callback.onSuccess(_this.signInUserSession);\n });\n }\n /**\n * This is used for authenticating the user.\n * stuff\n * @param {AuthenticationDetails} authDetails Contains the authentication data\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {newPasswordRequired} callback.newPasswordRequired new\n * password and any required attributes are required to continue\n * @param {mfaRequired} callback.mfaRequired MFA code\n * required to continue.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */\n ;\n\n _proto.authenticateUser = function authenticateUser(authDetails, callback) {\n if (this.authenticationFlowType === 'USER_PASSWORD_AUTH') {\n return this.authenticateUserPlainUsernamePassword(authDetails, callback);\n } else if (this.authenticationFlowType === 'USER_SRP_AUTH' || this.authenticationFlowType === 'CUSTOM_AUTH') {\n return this.authenticateUserDefaultAuth(authDetails, callback);\n }\n\n return callback.onFailure(new Error('Authentication flow type is invalid.'));\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n * It calls the AuthenticationHelper for SRP related\n * stuff\n * @param {AuthenticationDetails} authDetails Contains the authentication data\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {newPasswordRequired} callback.newPasswordRequired new\n * password and any required attributes are required to continue\n * @param {mfaRequired} callback.mfaRequired MFA code\n * required to continue.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */\n ;\n\n _proto.authenticateUserDefaultAuth = function authenticateUserDefaultAuth(authDetails, callback) {\n var _this2 = this;\n\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolId().split('_')[1]);\n var dateHelper = new DateHelper();\n var serverBValue;\n var salt;\n var authParameters = {};\n\n if (this.deviceKey != null) {\n authParameters.DEVICE_KEY = this.deviceKey;\n }\n\n authParameters.USERNAME = this.username;\n authenticationHelper.getLargeAValue(function (errOnAValue, aValue) {\n // getLargeAValue callback start\n if (errOnAValue) {\n callback.onFailure(errOnAValue);\n }\n\n authParameters.SRP_A = aValue.toString(16);\n\n if (_this2.authenticationFlowType === 'CUSTOM_AUTH') {\n authParameters.CHALLENGE_NAME = 'SRP_A';\n }\n\n var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n var jsonReq = {\n AuthFlow: _this2.authenticationFlowType,\n ClientId: _this2.pool.getClientId(),\n AuthParameters: authParameters,\n ClientMetadata: clientMetaData\n };\n\n if (_this2.getUserContextData(_this2.username)) {\n jsonReq.UserContextData = _this2.getUserContextData(_this2.username);\n }\n\n _this2.client.request('InitiateAuth', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n var challengeParameters = data.ChallengeParameters;\n _this2.username = challengeParameters.USER_ID_FOR_SRP;\n _this2.userDataKey = _this2.keyPrefix + \".\" + _this2.username + \".userData\";\n serverBValue = new BigInteger(challengeParameters.SRP_B, 16);\n salt = new BigInteger(challengeParameters.SALT, 16);\n\n _this2.getCachedDeviceKeyAndPassword();\n\n authenticationHelper.getPasswordAuthenticationKey(_this2.username, authDetails.getPassword(), serverBValue, salt, function (errOnHkdf, hkdf) {\n // getPasswordAuthenticationKey callback start\n if (errOnHkdf) {\n callback.onFailure(errOnHkdf);\n }\n\n var dateNow = dateHelper.getNowString();\n var message = CryptoJS.lib.WordArray.create(Buffer.concat([Buffer.from(_this2.pool.getUserPoolId().split('_')[1], 'utf8'), Buffer.from(_this2.username, 'utf8'), Buffer.from(challengeParameters.SECRET_BLOCK, 'base64'), Buffer.from(dateNow, 'utf8')]));\n var key = CryptoJS.lib.WordArray.create(hkdf);\n var signatureString = Base64.stringify(HmacSHA256(message, key));\n var challengeResponses = {};\n challengeResponses.USERNAME = _this2.username;\n challengeResponses.PASSWORD_CLAIM_SECRET_BLOCK = challengeParameters.SECRET_BLOCK;\n challengeResponses.TIMESTAMP = dateNow;\n challengeResponses.PASSWORD_CLAIM_SIGNATURE = signatureString;\n\n if (_this2.deviceKey != null) {\n challengeResponses.DEVICE_KEY = _this2.deviceKey;\n }\n\n var respondToAuthChallenge = function respondToAuthChallenge(challenge, challengeCallback) {\n return _this2.client.request('RespondToAuthChallenge', challenge, function (errChallenge, dataChallenge) {\n if (errChallenge && errChallenge.code === 'ResourceNotFoundException' && errChallenge.message.toLowerCase().indexOf('device') !== -1) {\n challengeResponses.DEVICE_KEY = null;\n _this2.deviceKey = null;\n _this2.randomPassword = null;\n _this2.deviceGroupKey = null;\n\n _this2.clearCachedDeviceKeyAndPassword();\n\n return respondToAuthChallenge(challenge, challengeCallback);\n }\n\n return challengeCallback(errChallenge, dataChallenge);\n });\n };\n\n var jsonReqResp = {\n ChallengeName: 'PASSWORD_VERIFIER',\n ClientId: _this2.pool.getClientId(),\n ChallengeResponses: challengeResponses,\n Session: data.Session,\n ClientMetadata: clientMetaData\n };\n\n if (_this2.getUserContextData()) {\n jsonReqResp.UserContextData = _this2.getUserContextData();\n }\n\n respondToAuthChallenge(jsonReqResp, function (errAuthenticate, dataAuthenticate) {\n if (errAuthenticate) {\n return callback.onFailure(errAuthenticate);\n }\n\n return _this2.authenticateUserInternal(dataAuthenticate, authenticationHelper, callback);\n });\n return undefined; // getPasswordAuthenticationKey callback end\n });\n return undefined;\n }); // getLargeAValue callback end\n\n });\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n * @param {AuthenticationDetails} authDetails Contains the authentication data.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {mfaRequired} callback.mfaRequired MFA code\n * required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */\n ;\n\n _proto.authenticateUserPlainUsernamePassword = function authenticateUserPlainUsernamePassword(authDetails, callback) {\n var _this3 = this;\n\n var authParameters = {};\n authParameters.USERNAME = this.username;\n authParameters.PASSWORD = authDetails.getPassword();\n\n if (!authParameters.PASSWORD) {\n callback.onFailure(new Error('PASSWORD parameter is required'));\n return;\n }\n\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolId().split('_')[1]);\n this.getCachedDeviceKeyAndPassword();\n\n if (this.deviceKey != null) {\n authParameters.DEVICE_KEY = this.deviceKey;\n }\n\n var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n var jsonReq = {\n AuthFlow: 'USER_PASSWORD_AUTH',\n ClientId: this.pool.getClientId(),\n AuthParameters: authParameters,\n ClientMetadata: clientMetaData\n };\n\n if (this.getUserContextData(this.username)) {\n jsonReq.UserContextData = this.getUserContextData(this.username);\n } // USER_PASSWORD_AUTH happens in a single round-trip: client sends userName and password,\n // Cognito UserPools verifies password and returns tokens.\n\n\n this.client.request('InitiateAuth', jsonReq, function (err, authResult) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return _this3.authenticateUserInternal(authResult, authenticationHelper, callback);\n });\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n * @param {object} dataAuthenticate authentication data\n * @param {object} authenticationHelper helper created\n * @param {callback} callback passed on from caller\n * @returns {void}\n */\n ;\n\n _proto.authenticateUserInternal = function authenticateUserInternal(dataAuthenticate, authenticationHelper, callback) {\n var _this4 = this;\n\n var challengeName = dataAuthenticate.ChallengeName;\n var challengeParameters = dataAuthenticate.ChallengeParameters;\n\n if (challengeName === 'SMS_MFA') {\n this.Session = dataAuthenticate.Session;\n return callback.mfaRequired(challengeName, challengeParameters);\n }\n\n if (challengeName === 'SELECT_MFA_TYPE') {\n this.Session = dataAuthenticate.Session;\n return callback.selectMFAType(challengeName, challengeParameters);\n }\n\n if (challengeName === 'MFA_SETUP') {\n this.Session = dataAuthenticate.Session;\n return callback.mfaSetup(challengeName, challengeParameters);\n }\n\n if (challengeName === 'SOFTWARE_TOKEN_MFA') {\n this.Session = dataAuthenticate.Session;\n return callback.totpRequired(challengeName, challengeParameters);\n }\n\n if (challengeName === 'CUSTOM_CHALLENGE') {\n this.Session = dataAuthenticate.Session;\n return callback.customChallenge(challengeParameters);\n }\n\n if (challengeName === 'NEW_PASSWORD_REQUIRED') {\n this.Session = dataAuthenticate.Session;\n var userAttributes = null;\n var rawRequiredAttributes = null;\n var requiredAttributes = [];\n var userAttributesPrefix = authenticationHelper.getNewPasswordRequiredChallengeUserAttributePrefix();\n\n if (challengeParameters) {\n userAttributes = JSON.parse(dataAuthenticate.ChallengeParameters.userAttributes);\n rawRequiredAttributes = JSON.parse(dataAuthenticate.ChallengeParameters.requiredAttributes);\n }\n\n if (rawRequiredAttributes) {\n for (var i = 0; i < rawRequiredAttributes.length; i++) {\n requiredAttributes[i] = rawRequiredAttributes[i].substr(userAttributesPrefix.length);\n }\n }\n\n return callback.newPasswordRequired(userAttributes, requiredAttributes);\n }\n\n if (challengeName === 'DEVICE_SRP_AUTH') {\n this.Session = dataAuthenticate.Session;\n this.getDeviceResponse(callback);\n return undefined;\n }\n\n this.signInUserSession = this.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n this.challengeName = challengeName;\n this.cacheTokens();\n var newDeviceMetadata = dataAuthenticate.AuthenticationResult.NewDeviceMetadata;\n\n if (newDeviceMetadata == null) {\n return callback.onSuccess(this.signInUserSession);\n }\n\n authenticationHelper.generateHashDevice(dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey, dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey, function (errGenHash) {\n if (errGenHash) {\n return callback.onFailure(errGenHash);\n }\n\n var deviceSecretVerifierConfig = {\n Salt: Buffer.from(authenticationHelper.getSaltDevices(), 'hex').toString('base64'),\n PasswordVerifier: Buffer.from(authenticationHelper.getVerifierDevices(), 'hex').toString('base64')\n };\n _this4.verifierDevices = deviceSecretVerifierConfig.PasswordVerifier;\n _this4.deviceGroupKey = newDeviceMetadata.DeviceGroupKey;\n _this4.randomPassword = authenticationHelper.getRandomPassword();\n\n _this4.client.request('ConfirmDevice', {\n DeviceKey: newDeviceMetadata.DeviceKey,\n AccessToken: _this4.signInUserSession.getAccessToken().getJwtToken(),\n DeviceSecretVerifierConfig: deviceSecretVerifierConfig,\n DeviceName: userAgent\n }, function (errConfirm, dataConfirm) {\n if (errConfirm) {\n return callback.onFailure(errConfirm);\n }\n\n _this4.deviceKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey;\n\n _this4.cacheDeviceKeyAndPassword();\n\n if (dataConfirm.UserConfirmationNecessary === true) {\n return callback.onSuccess(_this4.signInUserSession, dataConfirm.UserConfirmationNecessary);\n }\n\n return callback.onSuccess(_this4.signInUserSession);\n });\n\n return undefined;\n });\n return undefined;\n }\n /**\n * This method is user to complete the NEW_PASSWORD_REQUIRED challenge.\n * Pass the new password with any new user attributes to be updated.\n * User attribute keys must be of format userAttributes.<attribute_name>.\n * @param {string} newPassword new password for this user\n * @param {object} requiredAttributeData map with values for all required attributes\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {mfaRequired} callback.mfaRequired MFA code required to continue.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.completeNewPasswordChallenge = function completeNewPasswordChallenge(newPassword, requiredAttributeData, callback, clientMetadata) {\n var _this5 = this;\n\n if (!newPassword) {\n return callback.onFailure(new Error('New password is required.'));\n }\n\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolId().split('_')[1]);\n var userAttributesPrefix = authenticationHelper.getNewPasswordRequiredChallengeUserAttributePrefix();\n var finalUserAttributes = {};\n\n if (requiredAttributeData) {\n Object.keys(requiredAttributeData).forEach(function (key) {\n finalUserAttributes[userAttributesPrefix + key] = requiredAttributeData[key];\n });\n }\n\n finalUserAttributes.NEW_PASSWORD = newPassword;\n finalUserAttributes.USERNAME = this.username;\n var jsonReq = {\n ChallengeName: 'NEW_PASSWORD_REQUIRED',\n ClientId: this.pool.getClientId(),\n ChallengeResponses: finalUserAttributes,\n Session: this.Session,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('RespondToAuthChallenge', jsonReq, function (errAuthenticate, dataAuthenticate) {\n if (errAuthenticate) {\n return callback.onFailure(errAuthenticate);\n }\n\n return _this5.authenticateUserInternal(dataAuthenticate, authenticationHelper, callback);\n });\n return undefined;\n }\n /**\n * This is used to get a session using device authentication. It is called at the end of user\n * authentication\n *\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n * @private\n */\n ;\n\n _proto.getDeviceResponse = function getDeviceResponse(callback, clientMetadata) {\n var _this6 = this;\n\n var authenticationHelper = new AuthenticationHelper(this.deviceGroupKey);\n var dateHelper = new DateHelper();\n var authParameters = {};\n authParameters.USERNAME = this.username;\n authParameters.DEVICE_KEY = this.deviceKey;\n authenticationHelper.getLargeAValue(function (errAValue, aValue) {\n // getLargeAValue callback start\n if (errAValue) {\n callback.onFailure(errAValue);\n }\n\n authParameters.SRP_A = aValue.toString(16);\n var jsonReq = {\n ChallengeName: 'DEVICE_SRP_AUTH',\n ClientId: _this6.pool.getClientId(),\n ChallengeResponses: authParameters,\n ClientMetadata: clientMetadata,\n Session: _this6.Session\n };\n\n if (_this6.getUserContextData()) {\n jsonReq.UserContextData = _this6.getUserContextData();\n }\n\n _this6.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n var challengeParameters = data.ChallengeParameters;\n var serverBValue = new BigInteger(challengeParameters.SRP_B, 16);\n var salt = new BigInteger(challengeParameters.SALT, 16);\n authenticationHelper.getPasswordAuthenticationKey(_this6.deviceKey, _this6.randomPassword, serverBValue, salt, function (errHkdf, hkdf) {\n // getPasswordAuthenticationKey callback start\n if (errHkdf) {\n return callback.onFailure(errHkdf);\n }\n\n var dateNow = dateHelper.getNowString();\n var message = CryptoJS.lib.WordArray.create(Buffer.concat([Buffer.from(_this6.deviceGroupKey, 'utf8'), Buffer.from(_this6.deviceKey, 'utf8'), Buffer.from(challengeParameters.SECRET_BLOCK, 'base64'), Buffer.from(dateNow, 'utf8')]));\n var key = CryptoJS.lib.WordArray.create(hkdf);\n var signatureString = Base64.stringify(HmacSHA256(message, key));\n var challengeResponses = {};\n challengeResponses.USERNAME = _this6.username;\n challengeResponses.PASSWORD_CLAIM_SECRET_BLOCK = challengeParameters.SECRET_BLOCK;\n challengeResponses.TIMESTAMP = dateNow;\n challengeResponses.PASSWORD_CLAIM_SIGNATURE = signatureString;\n challengeResponses.DEVICE_KEY = _this6.deviceKey;\n var jsonReqResp = {\n ChallengeName: 'DEVICE_PASSWORD_VERIFIER',\n ClientId: _this6.pool.getClientId(),\n ChallengeResponses: challengeResponses,\n Session: data.Session\n };\n\n if (_this6.getUserContextData()) {\n jsonReqResp.UserContextData = _this6.getUserContextData();\n }\n\n _this6.client.request('RespondToAuthChallenge', jsonReqResp, function (errAuthenticate, dataAuthenticate) {\n if (errAuthenticate) {\n return callback.onFailure(errAuthenticate);\n }\n\n _this6.signInUserSession = _this6.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n\n _this6.cacheTokens();\n\n return callback.onSuccess(_this6.signInUserSession);\n });\n\n return undefined; // getPasswordAuthenticationKey callback end\n });\n return undefined;\n }); // getLargeAValue callback end\n\n });\n }\n /**\n * This is used for a certain user to confirm the registration by using a confirmation code\n * @param {string} confirmationCode Code entered by user.\n * @param {bool} forceAliasCreation Allow migrating from an existing email / phone number.\n * @param {nodeCallback<string>} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.confirmRegistration = function confirmRegistration(confirmationCode, forceAliasCreation, callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n ConfirmationCode: confirmationCode,\n Username: this.username,\n ForceAliasCreation: forceAliasCreation,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('ConfirmSignUp', jsonReq, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n }\n /**\n * This is used by the user once he has the responses to a custom challenge\n * @param {string} answerChallenge The custom challenge answer.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {customChallenge} callback.customChallenge\n * Custom challenge response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.sendCustomChallengeAnswer = function sendCustomChallengeAnswer(answerChallenge, callback, clientMetadata) {\n var _this7 = this;\n\n var challengeResponses = {};\n challengeResponses.USERNAME = this.username;\n challengeResponses.ANSWER = answerChallenge;\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolId().split('_')[1]);\n this.getCachedDeviceKeyAndPassword();\n\n if (this.deviceKey != null) {\n challengeResponses.DEVICE_KEY = this.deviceKey;\n }\n\n var jsonReq = {\n ChallengeName: 'CUSTOM_CHALLENGE',\n ChallengeResponses: challengeResponses,\n ClientId: this.pool.getClientId(),\n Session: this.Session,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return _this7.authenticateUserInternal(data, authenticationHelper, callback);\n });\n }\n /**\n * This is used by the user once he has an MFA code\n * @param {string} confirmationCode The MFA code entered by the user.\n * @param {object} callback Result callback map.\n * @param {string} mfaType The mfa we are replying to.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.sendMFACode = function sendMFACode(confirmationCode, callback, mfaType, clientMetadata) {\n var _this8 = this;\n\n var challengeResponses = {};\n challengeResponses.USERNAME = this.username;\n challengeResponses.SMS_MFA_CODE = confirmationCode;\n var mfaTypeSelection = mfaType || 'SMS_MFA';\n\n if (mfaTypeSelection === 'SOFTWARE_TOKEN_MFA') {\n challengeResponses.SOFTWARE_TOKEN_MFA_CODE = confirmationCode;\n }\n\n if (this.deviceKey != null) {\n challengeResponses.DEVICE_KEY = this.deviceKey;\n }\n\n var jsonReq = {\n ChallengeName: mfaTypeSelection,\n ChallengeResponses: challengeResponses,\n ClientId: this.pool.getClientId(),\n Session: this.Session,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('RespondToAuthChallenge', jsonReq, function (err, dataAuthenticate) {\n if (err) {\n return callback.onFailure(err);\n }\n\n var challengeName = dataAuthenticate.ChallengeName;\n\n if (challengeName === 'DEVICE_SRP_AUTH') {\n _this8.getDeviceResponse(callback);\n\n return undefined;\n }\n\n _this8.signInUserSession = _this8.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n\n _this8.cacheTokens();\n\n if (dataAuthenticate.AuthenticationResult.NewDeviceMetadata == null) {\n return callback.onSuccess(_this8.signInUserSession);\n }\n\n var authenticationHelper = new AuthenticationHelper(_this8.pool.getUserPoolId().split('_')[1]);\n authenticationHelper.generateHashDevice(dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey, dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey, function (errGenHash) {\n if (errGenHash) {\n return callback.onFailure(errGenHash);\n }\n\n var deviceSecretVerifierConfig = {\n Salt: Buffer.from(authenticationHelper.getSaltDevices(), 'hex').toString('base64'),\n PasswordVerifier: Buffer.from(authenticationHelper.getVerifierDevices(), 'hex').toString('base64')\n };\n _this8.verifierDevices = deviceSecretVerifierConfig.PasswordVerifier;\n _this8.deviceGroupKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey;\n _this8.randomPassword = authenticationHelper.getRandomPassword();\n\n _this8.client.request('ConfirmDevice', {\n DeviceKey: dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey,\n AccessToken: _this8.signInUserSession.getAccessToken().getJwtToken(),\n DeviceSecretVerifierConfig: deviceSecretVerifierConfig,\n DeviceName: userAgent\n }, function (errConfirm, dataConfirm) {\n if (errConfirm) {\n return callback.onFailure(errConfirm);\n }\n\n _this8.deviceKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey;\n\n _this8.cacheDeviceKeyAndPassword();\n\n if (dataConfirm.UserConfirmationNecessary === true) {\n return callback.onSuccess(_this8.signInUserSession, dataConfirm.UserConfirmationNecessary);\n }\n\n return callback.onSuccess(_this8.signInUserSession);\n });\n\n return undefined;\n });\n return undefined;\n });\n }\n /**\n * This is used by an authenticated user to change the current password\n * @param {string} oldUserPassword The current password.\n * @param {string} newUserPassword The requested new password.\n * @param {nodeCallback<string>} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.changePassword = function changePassword(oldUserPassword, newUserPassword, callback, clientMetadata) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('ChangePassword', {\n PreviousPassword: oldUserPassword,\n ProposedPassword: newUserPassword,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n ClientMetadata: clientMetadata\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to enable MFA for itself\n * @deprecated\n * @param {nodeCallback<string>} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.enableMFA = function enableMFA(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n var mfaOptions = [];\n var mfaEnabled = {\n DeliveryMedium: 'SMS',\n AttributeName: 'phone_number'\n };\n mfaOptions.push(mfaEnabled);\n this.client.request('SetUserSettings', {\n MFAOptions: mfaOptions,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to enable MFA for itself\n * @param {IMfaSettings} smsMfaSettings the sms mfa settings\n * @param {IMFASettings} softwareTokenMfaSettings the software token mfa settings\n * @param {nodeCallback<string>} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.setUserMfaPreference = function setUserMfaPreference(smsMfaSettings, softwareTokenMfaSettings, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('SetUserMFAPreference', {\n SMSMfaSettings: smsMfaSettings,\n SoftwareTokenMfaSettings: softwareTokenMfaSettings,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to disable MFA for itself\n * @deprecated\n * @param {nodeCallback<string>} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.disableMFA = function disableMFA(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n var mfaOptions = [];\n this.client.request('SetUserSettings', {\n MFAOptions: mfaOptions,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to delete itself\n * @param {nodeCallback<string>} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.deleteUser = function deleteUser(callback, clientMetadata) {\n var _this9 = this;\n\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('DeleteUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n ClientMetadata: clientMetadata\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n _this9.clearCachedUser();\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * @typedef {CognitoUserAttribute | { Name:string, Value:string }} AttributeArg\n */\n\n /**\n * This is used by an authenticated user to change a list of attributes\n * @param {AttributeArg[]} attributes A list of the new user attributes.\n * @param {nodeCallback<string>} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.updateAttributes = function updateAttributes(attributes, callback, clientMetadata) {\n var _this10 = this;\n\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('UpdateUserAttributes', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n UserAttributes: attributes,\n ClientMetadata: clientMetadata\n }, function (err) {\n if (err) {\n return callback(err, null);\n } // update cached user\n\n\n return _this10.getUserData(function () {\n return callback(null, 'SUCCESS');\n }, {\n bypassCache: true\n });\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to get a list of attributes\n * @param {nodeCallback<CognitoUserAttribute[]>} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.getUserAttributes = function getUserAttributes(callback) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('GetUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err, userData) {\n if (err) {\n return callback(err, null);\n }\n\n var attributeList = [];\n\n for (var i = 0; i < userData.UserAttributes.length; i++) {\n var attribute = {\n Name: userData.UserAttributes[i].Name,\n Value: userData.UserAttributes[i].Value\n };\n var userAttribute = new CognitoUserAttribute(attribute);\n attributeList.push(userAttribute);\n }\n\n return callback(null, attributeList);\n });\n return undefined;\n }\n /**\n * This was previously used by an authenticated user to get MFAOptions,\n * but no longer returns a meaningful response. Refer to the documentation for\n * how to setup and use MFA: https://docs.amplify.aws/lib/auth/mfa/q/platform/js\n * @deprecated\n * @param {nodeCallback<MFAOptions>} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.getMFAOptions = function getMFAOptions(callback) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('GetUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err, userData) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, userData.MFAOptions);\n });\n return undefined;\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */\n ;\n\n _proto.createGetUserRequest = function createGetUserRequest() {\n return this.client.promisifyRequest('GetUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n });\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */\n ;\n\n _proto.refreshSessionIfPossible = function refreshSessionIfPossible(options) {\n var _this11 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n // best effort, if not possible\n return new Promise(function (resolve) {\n var refresh = _this11.signInUserSession.getRefreshToken();\n\n if (refresh && refresh.getToken()) {\n _this11.refreshSession(refresh, resolve, options.clientMetadata);\n } else {\n resolve();\n }\n });\n }\n /**\n * @typedef {Object} GetUserDataOptions\n * @property {boolean} bypassCache - force getting data from Cognito service\n * @property {Record<string, string>} clientMetadata - clientMetadata for getSession\n */\n\n /**\n * This is used by an authenticated users to get the userData\n * @param {nodeCallback<UserData>} callback Called on success or error.\n * @param {GetUserDataOptions} params\n * @returns {void}\n */\n ;\n\n _proto.getUserData = function getUserData(callback, params) {\n var _this12 = this;\n\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n this.clearCachedUserData();\n return callback(new Error('User is not authenticated'), null);\n }\n\n var userData = this.getUserDataFromCache();\n\n if (!userData) {\n this.fetchUserData().then(function (data) {\n callback(null, data);\n })[\"catch\"](callback);\n return;\n }\n\n if (this.isFetchUserDataAndTokenRequired(params)) {\n this.fetchUserData().then(function (data) {\n return _this12.refreshSessionIfPossible(params).then(function () {\n return data;\n });\n }).then(function (data) {\n return callback(null, data);\n })[\"catch\"](callback);\n return;\n }\n\n try {\n callback(null, JSON.parse(userData));\n return;\n } catch (err) {\n this.clearCachedUserData();\n callback(err, null);\n return;\n }\n }\n /**\n *\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */\n ;\n\n _proto.getUserDataFromCache = function getUserDataFromCache() {\n var userData = this.storage.getItem(this.userDataKey);\n return userData;\n }\n /**\n *\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */\n ;\n\n _proto.isFetchUserDataAndTokenRequired = function isFetchUserDataAndTokenRequired(params) {\n var _ref = params || {},\n _ref$bypassCache = _ref.bypassCache,\n bypassCache = _ref$bypassCache === void 0 ? false : _ref$bypassCache;\n\n return bypassCache;\n }\n /**\n *\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n */\n ;\n\n _proto.fetchUserData = function fetchUserData() {\n var _this13 = this;\n\n return this.createGetUserRequest().then(function (data) {\n _this13.cacheUserData(data);\n\n return data;\n });\n }\n /**\n * This is used by an authenticated user to delete a list of attributes\n * @param {string[]} attributeList Names of the attributes to delete.\n * @param {nodeCallback<string>} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.deleteAttributes = function deleteAttributes(attributeList, callback) {\n var _this14 = this;\n\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('DeleteUserAttributes', {\n UserAttributeNames: attributeList,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n } // update cached user\n\n\n return _this14.getUserData(function () {\n return callback(null, 'SUCCESS');\n }, {\n bypassCache: true\n });\n });\n return undefined;\n }\n /**\n * This is used by a user to resend a confirmation code\n * @param {nodeCallback<string>} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.resendConfirmationCode = function resendConfirmationCode(callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n Username: this.username,\n ClientMetadata: clientMetadata\n };\n this.client.request('ResendConfirmationCode', jsonReq, function (err, result) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, result);\n });\n }\n /**\n * @typedef {Object} GetSessionOptions\n * @property {Record<string, string>} clientMetadata - clientMetadata for getSession\n */\n\n /**\n * This is used to get a session, either from the session object\n * or from the local storage, or by using a refresh token\n *\n * @param {nodeCallback<CognitoUserSession>} callback Called on success or error.\n * @param {GetSessionOptions} options\n * @returns {void}\n */\n ;\n\n _proto.getSession = function getSession(callback, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (this.username == null) {\n return callback(new Error('Username is null. Cannot retrieve a new session'), null);\n }\n\n if (this.signInUserSession != null && this.signInUserSession.isValid()) {\n return callback(null, this.signInUserSession);\n }\n\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var idTokenKey = keyPrefix + \".idToken\";\n var accessTokenKey = keyPrefix + \".accessToken\";\n var refreshTokenKey = keyPrefix + \".refreshToken\";\n var clockDriftKey = keyPrefix + \".clockDrift\";\n\n if (this.storage.getItem(idTokenKey)) {\n var idToken = new CognitoIdToken({\n IdToken: this.storage.getItem(idTokenKey)\n });\n var accessToken = new CognitoAccessToken({\n AccessToken: this.storage.getItem(accessTokenKey)\n });\n var refreshToken = new CognitoRefreshToken({\n RefreshToken: this.storage.getItem(refreshTokenKey)\n });\n var clockDrift = parseInt(this.storage.getItem(clockDriftKey), 0) || 0;\n var sessionData = {\n IdToken: idToken,\n AccessToken: accessToken,\n RefreshToken: refreshToken,\n ClockDrift: clockDrift\n };\n var cachedSession = new CognitoUserSession(sessionData);\n\n if (cachedSession.isValid()) {\n this.signInUserSession = cachedSession;\n return callback(null, this.signInUserSession);\n }\n\n if (!refreshToken.getToken()) {\n return callback(new Error('Cannot retrieve a new session. Please authenticate.'), null);\n }\n\n this.refreshSession(refreshToken, callback, options.clientMetadata);\n } else {\n callback(new Error('Local storage is missing an ID Token, Please authenticate'), null);\n }\n\n return undefined;\n }\n /**\n * This uses the refreshToken to retrieve a new session\n * @param {CognitoRefreshToken} refreshToken A previous session's refresh token.\n * @param {nodeCallback<CognitoUserSession>} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.refreshSession = function refreshSession(refreshToken, callback, clientMetadata) {\n var _this15 = this;\n\n var wrappedCallback = this.pool.wrapRefreshSessionCallback ? this.pool.wrapRefreshSessionCallback(callback) : callback;\n var authParameters = {};\n authParameters.REFRESH_TOKEN = refreshToken.getToken();\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n var lastUserKey = keyPrefix + \".LastAuthUser\";\n\n if (this.storage.getItem(lastUserKey)) {\n this.username = this.storage.getItem(lastUserKey);\n var deviceKeyKey = keyPrefix + \".\" + this.username + \".deviceKey\";\n this.deviceKey = this.storage.getItem(deviceKeyKey);\n authParameters.DEVICE_KEY = this.deviceKey;\n }\n\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n AuthFlow: 'REFRESH_TOKEN_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('InitiateAuth', jsonReq, function (err, authResult) {\n if (err) {\n if (err.code === 'NotAuthorizedException') {\n _this15.clearCachedUser();\n }\n\n return wrappedCallback(err, null);\n }\n\n if (authResult) {\n var authenticationResult = authResult.AuthenticationResult;\n\n if (!Object.prototype.hasOwnProperty.call(authenticationResult, 'RefreshToken')) {\n authenticationResult.RefreshToken = refreshToken.getToken();\n }\n\n _this15.signInUserSession = _this15.getCognitoUserSession(authenticationResult);\n\n _this15.cacheTokens();\n\n return wrappedCallback(null, _this15.signInUserSession);\n }\n\n return undefined;\n });\n }\n /**\n * This is used to save the session tokens to local storage\n * @returns {void}\n */\n ;\n\n _proto.cacheTokens = function cacheTokens() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n var idTokenKey = keyPrefix + \".\" + this.username + \".idToken\";\n var accessTokenKey = keyPrefix + \".\" + this.username + \".accessToken\";\n var refreshTokenKey = keyPrefix + \".\" + this.username + \".refreshToken\";\n var clockDriftKey = keyPrefix + \".\" + this.username + \".clockDrift\";\n var lastUserKey = keyPrefix + \".LastAuthUser\";\n this.storage.setItem(idTokenKey, this.signInUserSession.getIdToken().getJwtToken());\n this.storage.setItem(accessTokenKey, this.signInUserSession.getAccessToken().getJwtToken());\n this.storage.setItem(refreshTokenKey, this.signInUserSession.getRefreshToken().getToken());\n this.storage.setItem(clockDriftKey, \"\" + this.signInUserSession.getClockDrift());\n this.storage.setItem(lastUserKey, this.username);\n }\n /**\n * This is to cache user data\n */\n ;\n\n _proto.cacheUserData = function cacheUserData(userData) {\n this.storage.setItem(this.userDataKey, JSON.stringify(userData));\n }\n /**\n * This is to remove cached user data\n */\n ;\n\n _proto.clearCachedUserData = function clearCachedUserData() {\n this.storage.removeItem(this.userDataKey);\n };\n\n _proto.clearCachedUser = function clearCachedUser() {\n this.clearCachedTokens();\n this.clearCachedUserData();\n }\n /**\n * This is used to cache the device key and device group and device password\n * @returns {void}\n */\n ;\n\n _proto.cacheDeviceKeyAndPassword = function cacheDeviceKeyAndPassword() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var deviceKeyKey = keyPrefix + \".deviceKey\";\n var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n this.storage.setItem(deviceKeyKey, this.deviceKey);\n this.storage.setItem(randomPasswordKey, this.randomPassword);\n this.storage.setItem(deviceGroupKeyKey, this.deviceGroupKey);\n }\n /**\n * This is used to get current device key and device group and device password\n * @returns {void}\n */\n ;\n\n _proto.getCachedDeviceKeyAndPassword = function getCachedDeviceKeyAndPassword() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var deviceKeyKey = keyPrefix + \".deviceKey\";\n var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n\n if (this.storage.getItem(deviceKeyKey)) {\n this.deviceKey = this.storage.getItem(deviceKeyKey);\n this.randomPassword = this.storage.getItem(randomPasswordKey);\n this.deviceGroupKey = this.storage.getItem(deviceGroupKeyKey);\n }\n }\n /**\n * This is used to clear the device key info from local storage\n * @returns {void}\n */\n ;\n\n _proto.clearCachedDeviceKeyAndPassword = function clearCachedDeviceKeyAndPassword() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var deviceKeyKey = keyPrefix + \".deviceKey\";\n var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n this.storage.removeItem(deviceKeyKey);\n this.storage.removeItem(randomPasswordKey);\n this.storage.removeItem(deviceGroupKeyKey);\n }\n /**\n * This is used to clear the session tokens from local storage\n * @returns {void}\n */\n ;\n\n _proto.clearCachedTokens = function clearCachedTokens() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n var idTokenKey = keyPrefix + \".\" + this.username + \".idToken\";\n var accessTokenKey = keyPrefix + \".\" + this.username + \".accessToken\";\n var refreshTokenKey = keyPrefix + \".\" + this.username + \".refreshToken\";\n var lastUserKey = keyPrefix + \".LastAuthUser\";\n var clockDriftKey = keyPrefix + \".\" + this.username + \".clockDrift\";\n this.storage.removeItem(idTokenKey);\n this.storage.removeItem(accessTokenKey);\n this.storage.removeItem(refreshTokenKey);\n this.storage.removeItem(lastUserKey);\n this.storage.removeItem(clockDriftKey);\n }\n /**\n * This is used to build a user session from tokens retrieved in the authentication result\n * @param {object} authResult Successful auth response from server.\n * @returns {CognitoUserSession} The new user session.\n * @private\n */\n ;\n\n _proto.getCognitoUserSession = function getCognitoUserSession(authResult) {\n var idToken = new CognitoIdToken(authResult);\n var accessToken = new CognitoAccessToken(authResult);\n var refreshToken = new CognitoRefreshToken(authResult);\n var sessionData = {\n IdToken: idToken,\n AccessToken: accessToken,\n RefreshToken: refreshToken\n };\n return new CognitoUserSession(sessionData);\n }\n /**\n * This is used to initiate a forgot password request\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {inputVerificationCode?} callback.inputVerificationCode\n * Optional callback raised instead of onSuccess with response data.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.forgotPassword = function forgotPassword(callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n Username: this.username,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('ForgotPassword', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n if (typeof callback.inputVerificationCode === 'function') {\n return callback.inputVerificationCode(data);\n }\n\n return callback.onSuccess(data);\n });\n }\n /**\n * This is used to confirm a new password using a confirmationCode\n * @param {string} confirmationCode Code entered by user.\n * @param {string} newPassword Confirm new password.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<void>} callback.onSuccess Called on success.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.confirmPassword = function confirmPassword(confirmationCode, newPassword, callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n Username: this.username,\n ConfirmationCode: confirmationCode,\n Password: newPassword,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('ConfirmForgotPassword', jsonReq, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n }\n /**\n * This is used to initiate an attribute confirmation request\n * @param {string} attributeName User attribute that needs confirmation.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {inputVerificationCode} callback.inputVerificationCode Called on success.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.getAttributeVerificationCode = function getAttributeVerificationCode(attributeName, callback, clientMetadata) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('GetUserAttributeVerificationCode', {\n AttributeName: attributeName,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n ClientMetadata: clientMetadata\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n if (typeof callback.inputVerificationCode === 'function') {\n return callback.inputVerificationCode(data);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to confirm an attribute using a confirmation code\n * @param {string} attributeName Attribute being confirmed.\n * @param {string} confirmationCode Code entered by user.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<string>} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.verifyAttribute = function verifyAttribute(attributeName, confirmationCode, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('VerifyUserAttribute', {\n AttributeName: attributeName,\n Code: confirmationCode,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to get the device information using the current device key\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<*>} callback.onSuccess Called on success with device data.\n * @returns {void}\n */\n ;\n\n _proto.getDevice = function getDevice(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('GetDevice', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: this.deviceKey\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess(data);\n });\n return undefined;\n }\n /**\n * This is used to forget a specific device\n * @param {string} deviceKey Device key.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<string>} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.forgetSpecificDevice = function forgetSpecificDevice(deviceKey, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('ForgetDevice', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: deviceKey\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to forget the current device\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<string>} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.forgetDevice = function forgetDevice(callback) {\n var _this16 = this;\n\n this.forgetSpecificDevice(this.deviceKey, {\n onFailure: callback.onFailure,\n onSuccess: function onSuccess(result) {\n _this16.deviceKey = null;\n _this16.deviceGroupKey = null;\n _this16.randomPassword = null;\n\n _this16.clearCachedDeviceKeyAndPassword();\n\n return callback.onSuccess(result);\n }\n });\n }\n /**\n * This is used to set the device status as remembered\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<string>} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.setDeviceStatusRemembered = function setDeviceStatusRemembered(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('UpdateDeviceStatus', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: this.deviceKey,\n DeviceRememberedStatus: 'remembered'\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to set the device status as not remembered\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<string>} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.setDeviceStatusNotRemembered = function setDeviceStatusNotRemembered(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('UpdateDeviceStatus', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: this.deviceKey,\n DeviceRememberedStatus: 'not_remembered'\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to list all devices for a user\n *\n * @param {int} limit the number of devices returned in a call\n * @param {string | null} paginationToken the pagination token in case any was returned before\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<*>} callback.onSuccess Called on success with device list.\n * @returns {void}\n */\n ;\n\n _proto.listDevices = function listDevices(limit, paginationToken, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n var requestParams = {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n Limit: limit\n };\n\n if (paginationToken) {\n requestParams.PaginationToken = paginationToken;\n }\n\n this.client.request('ListDevices', requestParams, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess(data);\n });\n return undefined;\n }\n /**\n * This is used to globally revoke all tokens issued to a user\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<string>} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.globalSignOut = function globalSignOut(callback) {\n var _this17 = this;\n\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('GlobalSignOut', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n _this17.clearCachedUser();\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used for the user to signOut of the application and clear the cached tokens.\n * @returns {void}\n */\n ;\n\n _proto.signOut = function signOut(revokeTokenCallback) {\n var _this18 = this;\n\n // If tokens won't be revoked, we just clean the client data.\n if (!revokeTokenCallback || typeof revokeTokenCallback !== 'function') {\n this.cleanClientData();\n return;\n }\n\n this.getSession(function (error, _session) {\n if (error) {\n return revokeTokenCallback(error);\n }\n\n _this18.revokeTokens(function (err) {\n _this18.cleanClientData();\n\n revokeTokenCallback(err);\n });\n });\n };\n\n _proto.revokeTokens = function revokeTokens(revokeTokenCallback) {\n if (revokeTokenCallback === void 0) {\n revokeTokenCallback = function revokeTokenCallback() {};\n }\n\n if (typeof revokeTokenCallback !== 'function') {\n throw new Error('Invalid revokeTokenCallback. It should be a function.');\n }\n\n var tokensToBeRevoked = [];\n\n if (!this.signInUserSession) {\n var error = new Error('User is not authenticated');\n return revokeTokenCallback(error);\n }\n\n if (!this.signInUserSession.getAccessToken()) {\n var _error = new Error('No Access token available');\n\n return revokeTokenCallback(_error);\n }\n\n var refreshToken = this.signInUserSession.getRefreshToken().getToken();\n var accessToken = this.signInUserSession.getAccessToken();\n\n if (this.isSessionRevocable(accessToken)) {\n if (refreshToken) {\n return this.revokeToken({\n token: refreshToken,\n callback: revokeTokenCallback\n });\n }\n }\n\n revokeTokenCallback();\n };\n\n _proto.isSessionRevocable = function isSessionRevocable(token) {\n if (token && typeof token.decodePayload === 'function') {\n try {\n var _token$decodePayload = token.decodePayload(),\n origin_jti = _token$decodePayload.origin_jti;\n\n return !!origin_jti;\n } catch (err) {// Nothing to do, token doesnt have origin_jti claim\n }\n }\n\n return false;\n };\n\n _proto.cleanClientData = function cleanClientData() {\n this.signInUserSession = null;\n this.clearCachedUser();\n };\n\n _proto.revokeToken = function revokeToken(_ref2) {\n var token = _ref2.token,\n callback = _ref2.callback;\n this.client.requestWithRetry('RevokeToken', {\n Token: token,\n ClientId: this.pool.getClientId()\n }, function (err) {\n if (err) {\n return callback(err);\n }\n\n callback();\n });\n }\n /**\n * This is used by a user trying to select a given MFA\n * @param {string} answerChallenge the mfa the user wants\n * @param {nodeCallback<string>} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.sendMFASelectionAnswer = function sendMFASelectionAnswer(answerChallenge, callback) {\n var _this19 = this;\n\n var challengeResponses = {};\n challengeResponses.USERNAME = this.username;\n challengeResponses.ANSWER = answerChallenge;\n var jsonReq = {\n ChallengeName: 'SELECT_MFA_TYPE',\n ChallengeResponses: challengeResponses,\n ClientId: this.pool.getClientId(),\n Session: this.Session\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n _this19.Session = data.Session;\n\n if (answerChallenge === 'SMS_MFA') {\n return callback.mfaRequired(data.ChallengeName, data.ChallengeParameters);\n }\n\n if (answerChallenge === 'SOFTWARE_TOKEN_MFA') {\n return callback.totpRequired(data.ChallengeName, data.ChallengeParameters);\n }\n\n return undefined;\n });\n }\n /**\n * This returns the user context data for advanced security feature.\n * @returns {string} the user context data from CognitoUserPool\n */\n ;\n\n _proto.getUserContextData = function getUserContextData() {\n var pool = this.pool;\n return pool.getUserContextData(this.username);\n }\n /**\n * This is used by an authenticated or a user trying to authenticate to associate a TOTP MFA\n * @param {nodeCallback<string>} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.associateSoftwareToken = function associateSoftwareToken(callback) {\n var _this20 = this;\n\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n this.client.request('AssociateSoftwareToken', {\n Session: this.Session\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n _this20.Session = data.Session;\n return callback.associateSecretCode(data.SecretCode);\n });\n } else {\n this.client.request('AssociateSoftwareToken', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.associateSecretCode(data.SecretCode);\n });\n }\n }\n /**\n * This is used by an authenticated or a user trying to authenticate to verify a TOTP MFA\n * @param {string} totpCode The MFA code entered by the user.\n * @param {string} friendlyDeviceName The device name we are assigning to the device.\n * @param {nodeCallback<string>} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.verifySoftwareToken = function verifySoftwareToken(totpCode, friendlyDeviceName, callback) {\n var _this21 = this;\n\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n this.client.request('VerifySoftwareToken', {\n Session: this.Session,\n UserCode: totpCode,\n FriendlyDeviceName: friendlyDeviceName\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n _this21.Session = data.Session;\n var challengeResponses = {};\n challengeResponses.USERNAME = _this21.username;\n var jsonReq = {\n ChallengeName: 'MFA_SETUP',\n ClientId: _this21.pool.getClientId(),\n ChallengeResponses: challengeResponses,\n Session: _this21.Session\n };\n\n if (_this21.getUserContextData()) {\n jsonReq.UserContextData = _this21.getUserContextData();\n }\n\n _this21.client.request('RespondToAuthChallenge', jsonReq, function (errRespond, dataRespond) {\n if (errRespond) {\n return callback.onFailure(errRespond);\n }\n\n _this21.signInUserSession = _this21.getCognitoUserSession(dataRespond.AuthenticationResult);\n\n _this21.cacheTokens();\n\n return callback.onSuccess(_this21.signInUserSession);\n });\n\n return undefined;\n });\n } else {\n this.client.request('VerifySoftwareToken', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n UserCode: totpCode,\n FriendlyDeviceName: friendlyDeviceName\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess(data);\n });\n }\n };\n\n return CognitoUser;\n}();\n\nexport { CognitoUser as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { version } from './version';\nvar BASE_USER_AGENT = \"aws-amplify/\" + version;\nexport var Platform = {\n userAgent: BASE_USER_AGENT + \" js\",\n product: '',\n navigator: null,\n isReactNative: false\n};\n\nif (typeof navigator !== 'undefined' && navigator.product) {\n Platform.product = navigator.product || '';\n Platform.navigator = navigator || null;\n\n switch (navigator.product) {\n case 'ReactNative':\n Platform.userAgent = BASE_USER_AGENT + \" react-native\";\n Platform.isReactNative = true;\n break;\n\n default:\n Platform.userAgent = BASE_USER_AGENT + \" js\";\n Platform.isReactNative = false;\n break;\n }\n}\n\nexport var getUserAgent = function getUserAgent() {\n return Platform.userAgent;\n};\n/**\n * @deprecated use named import\n */\n\nexport default Platform;","import { getUserAgent } from \"./Platform\"; // constructor\n\nfunction UserAgent() {} // public\n\n\nUserAgent.prototype.userAgent = getUserAgent();\nexport var appendToCognitoUserAgent = function appendToCognitoUserAgent(content) {\n if (!content) {\n return;\n }\n\n if (UserAgent.prototype.userAgent && !UserAgent.prototype.userAgent.includes(content)) {\n UserAgent.prototype.userAgent = UserAgent.prototype.userAgent.concat(' ', content);\n }\n\n if (!UserAgent.prototype.userAgent || UserAgent.prototype.userAgent === '') {\n UserAgent.prototype.userAgent = content;\n }\n}; // class for defining the amzn user-agent\n\nexport default UserAgent;","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport 'isomorphic-unfetch';\nimport UserAgent from './UserAgent';\n\nvar CognitoError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(CognitoError, _Error);\n\n function CognitoError(message, code, name, statusCode) {\n var _this;\n\n _this = _Error.call(this, message) || this;\n _this.code = code;\n _this.name = name;\n _this.statusCode = statusCode;\n return _this;\n }\n\n return CognitoError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n/** @class */\n\n\nvar Client = /*#__PURE__*/function () {\n /**\n * Constructs a new AWS Cognito Identity Provider client object\n * @param {string} region AWS region\n * @param {string} endpoint endpoint\n * @param {object} fetchOptions options for fetch API (only credentials is supported)\n */\n function Client(region, endpoint, fetchOptions) {\n this.endpoint = endpoint || \"https://cognito-idp.\" + region + \".amazonaws.com/\";\n\n var _ref = fetchOptions || {},\n credentials = _ref.credentials;\n\n this.fetchOptions = credentials ? {\n credentials: credentials\n } : {};\n }\n /**\n * Makes an unauthenticated request on AWS Cognito Identity Provider API\n * using fetch\n * @param {string} operation API operation\n * @param {object} params Input parameters\n * @returns Promise<object>\n */\n\n\n var _proto = Client.prototype;\n\n _proto.promisifyRequest = function promisifyRequest(operation, params) {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n _this2.request(operation, params, function (err, data) {\n if (err) {\n reject(new CognitoError(err.message, err.code, err.name, err.statusCode));\n } else {\n resolve(data);\n }\n });\n });\n };\n\n _proto.requestWithRetry = function requestWithRetry(operation, params, callback) {\n var _this3 = this;\n\n var MAX_DELAY_IN_MILLIS = 5 * 1000;\n jitteredExponentialRetry(function (p) {\n return new Promise(function (res, rej) {\n _this3.request(operation, p, function (error, result) {\n if (error) {\n rej(error);\n } else {\n res(result);\n }\n });\n });\n }, [params], MAX_DELAY_IN_MILLIS).then(function (result) {\n return callback(null, result);\n })[\"catch\"](function (error) {\n return callback(error);\n });\n }\n /**\n * Makes an unauthenticated request on AWS Cognito Identity Provider API\n * using fetch\n * @param {string} operation API operation\n * @param {object} params Input parameters\n * @param {function} callback Callback called when a response is returned\n * @returns {void}\n */\n ;\n\n _proto.request = function request(operation, params, callback) {\n var headers = {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': \"AWSCognitoIdentityProviderService.\" + operation,\n 'X-Amz-User-Agent': UserAgent.prototype.userAgent\n };\n var options = Object.assign({}, this.fetchOptions, {\n headers: headers,\n method: 'POST',\n mode: 'cors',\n cache: 'no-cache',\n body: JSON.stringify(params)\n });\n var response;\n var responseJsonData;\n fetch(this.endpoint, options).then(function (resp) {\n response = resp;\n return resp;\n }, function (err) {\n // If error happens here, the request failed\n // if it is TypeError throw network error\n if (err instanceof TypeError) {\n throw new Error('Network error');\n }\n\n throw err;\n }).then(function (resp) {\n return resp.json()[\"catch\"](function () {\n return {};\n });\n }).then(function (data) {\n // return parsed body stream\n if (response.ok) return callback(null, data);\n responseJsonData = data; // Taken from aws-sdk-js/lib/protocol/json.js\n // eslint-disable-next-line no-underscore-dangle\n\n var code = (data.__type || data.code).split('#').pop();\n var error = new Error(data.message || data.Message || null);\n error.name = code;\n error.code = code;\n return callback(error);\n })[\"catch\"](function (err) {\n // first check if we have a service error\n if (response && response.headers && response.headers.get('x-amzn-errortype')) {\n try {\n var code = response.headers.get('x-amzn-errortype').split(':')[0];\n var error = new Error(response.status ? response.status.toString() : null);\n error.code = code;\n error.name = code;\n error.statusCode = response.status;\n return callback(error);\n } catch (ex) {\n return callback(err);\n } // otherwise check if error is Network error\n\n } else if (err instanceof Error && err.message === 'Network error') {\n err.code = 'NetworkError';\n }\n\n return callback(err);\n });\n };\n\n return Client;\n}();\n\nexport { Client as default };\nvar logger = {\n debug: function debug() {// Intentionally blank. This package doesn't have logging\n }\n};\n/**\n * For now, all errors are retryable.\n */\n\nvar NonRetryableError = /*#__PURE__*/function (_Error2) {\n _inheritsLoose(NonRetryableError, _Error2);\n\n function NonRetryableError(message) {\n var _this4;\n\n _this4 = _Error2.call(this, message) || this;\n _this4.nonRetryable = true;\n return _this4;\n }\n\n return NonRetryableError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nvar isNonRetryableError = function isNonRetryableError(obj) {\n var key = 'nonRetryable';\n return obj && obj[key];\n};\n\nfunction retry(functionToRetry, args, delayFn, attempt) {\n if (attempt === void 0) {\n attempt = 1;\n }\n\n if (typeof functionToRetry !== 'function') {\n throw Error('functionToRetry must be a function');\n }\n\n logger.debug(functionToRetry.name + \" attempt #\" + attempt + \" with args: \" + JSON.stringify(args));\n return functionToRetry.apply(void 0, args)[\"catch\"](function (err) {\n logger.debug(\"error on \" + functionToRetry.name, err);\n\n if (isNonRetryableError(err)) {\n logger.debug(functionToRetry.name + \" non retryable error\", err);\n throw err;\n }\n\n var retryIn = delayFn(attempt, args, err);\n logger.debug(functionToRetry.name + \" retrying in \" + retryIn + \" ms\");\n\n if (retryIn !== false) {\n return new Promise(function (res) {\n return setTimeout(res, retryIn);\n }).then(function () {\n return retry(functionToRetry, args, delayFn, attempt + 1);\n });\n } else {\n throw err;\n }\n });\n}\n\nfunction jitteredBackoff(maxDelayMs) {\n var BASE_TIME_MS = 100;\n var JITTER_FACTOR = 100;\n return function (attempt) {\n var delay = Math.pow(2, attempt) * BASE_TIME_MS + JITTER_FACTOR * Math.random();\n return delay > maxDelayMs ? false : delay;\n };\n}\n\nvar MAX_DELAY_MS = 5 * 60 * 1000;\n\nfunction jitteredExponentialRetry(functionToRetry, args, maxDelayMs) {\n if (maxDelayMs === void 0) {\n maxDelayMs = MAX_DELAY_MS;\n }\n\n return retry(functionToRetry, args, jitteredBackoff(maxDelayMs));\n}\n\n;","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport Client from './Client';\nimport CognitoUser from './CognitoUser';\nimport StorageHelper from './StorageHelper';\nvar USER_POOL_ID_MAX_LENGTH = 55;\n/** @class */\n\nvar CognitoUserPool = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUserPool object\n * @param {object} data Creation options.\n * @param {string} data.UserPoolId Cognito user pool id.\n * @param {string} data.ClientId User pool application client id.\n * @param {string} data.endpoint Optional custom service endpoint.\n * @param {object} data.fetchOptions Optional options for fetch API.\n * (only credentials option is supported)\n * @param {object} data.Storage Optional storage object.\n * @param {boolean} data.AdvancedSecurityDataCollectionFlag Optional:\n * boolean flag indicating if the data collection is enabled\n * to support cognito advanced security features. By default, this\n * flag is set to true.\n */\n function CognitoUserPool(data, wrapRefreshSessionCallback) {\n var _ref = data || {},\n UserPoolId = _ref.UserPoolId,\n ClientId = _ref.ClientId,\n endpoint = _ref.endpoint,\n fetchOptions = _ref.fetchOptions,\n AdvancedSecurityDataCollectionFlag = _ref.AdvancedSecurityDataCollectionFlag;\n\n if (!UserPoolId || !ClientId) {\n throw new Error('Both UserPoolId and ClientId are required.');\n }\n\n if (UserPoolId.length > USER_POOL_ID_MAX_LENGTH || !/^[\\w-]+_[0-9a-zA-Z]+$/.test(UserPoolId)) {\n throw new Error('Invalid UserPoolId format.');\n }\n\n var region = UserPoolId.split('_')[0];\n this.userPoolId = UserPoolId;\n this.clientId = ClientId;\n this.client = new Client(region, endpoint, fetchOptions);\n /**\n * By default, AdvancedSecurityDataCollectionFlag is set to true,\n * if no input value is provided.\n */\n\n this.advancedSecurityDataCollectionFlag = AdvancedSecurityDataCollectionFlag !== false;\n this.storage = data.Storage || new StorageHelper().getStorage();\n\n if (wrapRefreshSessionCallback) {\n this.wrapRefreshSessionCallback = wrapRefreshSessionCallback;\n }\n }\n /**\n * @returns {string} the user pool id\n */\n\n\n var _proto = CognitoUserPool.prototype;\n\n _proto.getUserPoolId = function getUserPoolId() {\n return this.userPoolId;\n }\n /**\n * @returns {string} the client id\n */\n ;\n\n _proto.getClientId = function getClientId() {\n return this.clientId;\n }\n /**\n * @typedef {object} SignUpResult\n * @property {CognitoUser} user New user.\n * @property {bool} userConfirmed If the user is already confirmed.\n */\n\n /**\n * method for signing up a user\n * @param {string} username User's username.\n * @param {string} password Plain-text initial password entered by user.\n * @param {(AttributeArg[])=} userAttributes New user attributes.\n * @param {(AttributeArg[])=} validationData Application metadata.\n * @param {(AttributeArg[])=} clientMetadata Client metadata.\n * @param {nodeCallback<SignUpResult>} callback Called on error or with the new user.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.signUp = function signUp(username, password, userAttributes, validationData, callback, clientMetadata) {\n var _this = this;\n\n var jsonReq = {\n ClientId: this.clientId,\n Username: username,\n Password: password,\n UserAttributes: userAttributes,\n ValidationData: validationData,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData(username)) {\n jsonReq.UserContextData = this.getUserContextData(username);\n }\n\n this.client.request('SignUp', jsonReq, function (err, data) {\n if (err) {\n return callback(err, null);\n }\n\n var cognitoUser = {\n Username: username,\n Pool: _this,\n Storage: _this.storage\n };\n var returnData = {\n user: new CognitoUser(cognitoUser),\n userConfirmed: data.UserConfirmed,\n userSub: data.UserSub,\n codeDeliveryDetails: data.CodeDeliveryDetails\n };\n return callback(null, returnData);\n });\n }\n /**\n * method for getting the current user of the application from the local storage\n *\n * @returns {CognitoUser} the user retrieved from storage\n */\n ;\n\n _proto.getCurrentUser = function getCurrentUser() {\n var lastUserKey = \"CognitoIdentityServiceProvider.\" + this.clientId + \".LastAuthUser\";\n var lastAuthUser = this.storage.getItem(lastUserKey);\n\n if (lastAuthUser) {\n var cognitoUser = {\n Username: lastAuthUser,\n Pool: this,\n Storage: this.storage\n };\n return new CognitoUser(cognitoUser);\n }\n\n return null;\n }\n /**\n * This method returns the encoded data string used for cognito advanced security feature.\n * This would be generated only when developer has included the JS used for collecting the\n * data on their client. Please refer to documentation to know more about using AdvancedSecurity\n * features\n * @param {string} username the username for the context data\n * @returns {string} the user context data\n **/\n ;\n\n _proto.getUserContextData = function getUserContextData(username) {\n if (typeof AmazonCognitoAdvancedSecurityData === 'undefined') {\n return undefined;\n }\n /* eslint-disable */\n\n\n var amazonCognitoAdvancedSecurityDataConst = AmazonCognitoAdvancedSecurityData;\n /* eslint-enable */\n\n if (this.advancedSecurityDataCollectionFlag) {\n var advancedSecurityData = amazonCognitoAdvancedSecurityDataConst.getData(username, this.userPoolId, this.clientId);\n\n if (advancedSecurityData) {\n var userContextData = {\n EncodedData: advancedSecurityData\n };\n return userContextData;\n }\n }\n\n return {};\n };\n\n return CognitoUserPool;\n}();\n\nexport { CognitoUserPool as default };",null,"import * as Cookies from 'js-cookie';\n/** @class */\n\nvar CookieStorage = /*#__PURE__*/function () {\n /**\n * Constructs a new CookieStorage object\n * @param {object} data Creation options.\n * @param {string} data.domain Cookies domain (mandatory).\n * @param {string} data.path Cookies path (default: '/')\n * @param {integer} data.expires Cookie expiration (in days, default: 365)\n * @param {boolean} data.secure Cookie secure flag (default: true)\n * @param {string} data.sameSite Cookie request behaviour (default: null)\n */\n function CookieStorage(data) {\n if (data.domain) {\n this.domain = data.domain;\n } else {\n throw new Error('The domain of cookieStorage can not be undefined.');\n }\n\n if (data.path) {\n this.path = data.path;\n } else {\n this.path = '/';\n }\n\n if (Object.prototype.hasOwnProperty.call(data, 'expires')) {\n this.expires = data.expires;\n } else {\n this.expires = 365;\n }\n\n if (Object.prototype.hasOwnProperty.call(data, 'secure')) {\n this.secure = data.secure;\n } else {\n this.secure = true;\n }\n\n if (Object.prototype.hasOwnProperty.call(data, 'sameSite')) {\n if (!['strict', 'lax', 'none'].includes(data.sameSite)) {\n throw new Error('The sameSite value of cookieStorage must be \"lax\", \"strict\" or \"none\".');\n }\n\n if (data.sameSite === 'none' && !this.secure) {\n throw new Error('sameSite = None requires the Secure attribute in latest browser versions.');\n }\n\n this.sameSite = data.sameSite;\n } else {\n this.sameSite = null;\n }\n }\n /**\n * This is used to set a specific item in storage\n * @param {string} key - the key for the item\n * @param {object} value - the value\n * @returns {string} value that was set\n */\n\n\n var _proto = CookieStorage.prototype;\n\n _proto.setItem = function setItem(key, value) {\n var options = {\n path: this.path,\n expires: this.expires,\n domain: this.domain,\n secure: this.secure\n };\n\n if (this.sameSite) {\n options.sameSite = this.sameSite;\n }\n\n Cookies.set(key, value, options);\n return Cookies.get(key);\n }\n /**\n * This is used to get a specific key from storage\n * @param {string} key - the key for the item\n * This is used to clear the storage\n * @returns {string} the data item\n */\n ;\n\n _proto.getItem = function getItem(key) {\n return Cookies.get(key);\n }\n /**\n * This is used to remove an item from storage\n * @param {string} key - the key being set\n * @returns {string} value - value that was deleted\n */\n ;\n\n _proto.removeItem = function removeItem(key) {\n var options = {\n path: this.path,\n expires: this.expires,\n domain: this.domain,\n secure: this.secure\n };\n\n if (this.sameSite) {\n options.sameSite = this.sameSite;\n }\n\n return Cookies.remove(key, options);\n }\n /**\n * This is used to clear the storage of optional\n * items that were previously set\n * @returns {} an empty object\n */\n ;\n\n _proto.clear = function clear() {\n var cookies = Cookies.get();\n var numKeys = Object.keys(cookies).length;\n\n for (var index = 0; index < numKeys; ++index) {\n this.removeItem(Object.keys(cookies)[index]);\n }\n\n return {};\n };\n\n return CookieStorage;\n}();\n\nexport { CookieStorage as default };",null,null,null,null,null,null,null],"sourceRoot":""}
\No newline at end of file