{"version":3,"sources":["webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/util.js","webpack:///./node_modules/stacktrace-js/stacktrace.js","webpack:///./node_modules/stackframe/stackframe.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-map-generator.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/base64-vlq.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/array-set.js","webpack:///./node_modules/error-stack-parser/error-stack-parser.js","webpack:///./node_modules/stack-generator/stack-generator.js","webpack:///./node_modules/stacktrace-gps/stacktrace-gps.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/source-map.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/base64.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/mapping-list.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-map-consumer.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/binary-search.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/quick-sort.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-node.js","webpack:///./app/javascript/mastodon/components/error_boundary.jsx","webpack:///./node_modules/react-router/es/Router.js","webpack:///./app/javascript/mastodon/components/router.tsx","webpack:///./node_modules/react-router/es/generatePath.js","webpack:///./node_modules/react-router/es/Redirect.js","webpack:///./node_modules/react-router-dom/es/Redirect.js","webpack:///./app/javascript/mastodon/features/picture_in_picture/components/header.jsx","webpack:///./app/javascript/mastodon/features/picture_in_picture/index.jsx","webpack:///./app/javascript/mastodon/components/logo.tsx","webpack:///./app/javascript/mastodon/features/ui/components/header.jsx","webpack:///./app/javascript/mastodon/features/ui/components/upload_area.jsx","webpack:///./app/javascript/mastodon/features/ui/components/column_loading.jsx","webpack:///./app/javascript/mastodon/components/server_banner.jsx","webpack:///./app/javascript/mastodon/features/ui/components/compose_panel.jsx","webpack:///./app/javascript/mastodon/features/ui/components/drawer_loading.jsx","webpack:///./app/javascript/mastodon/features/account/components/featured_tags.jsx","webpack:///./app/javascript/mastodon/features/account/containers/featured_tags_container.js","webpack:///./app/javascript/mastodon/features/account/navigation.jsx","webpack:///./app/javascript/mastodon/components/navigation_portal.jsx","webpack:///./app/javascript/mastodon/features/ui/components/disabled_account_banner.jsx","webpack:///./app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx","webpack:///./app/javascript/mastodon/features/ui/components/list_panel.jsx","webpack:///./app/javascript/mastodon/features/ui/components/notifications_counter_icon.js","webpack:///./app/javascript/mastodon/features/ui/components/sign_in_banner.jsx","webpack:///./app/javascript/mastodon/features/ui/components/navigation_panel.jsx","webpack:///./app/javascript/mastodon/features/ui/components/columns_area.jsx","webpack:///./app/javascript/mastodon/features/ui/containers/columns_area_container.js","webpack:///./app/javascript/mastodon/features/ui/util/react_router_helpers.jsx","webpack:///./app/javascript/mastodon/features/ui/index.jsx","webpack:///./app/javascript/mastodon/containers/mastodon.jsx","webpack:///./node_modules/marky/lib/marky.browser.es.js","webpack:///./app/javascript/mastodon/main.jsx","webpack:///./app/javascript/packs/application.js"],"names":["exports","getArg","aArgs","aName","aDefaultValue","arguments","length","Error","urlRegexp","dataUrlRegexp","urlParse","aUrl","match","scheme","auth","host","port","path","urlGenerate","aParsedUrl","url","normalize","aPath","part","isAbsolute","parts","split","up","i","splice","join","aRoot","aPathUrl","aRootUrl","joined","charAt","replace","relative","level","indexOf","index","lastIndexOf","slice","Array","substr","supportsNullProto","Object","create","identity","s","isProtoString","charCodeAt","strcmp","aStr1","aStr2","toSetString","aStr","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","source","originalLine","originalColumn","generatedColumn","generatedLine","name","compareByGeneratedPositionsDeflated","onlyCompareGenerated","compareByGeneratedPositionsInflated","ErrorStackParser","StackGenerator","StackTraceGPS","_options","filter","stackframe","functionName","sourceCache","_generateError","err","_merge","first","second","target","forEach","obj","prop","prototype","hasOwnProperty","call","_isShapedLikeParsableError","stack","_filtered","stackframes","get","opts","this","fromError","generateArtificially","getSync","parse","backtrace","error","gps","Promise","resolve","all","map","sf","resolveOriginal","pinpoint","then","bind","stackFrames","instrument","fn","callback","errback","thisArg","__stacktraceOriginalFn","instrumented","apply","e","deinstrument","report","errorMsg","requestOptions","reject","req","XMLHttpRequest","onerror","onreadystatechange","readyState","status","responseText","open","setRequestHeader","headers","header","reportPayload","message","send","JSON","stringify","_isNumber","n","isNaN","parseFloat","isFinite","_capitalize","str","toUpperCase","substring","_getter","p","booleanProps","numericProps","stringProps","arrayProps","objectProps","props","concat","StackFrame","undefined","getArgs","args","setArgs","v","toString","TypeError","getEvalOrigin","evalOrigin","setEvalOrigin","fileName","getFileName","lineNumber","getLineNumber","columnNumber","getColumnNumber","getFunctionName","getIsEval","fromString","argsStartIndex","argsEndIndex","locationString","exec","Boolean","j","Number","k","String","base64VLQ","util","ArraySet","MappingList","SourceMapGenerator","_file","_sourceRoot","_skipValidation","_sources","_names","_mappings","_sourcesContents","_version","fromSourceMap","aSourceMapConsumer","sourceRoot","generator","file","eachMapping","mapping","newMapping","generated","line","column","original","addMapping","sources","sourceFile","content","sourceContentFor","setSourceContent","_validateMapping","has","add","aSourceFile","aSourceContent","keys","applySourceMap","aSourceMapPath","newSources","newNames","unsortedForEach","originalPositionFor","aGenerated","aOriginal","aSource","_serializeMappings","next","nameIdx","sourceIdx","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","result","mappings","toArray","len","encode","_generateSourcesContent","aSources","aSourceRoot","key","toJSON","version","names","sourcesContent","base64","aValue","digit","encoded","vlq","toVLQSigned","VLQ_BASE","decode","aIndex","aOutParam","continuation","shifted","strLen","shift","value","rest","_array","_set","fromArray","aArray","aAllowDuplicates","set","size","getOwnPropertyNames","sStr","isDuplicate","idx","push","at","aIdx","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","sanitizedLine","location","locationParts","functionNameRegex","matches","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","argsRaw","tokens","pop","functionCall","maxStackSize","curr","callee","test","RegExp","$1","caller","SourceMap","_xdr","_atob","b64str","window","atob","_parseJson","string","_findFunctionName","syntaxes","code","maxLines","Math","min","commentPos","m","_ensureSupportedEnvironment","defineProperty","_ensureStackFrameIsLegit","_findSourceMappingURL","lastSourceMappingUrl","matchSourceMappingUrl","sourceMappingUrlRegExp","_extractLocationInfoFromSourceMapSource","sourceMapConsumer","loc","mappedSource","sourceMapConsumerCache","ajax","_get","isDataUrl","offline","supportedEncodingRegexp","sourceMapStart","encodedSource","xhrPromise","method","_getSourceMapConsumer","sourceMappingURL","defaultSourceRoot","sourceMapConsumerPromise","sourceMapSource","SourceMapConsumer","catch","getMappedLocation","mappedStackFrame","resolveMappedStackFrame","findFunctionName","guessedFunctionName","SourceNode","intToCharMap","number","charCode","_sorted","_last","aCallback","aThisArg","aMapping","lineA","lineB","columnA","columnB","sort","binarySearch","quickSort","aSourceMap","sourceMap","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","Mapping","lastOffset","_sections","offset","offsetLine","offsetColumn","generatedOffset","consumer","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","c","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","aContext","aOrder","context","_generatedMappings","_originalMappings","allGeneratedPositionsFor","needle","_findMapping","lastColumn","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","segment","end","cachedSegments","temp","originalMappings","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","search","computeColumnSpans","nextMapping","lastGeneratedColumn","Infinity","hasContentsOfAllSources","some","sc","nullOnMissing","fileUriAbsPath","generatedPositionFor","constructor","sectionIndex","section","bias","every","generatedPosition","sectionMappings","adjustedMapping","recursiveSearch","aLow","aHigh","aHaystack","aCompare","mid","floor","swap","ary","x","y","doQuickSort","comparator","r","low","high","round","random","pivot","q","REGEX_NEWLINE","isSourceNode","aLine","aColumn","aChunks","children","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","node","remainingLines","shiftNextLine","lastGeneratedLine","lastMapping","nextLine","addMappingWithCode","aChunk","isArray","chunk","prepend","unshift","walk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","lastChild","walkSourceContents","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","ErrorBoundary","PureComponent","state","hasError","errorMessage","stackTrace","mappedStackTrace","componentStack","handleCopyStackTrace","textarea","document","createElement","contents","textContent","style","position","body","appendChild","select","execCommand","removeChild","setState","copied","setTimeout","componentDidCatch","info","StackTrace","render","likelyBrowserAddonIssue","includes","_jsx","className","FormattedMessage","id","defaultMessage","href","source_url","rel","onClick","Helmet","_extends","assign","_possibleConstructorReturn","self","ReferenceError","_React$Component","Router","_temp","_this","instance","Constructor","_classCallCheck","_len","_key","computeMatch","history","pathname","subClass","superClass","enumerable","writable","configurable","setPrototypeOf","__proto__","_inherits","getChildContext","router","route","params","isExact","componentWillMount","_this2","_props","Children","count","unlisten","listen","componentWillReceiveProps","nextProps","componentWillUnmount","only","Component","propTypes","object","isRequired","contextTypes","childContextTypes","browserHistory","createBrowserHistory","originalPush","originalReplace","_state","fromMastodon","layoutFromWindow","startsWith","_browserHistory$locat","_state2","_ref","OriginalRouter","patternCache","cacheCount","pattern","cacheKey","cache","compiledGenerator","compile","pretty","Redirect","isStatic","staticContext","perform","componentDidMount","componentDidUpdate","prevProps","prevTo","to","nextTo","computeTo","computedMatch","bool","from","oneOfType","defaultProps","shape","func","messages","defineMessages","close","Header","ImmutablePureComponent","account","statusId","onClose","intl","Link","Avatar","DisplayName","IconButton","icon","title","formatMessage","accountId","PropTypes","ImmutablePropTypes","connect","mapStateToProps","getIn","injectIntl","PictureInPicture","handleClose","dispatch","removePictureInPicture","type","src","currentTime","player","Video","volume","muted","autoPlay","inline","alwaysVisible","Audio","poster","backgroundColor","foregroundColor","accentColor","Footer","WordmarkLogo","viewBox","role","xlinkHref","SymbolLogo","logo","alt","Account","me","dispatchServer","signedIn","openClosedRegistrationsModal","signupUrl","_jsxs","_Fragment","Icon","sso_redirect","signupButton","registrationsOpen","withRouter","openModal","modalType","fetchServer","UploadArea","handleKeyUp","keyCode","active","preventDefault","stopPropagation","addEventListener","removeEventListener","Motion","defaultStyle","backgroundOpacity","backgroundScale","spring","stiffness","damping","visibility","opacity","transform","ColumnLoading","multiColumn","Column","ColumnHeader","focusable","placeholder","aboutActiveUsers","ServerBanner","server","isLoading","values","domain","mastodon","ServerHeroImage","blurhash","Skeleton","width","minimal","ShortNumber","ComposePanel","onFocus","changeComposing","onBlur","mountCompose","unmountCompose","SearchContainer","openInRoute","NavigationContainer","ComposeFormContainer","singleColumn","LinkFooter","DrawerLoading","lastStatusAt","empty","FeaturedTags","featuredTags","isEmpty","dangerouslySetInnerHTML","__html","take","featuredTag","Hashtag","uses","withGraph","description","date","formatDate","month","day","list","tagged","getAccount","makeGetAccount","ImmutableList","AccountNavigation","acct","normalizeForLookup","DefaultNavigation","showTrends","Trends","NavigationPortal","Switch","Route","exact","component","logoutMessage","logoutConfirm","DisabledAccountBanner","handleLogOutClick","onLogout","disabledAcct","movedToAcct","disabledAccountLink","disabledAccount","movedToAccount","disabledAccountId","movedToAccountId","mapDispatchToProps","modalProps","confirm","closeWhenConfirm","onConfirm","logOut","text","FollowRequestsColumnLink","fetchFollowRequests","ColumnLink","transparent","IconWithBadge","getOrderedLists","createSelector","lists","toList","item","a","b","localeCompare","ListPanel","fetchLists","strict","SignInBanner","useAppDispatch","useCallback","useAppSelector","home","notifications","explore","firehose","direct","favourites","bookmarks","preferences","followsAndFollowers","about","advancedInterface","NavigationPanel","isFirehoseActive","transientSingleColumn","NotificationsCounterIcon","trendsEnabled","timelinePreview","isActive","componentMap","Compose","HomeTimeline","Notifications","PublicTimeline","CommunityTimeline","HashtagTimeline","DirectTimeline","FavouritedStatuses","BookmarkedStatuses","ListTimeline","Directory","ColumnsArea","mediaQuery","matchMedia","renderComposePanel","handleLayoutChange","handleWheel","_interruptScrollAnimation","setRef","renderLoading","columnId","renderError","_jsx2","BundleColumnError","errorType","supportsPassiveEvents","passive","addListener","isRtlLayout","getElementsByTagName","classList","contains","UNSAFE_componentWillUpdate","removeListener","handleChildrenContentChange","modifier","scrollRight","scrollWidth","innerWidth","columns","isModalOpen","ref","toJS","other","BundleContainer","fetchComponent","loading","SpecificComponent","child","cloneElement","forwardRef","WrappedSwitch","decklessLocation","WrappedRoute","renderComponent","componentParams","static","frame","console","beforeUnload","keyMap","help","new","forceNew","toggleComposeSpoilers","focusColumn","reply","favourite","boost","mention","openProfile","moveDown","moveUp","back","goToHome","goToNotifications","goToLocal","goToFederated","goToDirect","goToStart","goToFavourites","goToPinned","goToProfile","goToBlocked","goToMuted","goToRequests","toggleHidden","toggleSensitive","openMedia","SwitchingColumnsArea","UNSAFE_componentWillMount","toggle","pathName","redirect","singleUserMode","owner","initialState","accounts","username","trendsAsLanding","ColumnsAreaContainer","GettingStarted","KeyboardShortcuts","About","PrivacyPolicy","Firehose","feedType","PinnedStatuses","Onboarding","Explore","AccountTimeline","withReplies","Followers","Following","AccountGallery","Status","Reblogs","Favourites","FollowRequests","Blocks","DomainBlocks","FollowedTags","Mutes","Lists","UI","draggingOver","handleBeforeUnload","isComposing","hasComposingText","hasMediaAttachments","synchronouslySubmitMarkers","returnValue","handleWindowFocus","focusApp","submitMarkers","immediate","handleWindowBlur","unfocusApp","handleDragEnter","dragTargets","dataTransfer","types","canUploadMore","handleDragOver","dataTransferIsText","dropEffect","handleDrop","files","uploadCompose","handleDragLeave","el","closeUploadModal","handleServiceWorkerPostMessage","data","warn","_debounce","clearHeight","trailing","handleResize","layout","cancel","changeLayout","handleHotkeyNew","element","querySelector","focus","handleHotkeySearch","handleHotkeyForceNew","resetCompose","handleHotkeyToggleComposeSpoilers","changeComposeSpoilerness","handleHotkeyFocusColumn","container","scrollTop","offsetTop","scrollIntoView","handleHotkeyBack","_router$history$locat","goBack","setHotkeysRef","hotkeys","handleHotkeyToggleHelp","handleHotkeyGoToHome","handleHotkeyGoToNotifications","handleHotkeyGoToLocal","handleHotkeyGoToFederated","handleHotkeyGoToDirect","handleHotkeyGoToStart","handleHotkeyGoToFavourites","handleHotkeyGoToPinned","handleHotkeyGoToProfile","handleHotkeyGoToBlocked","handleHotkeyGoToMuted","handleHotkeyGoToRequests","handleDragEnd","navigator","serviceWorker","fetchMarkers","expandHomeTimeline","expandNotifications","fetchServerTranslationLanguages","__mousetrap__","stopCallback","tagName","dropdownMenuIsOpen","handlers","HotKeys","attach","focused","classNames","pointerEvents","NotificationsContainer","LoadingBarContainer","ModalContainer","trim","firstLaunch","INTRODUCTION_VERSION","siteTitle","hydrateAction","hydrateStore","store","meta","fetchCustomEmojis","Mastodon","disabled_account_id","accessToken","access_token","permissions","disconnect","connectUserStream","shouldUpdateScroll","prevRouterProps","_location$state","_location$state2","_prevRouterProps$loca","mastodonModalKey","IntlProvider","ReduxProvider","ScrollContext","defaultTitle","titleTemplate","perf","performance","now","Date","throwIfEmpty","mark","measure","getEntriesByName","getEntriesByType","clearMarks","clearMeasures","entries","marks","startTime","endTime","entry","duration","entryType","arr","insertSorted","main","ready","async","mountNode","getElementById","getAttribute","createRoot","setupBrowserNotifications","Workbox","wb","registration","register","registerPushNotifications","start","loadPolyfills","loadLocale"],"mappings":"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","file":"js/application-48bcbf4e92ab0d8976c0.chunk.js","sourcesContent":["/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port;\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n var joined = aPath.charAt(0) === '/' ? aPath : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\nvar supportsNullProto = function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}();\nfunction identity(s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n var length = s.length;\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ || s.charCodeAt(length - 2) !== 95 /* '_' */ || s.charCodeAt(length - 3) !== 111 /* 'o' */ || s.charCodeAt(length - 4) !== 116 /* 't' */ || s.charCodeAt(length - 5) !== 111 /* 'o' */ || s.charCodeAt(length - 6) !== 114 /* 'r' */ || s.charCodeAt(length - 7) !== 112 /* 'p' */ || s.charCodeAt(length - 8) !== 95 /* '_' */ || s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n return mappingA.name - mappingB.name;\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n return mappingA.name - mappingB.name;\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n if (aStr1 > aStr2) {\n return 1;\n }\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace', ['error-stack-parser', 'stack-generator', 'stacktrace-gps'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('error-stack-parser'), require('stack-generator'), require('stacktrace-gps'));\n } else {\n root.StackTrace = factory(root.ErrorStackParser, root.StackGenerator, root.StackTraceGPS);\n }\n})(this, function StackTrace(ErrorStackParser, StackGenerator, StackTraceGPS) {\n var _options = {\n filter: function (stackframe) {\n // Filter out stackframes for this library by default\n return (stackframe.functionName || '').indexOf('StackTrace$$') === -1 && (stackframe.functionName || '').indexOf('ErrorStackParser$$') === -1 && (stackframe.functionName || '').indexOf('StackTraceGPS$$') === -1 && (stackframe.functionName || '').indexOf('StackGenerator$$') === -1;\n },\n sourceCache: {}\n };\n var _generateError = function StackTrace$$GenerateError() {\n try {\n // Error must be thrown to get stack in IE\n throw new Error();\n } catch (err) {\n return err;\n }\n };\n\n /**\n * Merge 2 given Objects. If a conflict occurs the second object wins.\n * Does not do deep merges.\n *\n * @param {Object} first base object\n * @param {Object} second overrides\n * @returns {Object} merged first and second\n * @private\n */\n function _merge(first, second) {\n var target = {};\n [first, second].forEach(function (obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n target[prop] = obj[prop];\n }\n }\n return target;\n });\n return target;\n }\n function _isShapedLikeParsableError(err) {\n return err.stack || err['opera#sourceloc'];\n }\n function _filtered(stackframes, filter) {\n if (typeof filter === 'function') {\n return stackframes.filter(filter);\n }\n return stackframes;\n }\n return {\n /**\n * Get a backtrace from invocation point.\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n get: function StackTrace$$get(opts) {\n var err = _generateError();\n return _isShapedLikeParsableError(err) ? this.fromError(err, opts) : this.generateArtificially(opts);\n },\n /**\n * Get a backtrace from invocation point.\n * IMPORTANT: Does not handle source maps or guess function names!\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n getSync: function StackTrace$$getSync(opts) {\n opts = _merge(_options, opts);\n var err = _generateError();\n var stack = _isShapedLikeParsableError(err) ? ErrorStackParser.parse(err) : StackGenerator.backtrace(opts);\n return _filtered(stack, opts.filter);\n },\n /**\n * Given an error object, parse it.\n *\n * @param {Error} error object\n * @param {Object} opts\n * @returns {Promise} for Array[StackFrame}\n */\n fromError: function StackTrace$$fromError(error, opts) {\n opts = _merge(_options, opts);\n var gps = new StackTraceGPS(opts);\n return new Promise(function (resolve) {\n var stackframes = _filtered(ErrorStackParser.parse(error), opts.filter);\n resolve(Promise.all(stackframes.map(function (sf) {\n return new Promise(function (resolve) {\n function resolveOriginal() {\n resolve(sf);\n }\n gps.pinpoint(sf).then(resolve, resolveOriginal)['catch'](resolveOriginal);\n });\n })));\n }.bind(this));\n },\n /**\n * Use StackGenerator to generate a backtrace.\n *\n * @param {Object} opts\n * @returns {Promise} of Array[StackFrame]\n */\n generateArtificially: function StackTrace$$generateArtificially(opts) {\n opts = _merge(_options, opts);\n var stackFrames = StackGenerator.backtrace(opts);\n if (typeof opts.filter === 'function') {\n stackFrames = stackFrames.filter(opts.filter);\n }\n return Promise.resolve(stackFrames);\n },\n /**\n * Given a function, wrap it such that invocations trigger a callback that\n * is called with a stack trace.\n *\n * @param {Function} fn to be instrumented\n * @param {Function} callback function to call with a stack trace on invocation\n * @param {Function} errback optional function to call with error if unable to get stack trace.\n * @param {Object} thisArg optional context object (e.g. window)\n */\n instrument: function StackTrace$$instrument(fn, callback, errback, thisArg) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n // Already instrumented, return given Function\n return fn;\n }\n var instrumented = function StackTrace$$instrumented() {\n try {\n this.get().then(callback, errback)['catch'](errback);\n return fn.apply(thisArg || this, arguments);\n } catch (e) {\n if (_isShapedLikeParsableError(e)) {\n this.fromError(e).then(callback, errback)['catch'](errback);\n }\n throw e;\n }\n }.bind(this);\n instrumented.__stacktraceOriginalFn = fn;\n return instrumented;\n },\n /**\n * Given a function that has been instrumented,\n * revert the function to it's original (non-instrumented) state.\n *\n * @param {Function} fn to de-instrument\n */\n deinstrument: function StackTrace$$deinstrument(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot de-instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n return fn.__stacktraceOriginalFn;\n } else {\n // Function not instrumented, return original\n return fn;\n }\n },\n /**\n * Given an error message and Array of StackFrames, serialize and POST to given URL.\n *\n * @param {Array} stackframes\n * @param {String} url\n * @param {String} errorMsg\n * @param {Object} requestOptions\n */\n report: function StackTrace$$report(stackframes, url, errorMsg, requestOptions) {\n return new Promise(function (resolve, reject) {\n var req = new XMLHttpRequest();\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if (req.status >= 200 && req.status < 400) {\n resolve(req.responseText);\n } else {\n reject(new Error('POST to ' + url + ' failed with status: ' + req.status));\n }\n }\n };\n req.open('post', url);\n\n // Set request headers\n req.setRequestHeader('Content-Type', 'application/json');\n if (requestOptions && typeof requestOptions.headers === 'object') {\n var headers = requestOptions.headers;\n for (var header in headers) {\n if (Object.prototype.hasOwnProperty.call(headers, header)) {\n req.setRequestHeader(header, headers[header]);\n }\n }\n }\n var reportPayload = {\n stack: stackframes\n };\n if (errorMsg !== undefined && errorMsg !== null) {\n reportPayload.message = errorMsg;\n }\n req.send(JSON.stringify(reportPayload));\n });\n }\n };\n});","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n})(this, function () {\n 'use strict';\n\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n function _getter(p) {\n return function () {\n return this[p];\n };\n }\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var objectProps = ['evalOrigin'];\n var props = booleanProps.concat(numericProps, stringProps, arrayProps, objectProps);\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n StackFrame.prototype = {\n getArgs: function () {\n return this.args;\n },\n setArgs: function (v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n getEvalOrigin: function () {\n return this.evalOrigin;\n },\n setEvalOrigin: function (v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n toString: function () {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = function (p) {\n return function (v) {\n this[p] = Boolean(v);\n };\n }(booleanProps[i]);\n }\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = function (p) {\n return function (v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n }(numericProps[j]);\n }\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = function (p) {\n return function (v) {\n this[p] = String(v);\n };\n }(stringProps[k]);\n }\n return StackFrame;\n});","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n};\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n};\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n};\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap = function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + 'or the source map\\'s \"file\" property. Both were omitted.');\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source);\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n};\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) {\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n } else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated && aOriginal && 'line' in aOriginal && 'column' in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) {\n // Cases 2 and 3.\n return;\n } else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n};\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = '';\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n } else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n next += base64VLQ.encode(mapping.generatedColumn - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1 - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n next += base64VLQ.encode(mapping.originalColumn - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n result += next;\n }\n return result;\n};\nSourceMapGenerator.prototype._generateSourcesContent = function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) ? this._sourcesContents[key] : null;\n }, this);\n};\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n return map;\n};\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n};\nexports.SourceMapGenerator = SourceMapGenerator;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0 ? (-aValue << 1) + 1 : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative ? -shifted : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n var vlq = toVLQSigned(aValue);\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = util.toSetString(aStr);\n var isDuplicate = has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n this._set[sStr] = idx;\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\nexports.ArraySet = ArraySet;","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n})(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(,.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(').replace(/^.*?\\s+/, '');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\(.+\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n // if a location was matched, pass it to extractLocation() otherwise pass all sanitizedLine\n // because this line doesn't have function name\n var locationParts = this.extractLocation(location ? location[1] : sanitizedLine);\n var functionName = location && sanitizedLine || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function (line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || e.message.indexOf('\\n') > -1 && e.message.split('\\n').length > e.stacktrace.split('\\n').length) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n return result;\n },\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n return result;\n },\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n return filtered.map(function (line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = tokens.shift() || '';\n var functionName = functionCall.replace(//, '$2').replace(/\\([^)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n }\n var args = argsRaw === undefined || argsRaw === '[arguments not available]' ? undefined : argsRaw.split(',');\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n});","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n})(this, function (StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n var curr = arguments.callee;\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({\n functionName: RegExp.$1 || undefined,\n args: args\n }));\n } else {\n stack.push(new StackFrame({\n args: args\n }));\n }\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n return stack;\n }\n };\n});","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace-gps', ['source-map', 'stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('source-map/lib/source-map-consumer'), require('stackframe'));\n } else {\n root.StackTraceGPS = factory(root.SourceMap || root.sourceMap, root.StackFrame);\n }\n})(this, function (SourceMap, StackFrame) {\n 'use strict';\n\n /**\n * Make a X-Domain request to url and callback.\n *\n * @param {String} url\n * @returns {Promise} with response text if fulfilled\n */\n function _xdr(url) {\n return new Promise(function (resolve, reject) {\n var req = new XMLHttpRequest();\n req.open('get', url);\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if (req.status >= 200 && req.status < 300 || url.substr(0, 7) === 'file://' && req.responseText) {\n resolve(req.responseText);\n } else {\n reject(new Error('HTTP status: ' + req.status + ' retrieving ' + url));\n }\n }\n };\n req.send();\n });\n }\n\n /**\n * Convert a Base64-encoded string into its original representation.\n * Used for inline sourcemaps.\n *\n * @param {String} b64str Base-64 encoded string\n * @returns {String} original representation of the base64-encoded string.\n */\n function _atob(b64str) {\n if (typeof window !== 'undefined' && window.atob) {\n return window.atob(b64str);\n } else {\n throw new Error('You must supply a polyfill for window.atob in this environment');\n }\n }\n function _parseJson(string) {\n if (typeof JSON !== 'undefined' && JSON.parse) {\n return JSON.parse(string);\n } else {\n throw new Error('You must supply a polyfill for JSON.parse in this environment');\n }\n }\n function _findFunctionName(source, lineNumber /*, columnNumber*/) {\n var syntaxes = [\n // {name} = function ({args}) TODO args capture\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*function\\b/,\n // function {name}({args}) m[1]=name m[2]=args\n /function\\s+([^('\"`]*?)\\s*\\(([^)]*)\\)/,\n // {name} = eval()\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*(?:eval|new Function)\\b/,\n // fn_name() {\n /\\b(?!(?:if|for|switch|while|with|catch)\\b)(?:(?:static)\\s+)?(\\S+)\\s*\\(.*?\\)\\s*\\{/,\n // {name} = () => {\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*\\(.*?\\)\\s*=>/];\n var lines = source.split('\\n');\n\n // Walk backwards in the source lines until we find the line which matches one of the patterns above\n var code = '';\n var maxLines = Math.min(lineNumber, 20);\n for (var i = 0; i < maxLines; ++i) {\n // lineNo is 1-based, source[] is 0-based\n var line = lines[lineNumber - i - 1];\n var commentPos = line.indexOf('//');\n if (commentPos >= 0) {\n line = line.substr(0, commentPos);\n }\n if (line) {\n code = line + code;\n var len = syntaxes.length;\n for (var index = 0; index < len; index++) {\n var m = syntaxes[index].exec(code);\n if (m && m[1]) {\n return m[1];\n }\n }\n }\n }\n return undefined;\n }\n function _ensureSupportedEnvironment() {\n if (typeof Object.defineProperty !== 'function' || typeof Object.create !== 'function') {\n throw new Error('Unable to consume source maps in older browsers');\n }\n }\n function _ensureStackFrameIsLegit(stackframe) {\n if (typeof stackframe !== 'object') {\n throw new TypeError('Given StackFrame is not an object');\n } else if (typeof stackframe.fileName !== 'string') {\n throw new TypeError('Given file name is not a String');\n } else if (typeof stackframe.lineNumber !== 'number' || stackframe.lineNumber % 1 !== 0 || stackframe.lineNumber < 1) {\n throw new TypeError('Given line number must be a positive integer');\n } else if (typeof stackframe.columnNumber !== 'number' || stackframe.columnNumber % 1 !== 0 || stackframe.columnNumber < 0) {\n throw new TypeError('Given column number must be a non-negative integer');\n }\n return true;\n }\n function _findSourceMappingURL(source) {\n var sourceMappingUrlRegExp = /\\/\\/[#@] ?sourceMappingURL=([^\\s'\"]+)\\s*$/mg;\n var lastSourceMappingUrl;\n var matchSourceMappingUrl;\n // eslint-disable-next-line no-cond-assign\n while (matchSourceMappingUrl = sourceMappingUrlRegExp.exec(source)) {\n lastSourceMappingUrl = matchSourceMappingUrl[1];\n }\n if (lastSourceMappingUrl) {\n return lastSourceMappingUrl;\n } else {\n throw new Error('sourceMappingURL not found');\n }\n }\n function _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache) {\n return new Promise(function (resolve, reject) {\n var loc = sourceMapConsumer.originalPositionFor({\n line: stackframe.lineNumber,\n column: stackframe.columnNumber\n });\n if (loc.source) {\n // cache mapped sources\n var mappedSource = sourceMapConsumer.sourceContentFor(loc.source);\n if (mappedSource) {\n sourceCache[loc.source] = mappedSource;\n }\n resolve(\n // given stackframe and source location, update stackframe\n new StackFrame({\n functionName: loc.name || stackframe.functionName,\n args: stackframe.args,\n fileName: loc.source,\n lineNumber: loc.line,\n columnNumber: loc.column\n }));\n } else {\n reject(new Error('Could not get original source for given stackframe and source map'));\n }\n });\n }\n\n /**\n * @constructor\n * @param {Object} opts\n * opts.sourceCache = {url: \"Source String\"} => preload source cache\n * opts.sourceMapConsumerCache = {/path/file.js.map: SourceMapConsumer}\n * opts.offline = True to prevent network requests.\n * Best effort without sources or source maps.\n * opts.ajax = Promise returning function to make X-Domain requests\n */\n return function StackTraceGPS(opts) {\n if (!(this instanceof StackTraceGPS)) {\n return new StackTraceGPS(opts);\n }\n opts = opts || {};\n this.sourceCache = opts.sourceCache || {};\n this.sourceMapConsumerCache = opts.sourceMapConsumerCache || {};\n this.ajax = opts.ajax || _xdr;\n this._atob = opts.atob || _atob;\n this._get = function _get(location) {\n return new Promise(function (resolve, reject) {\n var isDataUrl = location.substr(0, 5) === 'data:';\n if (this.sourceCache[location]) {\n resolve(this.sourceCache[location]);\n } else if (opts.offline && !isDataUrl) {\n reject(new Error('Cannot make network requests in offline mode'));\n } else {\n if (isDataUrl) {\n // data URLs can have parameters.\n // see http://tools.ietf.org/html/rfc2397\n var supportedEncodingRegexp = /^data:application\\/json;([\\w=:\"-]+;)*base64,/;\n var match = location.match(supportedEncodingRegexp);\n if (match) {\n var sourceMapStart = match[0].length;\n var encodedSource = location.substr(sourceMapStart);\n var source = this._atob(encodedSource);\n this.sourceCache[location] = source;\n resolve(source);\n } else {\n reject(new Error('The encoding of the inline sourcemap is not supported'));\n }\n } else {\n var xhrPromise = this.ajax(location, {\n method: 'get'\n });\n // Cache the Promise to prevent duplicate in-flight requests\n this.sourceCache[location] = xhrPromise;\n xhrPromise.then(resolve, reject);\n }\n }\n }.bind(this));\n };\n\n /**\n * Creating SourceMapConsumers is expensive, so this wraps the creation of a\n * SourceMapConsumer in a per-instance cache.\n *\n * @param {String} sourceMappingURL = URL to fetch source map from\n * @param {String} defaultSourceRoot = Default source root for source map if undefined\n * @returns {Promise} that resolves a SourceMapConsumer\n */\n this._getSourceMapConsumer = function _getSourceMapConsumer(sourceMappingURL, defaultSourceRoot) {\n return new Promise(function (resolve) {\n if (this.sourceMapConsumerCache[sourceMappingURL]) {\n resolve(this.sourceMapConsumerCache[sourceMappingURL]);\n } else {\n var sourceMapConsumerPromise = new Promise(function (resolve, reject) {\n return this._get(sourceMappingURL).then(function (sourceMapSource) {\n if (typeof sourceMapSource === 'string') {\n sourceMapSource = _parseJson(sourceMapSource.replace(/^\\)\\]\\}'/, ''));\n }\n if (typeof sourceMapSource.sourceRoot === 'undefined') {\n sourceMapSource.sourceRoot = defaultSourceRoot;\n }\n resolve(new SourceMap.SourceMapConsumer(sourceMapSource));\n }).catch(reject);\n }.bind(this));\n this.sourceMapConsumerCache[sourceMappingURL] = sourceMapConsumerPromise;\n resolve(sourceMapConsumerPromise);\n }\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, enhance function name and use source maps for a\n * better StackFrame.\n *\n * @param {StackFrame} stackframe object\n * @returns {Promise} that resolves with with source-mapped StackFrame\n */\n this.pinpoint = function StackTraceGPS$$pinpoint(stackframe) {\n return new Promise(function (resolve, reject) {\n this.getMappedLocation(stackframe).then(function (mappedStackFrame) {\n function resolveMappedStackFrame() {\n resolve(mappedStackFrame);\n }\n this.findFunctionName(mappedStackFrame).then(resolve, resolveMappedStackFrame)\n // eslint-disable-next-line no-unexpected-multiline\n ['catch'](resolveMappedStackFrame);\n }.bind(this), reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, guess function name from location information.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.findFunctionName = function StackTraceGPS$$findFunctionName(stackframe) {\n return new Promise(function (resolve, reject) {\n _ensureStackFrameIsLegit(stackframe);\n this._get(stackframe.fileName).then(function getSourceCallback(source) {\n var lineNumber = stackframe.lineNumber;\n var columnNumber = stackframe.columnNumber;\n var guessedFunctionName = _findFunctionName(source, lineNumber, columnNumber);\n // Only replace functionName if we found something\n if (guessedFunctionName) {\n resolve(new StackFrame({\n functionName: guessedFunctionName,\n args: stackframe.args,\n fileName: stackframe.fileName,\n lineNumber: lineNumber,\n columnNumber: columnNumber\n }));\n } else {\n resolve(stackframe);\n }\n }, reject)['catch'](reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, seek source-mapped location and return new enhanced StackFrame.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.getMappedLocation = function StackTraceGPS$$getMappedLocation(stackframe) {\n return new Promise(function (resolve, reject) {\n _ensureSupportedEnvironment();\n _ensureStackFrameIsLegit(stackframe);\n var sourceCache = this.sourceCache;\n var fileName = stackframe.fileName;\n this._get(fileName).then(function (source) {\n var sourceMappingURL = _findSourceMappingURL(source);\n var isDataUrl = sourceMappingURL.substr(0, 5) === 'data:';\n var defaultSourceRoot = fileName.substring(0, fileName.lastIndexOf('/') + 1);\n if (sourceMappingURL[0] !== '/' && !isDataUrl && !/^https?:\\/\\/|^\\/\\//i.test(sourceMappingURL)) {\n sourceMappingURL = defaultSourceRoot + sourceMappingURL;\n }\n return this._getSourceMapConsumer(sourceMappingURL, defaultSourceRoot).then(function (sourceMapConsumer) {\n return _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache).then(resolve)['catch'](function () {\n resolve(stackframe);\n });\n });\n }.bind(this), reject)['catch'](reject);\n }.bind(this));\n };\n };\n});","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return charCode - bigA;\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return charCode - littleA + littleOffset;\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return charCode - zero + numberOffset;\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA || util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {\n generatedLine: -1,\n generatedColumn: 0\n };\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach = function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n};\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\nexports.MappingList = MappingList;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\nfunction SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n return sourceMap.sections != null ? new IndexedSourceMapConsumer(sourceMap) : new BasicSourceMapConsumer(sourceMap);\n}\nSourceMapConsumer.fromSourceMap = function (aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n};\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n return this.__generatedMappings;\n }\n});\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n return this.__originalMappings;\n }\n});\nSourceMapConsumer.prototype._charIsMappingSeparator = function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n};\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n};\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping = function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n};\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor = function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n var mappings = [];\n var index = this._findMapping(needle, this._originalMappings, \"originalLine\", \"originalColumn\", util.compareByOriginalPositions, binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping && mapping.originalLine === line && mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n mapping = this._originalMappings[++index];\n }\n }\n }\n return mappings;\n};\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n sources = sources.map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) ? util.relative(sourceRoot, source) : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n}\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap = function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping();\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n destOriginalMappings.push(destMapping);\n }\n destGeneratedMappings.push(destMapping);\n }\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n return smc;\n};\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n } else if (aStr.charAt(index) === ',') {\n index++;\n } else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n};\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping = function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got ' + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got ' + aNeedle[aColumnName]);\n }\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n};\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans = function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n};\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor = function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n var index = this._findMapping(needle, this._generatedMappings, \"generatedLine\", \"generatedColumn\", util.compareByGeneratedPositionsDeflated, util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND));\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n};\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources = function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() && !this.sourcesContent.some(function (sc) {\n return sc == null;\n });\n};\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor = function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n var url;\n if (this.sourceRoot != null && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\" && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)];\n }\n if ((!url.path || url.path == \"/\") && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n } else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n};\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n var index = this._findMapping(needle, this._originalMappings, \"originalLine\", \"originalColumn\", util.compareByOriginalPositions, util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND));\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n};\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n this._sources = new ArraySet();\n this._names = new ArraySet();\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n if (offsetLine < lastOffset.line || offsetLine === lastOffset.line && offsetColumn < lastOffset.column) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n };\n });\n}\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor = function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections, function (needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n return needle.generatedColumn - section.generatedOffset.generatedColumn;\n });\n var section = this._sections[sectionIndex];\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n return section.consumer.originalPositionFor({\n line: needle.generatedLine - (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn - (section.generatedOffset.generatedLine === needle.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0),\n bias: aArgs.bias\n });\n};\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources = function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n};\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor = function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n } else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n};\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor = function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line + (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column + (section.generatedOffset.generatedLine === generatedPosition.line ? section.generatedOffset.generatedColumn - 1 : 0)\n };\n return ret;\n }\n }\n return {\n line: null,\n column: null\n };\n};\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings = function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine + (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn + (section.generatedOffset.generatedLine === mapping.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n};\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n } else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n } else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n return index;\n};","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + Math.random() * (high - low));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap = function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are removed from this array, by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var shiftNextLine = function () {\n var lineContents = remainingLines.shift();\n // The last line of a file might not have a newline.\n var newLine = remainingLines.shift() || \"\";\n return lineContents + newLine;\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1,\n lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[0];\n var code = nextLine.substr(0, mapping.generatedColumn - lastGeneratedColumn);\n remainingLines[0] = nextLine.substr(mapping.generatedColumn - lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[0];\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLines.length > 0) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n return node;\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath ? util.join(aRelativePath, mapping.source) : mapping.source;\n node.add(new SourceNode(mapping.originalLine, mapping.originalColumn, source, code, mapping.name));\n }\n }\n};\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n } else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n } else {\n throw new TypeError(\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk);\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length - 1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n } else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n } else {\n throw new TypeError(\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk);\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n } else {\n if (chunk !== '') {\n aFn(chunk, {\n source: this.source,\n line: this.line,\n column: this.column,\n name: this.name\n });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len - 1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n } else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n } else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent = function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n};\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents = function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n};\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null && original.line !== null && original.column !== null) {\n if (lastOriginalSource !== original.source || lastOriginalLine !== original.line || lastOriginalColumn !== original.column || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n return {\n code: generated.code,\n map: map\n };\n};\nexports.SourceNode = SourceNode;","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport { Helmet } from 'react-helmet';\n\nimport StackTrace from 'stacktrace-js';\n\nimport { version, source_url } from 'mastodon/initial_state';\n\nexport default class ErrorBoundary extends PureComponent {\n\n static propTypes = {\n children: PropTypes.node,\n };\n\n state = {\n hasError: false,\n errorMessage: undefined,\n stackTrace: undefined,\n mappedStackTrace: undefined,\n componentStack: undefined,\n };\n\n componentDidCatch (error, info) {\n this.setState({\n hasError: true,\n errorMessage: error.toString(),\n stackTrace: error.stack,\n componentStack: info && info.componentStack,\n mappedStackTrace: undefined,\n });\n\n StackTrace.fromError(error).then((stackframes) => {\n this.setState({\n mappedStackTrace: stackframes.map((sf) => sf.toString()).join('\\n'),\n });\n }).catch(() => {\n this.setState({\n mappedStackTrace: undefined,\n });\n });\n }\n\n handleCopyStackTrace = () => {\n const { errorMessage, stackTrace, mappedStackTrace } = this.state;\n const textarea = document.createElement('textarea');\n\n let contents = [errorMessage, stackTrace];\n if (mappedStackTrace) {\n contents.push(mappedStackTrace);\n }\n\n textarea.textContent = contents.join('\\n\\n\\n');\n textarea.style.position = 'fixed';\n\n document.body.appendChild(textarea);\n\n try {\n textarea.select();\n document.execCommand('copy');\n } catch (e) {\n\n } finally {\n document.body.removeChild(textarea);\n }\n\n this.setState({ copied: true });\n setTimeout(() => this.setState({ copied: false }), 700);\n };\n\n render() {\n const { hasError, copied, errorMessage } = this.state;\n\n if (!hasError) {\n return this.props.children;\n }\n\n const likelyBrowserAddonIssue = errorMessage && errorMessage.includes('NotFoundError');\n\n return (\n
\n
\n

\n { likelyBrowserAddonIssue ? (\n \n ) : (\n \n )}\n

\n\n

\n { likelyBrowserAddonIssue ? (\n \n ) : (\n \n )}\n

\n\n

Mastodon v{version} · ·

\n
\n\n \n \n \n
\n );\n }\n\n}\n","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n _inherits(Router, _React$Component);\n function Router() {\n var _temp, _this, _ret;\n _classCallCheck(this, Router);\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props.history.location.pathname)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n Router.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n history: this.props.history,\n route: {\n location: this.props.history.location,\n match: this.state.match\n }\n })\n };\n };\n Router.prototype.computeMatch = function computeMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n Router.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n var _props = this.props,\n children = _props.children,\n history = _props.history;\n invariant(children == null || React.Children.count(children) === 1, \"A may have only one child element\");\n\n // Do this here so we can setState when a changes the\n // location in componentWillMount. This happens e.g. when doing\n // server rendering using a .\n this.unlisten = history.listen(function () {\n _this2.setState({\n match: _this2.computeMatch(history.location.pathname)\n });\n });\n };\n Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(this.props.history === nextProps.history, \"You cannot change \");\n };\n Router.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unlisten();\n };\n Router.prototype.render = function render() {\n var children = this.props.children;\n return children ? React.Children.only(children) : null;\n };\n return Router;\n}(React.Component);\nRouter.propTypes = {\n history: PropTypes.object.isRequired,\n children: PropTypes.node\n};\nRouter.contextTypes = {\n router: PropTypes.object\n};\nRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\nexport default Router;","import type { PropsWithChildren } from 'react';\nimport React from 'react';\n\nimport { createBrowserHistory } from 'history';\nimport { Router as OriginalRouter } from 'react-router';\n\nimport { layoutFromWindow } from 'mastodon/is_mobile';\n\ninterface MastodonLocationState {\n fromMastodon?: boolean;\n mastodonModalKey?: string;\n}\n\nconst browserHistory = createBrowserHistory<\n MastodonLocationState | undefined\n>();\nconst originalPush = browserHistory.push.bind(browserHistory);\nconst originalReplace = browserHistory.replace.bind(browserHistory);\n\nbrowserHistory.push = (path: string, state?: MastodonLocationState) => {\n state = state ?? {};\n state.fromMastodon = true;\n\n if (layoutFromWindow() === 'multi-column' && !path.startsWith('/deck')) {\n originalPush(`/deck${path}`, state);\n } else {\n originalPush(path, state);\n }\n};\n\nbrowserHistory.replace = (path: string, state?: MastodonLocationState) => {\n if (browserHistory.location.state?.fromMastodon) {\n state = state ?? {};\n state.fromMastodon = true;\n }\n\n if (layoutFromWindow() === 'multi-column' && !path.startsWith('/deck')) {\n originalReplace(`/deck${path}`, state);\n } else {\n originalReplace(path, state);\n }\n};\n\nexport const Router: React.FC = ({ children }) => {\n return {children};\n};\n","import pathToRegexp from \"path-to-regexp\";\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\nvar compileGenerator = function compileGenerator(pattern) {\n var cacheKey = pattern;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n if (cache[pattern]) return cache[pattern];\n var compiledGenerator = pathToRegexp.compile(pattern);\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledGenerator;\n cacheCount++;\n }\n return compiledGenerator;\n};\n\n/**\n * Public API for generating a URL pathname from a pattern and parameters.\n */\nvar generatePath = function generatePath() {\n var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (pattern === \"/\") {\n return pattern;\n }\n var generator = compileGenerator(pattern);\n return generator(params, {\n pretty: true\n });\n};\nexport default generatePath;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for updating the location programmatically\n * with a component.\n */\n\nvar Redirect = function (_React$Component) {\n _inherits(Redirect, _React$Component);\n function Redirect() {\n _classCallCheck(this, Redirect);\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n Redirect.prototype.isStatic = function isStatic() {\n return this.context.router && this.context.router.staticContext;\n };\n Redirect.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n if (this.isStatic()) this.perform();\n };\n Redirect.prototype.componentDidMount = function componentDidMount() {\n if (!this.isStatic()) this.perform();\n };\n Redirect.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var prevTo = createLocation(prevProps.to);\n var nextTo = createLocation(this.props.to);\n if (locationsAreEqual(prevTo, nextTo)) {\n warning(false, \"You tried to redirect to the same route you're currently on: \" + (\"\\\"\" + nextTo.pathname + nextTo.search + \"\\\"\"));\n return;\n }\n this.perform();\n };\n Redirect.prototype.computeTo = function computeTo(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to;\n if (computedMatch) {\n if (typeof to === \"string\") {\n return generatePath(to, computedMatch.params);\n } else {\n return _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n });\n }\n }\n return to;\n };\n Redirect.prototype.perform = function perform() {\n var history = this.context.router.history;\n var push = this.props.push;\n var to = this.computeTo(this.props);\n if (push) {\n history.push(to);\n } else {\n history.replace(to);\n }\n };\n Redirect.prototype.render = function render() {\n return null;\n };\n return Redirect;\n}(React.Component);\nRedirect.propTypes = {\n computedMatch: PropTypes.object,\n // private, from \n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nRedirect.defaultProps = {\n push: false\n};\nRedirect.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired\n }).isRequired,\n staticContext: PropTypes.object\n }).isRequired\n};\nexport default Redirect;","// Written in this round about way for babel-transform-imports\nimport Redirect from \"react-router/es/Redirect\";\nexport default Redirect;","import PropTypes from 'prop-types';\n\nimport { defineMessages, injectIntl } from 'react-intl';\n\nimport { Link } from 'react-router-dom';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { connect } from 'react-redux';\n\nimport { Avatar } from 'mastodon/components/avatar';\nimport { DisplayName } from 'mastodon/components/display_name';\nimport { IconButton } from 'mastodon/components/icon_button';\n\nconst messages = defineMessages({\n close: { id: 'lightbox.close', defaultMessage: 'Close' },\n});\n\nconst mapStateToProps = (state, { accountId }) => ({\n account: state.getIn(['accounts', accountId]),\n});\n\nclass Header extends ImmutablePureComponent {\n\n static propTypes = {\n accountId: PropTypes.string.isRequired,\n statusId: PropTypes.string.isRequired,\n account: ImmutablePropTypes.map.isRequired,\n onClose: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n const { account, statusId, onClose, intl } = this.props;\n\n return (\n
\n \n \n \n \n\n \n
\n );\n }\n\n}\n\nexport default connect(mapStateToProps)(injectIntl(Header));\n","import PropTypes from 'prop-types';\nimport { Component } from 'react';\n\nimport { connect } from 'react-redux';\n\nimport { removePictureInPicture } from 'mastodon/actions/picture_in_picture';\nimport Audio from 'mastodon/features/audio';\nimport Video from 'mastodon/features/video';\n\nimport Footer from './components/footer';\nimport Header from './components/header';\n\nconst mapStateToProps = state => ({\n ...state.get('picture_in_picture'),\n});\n\nclass PictureInPicture extends Component {\n\n static propTypes = {\n statusId: PropTypes.string,\n accountId: PropTypes.string,\n type: PropTypes.string,\n src: PropTypes.string,\n muted: PropTypes.bool,\n volume: PropTypes.number,\n currentTime: PropTypes.number,\n poster: PropTypes.string,\n backgroundColor: PropTypes.string,\n foregroundColor: PropTypes.string,\n accentColor: PropTypes.string,\n dispatch: PropTypes.func.isRequired,\n };\n\n handleClose = () => {\n const { dispatch } = this.props;\n dispatch(removePictureInPicture());\n };\n\n render () {\n const { type, src, currentTime, accountId, statusId } = this.props;\n\n if (!currentTime) {\n return null;\n }\n\n let player;\n\n if (type === 'video') {\n player = (\n \n );\n } else if (type === 'audio') {\n player = (\n \n );\n }\n\n return (\n
\n
\n\n {player}\n\n
\n
\n );\n }\n\n}\n\nexport default connect(mapStateToProps)(PictureInPicture);\n","import logo from 'mastodon/../images/logo.svg';\n\nexport const WordmarkLogo: React.FC = () => (\n \n Mastodon\n \n \n);\n\nexport const SymbolLogo: React.FC = () => (\n Mastodon\n);\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport { Link, withRouter } from 'react-router-dom';\n\nimport { connect } from 'react-redux';\n\nimport { openModal } from 'mastodon/actions/modal';\nimport { fetchServer } from 'mastodon/actions/server';\nimport { Avatar } from 'mastodon/components/avatar';\nimport { Icon } from 'mastodon/components/icon';\nimport { WordmarkLogo, SymbolLogo } from 'mastodon/components/logo';\nimport { registrationsOpen, me, sso_redirect } from 'mastodon/initial_state';\n\nconst Account = connect(state => ({\n account: state.getIn(['accounts', me]),\n}))(({ account }) => (\n \n \n \n));\n\nconst messages = defineMessages({\n search: { id: 'navigation_bar.search', defaultMessage: 'Search' },\n});\n\nconst mapStateToProps = (state) => ({\n signupUrl: state.getIn(['server', 'server', 'registrations', 'url'], null) || '/auth/sign_up',\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n openClosedRegistrationsModal() {\n dispatch(openModal({ modalType: 'CLOSED_REGISTRATIONS' }));\n },\n dispatchServer() {\n dispatch(fetchServer());\n }\n});\n\nclass Header extends PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object,\n };\n\n static propTypes = {\n openClosedRegistrationsModal: PropTypes.func,\n location: PropTypes.object,\n signupUrl: PropTypes.string.isRequired,\n dispatchServer: PropTypes.func,\n intl: PropTypes.object.isRequired,\n };\n\n componentDidMount () {\n const { dispatchServer } = this.props;\n dispatchServer();\n }\n\n render () {\n const { signedIn } = this.context.identity;\n const { location, openClosedRegistrationsModal, signupUrl, intl } = this.props;\n\n let content;\n\n if (signedIn) {\n content = (\n <>\n {location.pathname !== '/search' && }\n {location.pathname !== '/publish' && }\n \n \n );\n } else {\n\n if (sso_redirect) {\n content = (\n \n )\n } else {\n let signupButton;\n\n if (registrationsOpen) {\n signupButton = (\n \n \n \n );\n } else {\n signupButton = (\n \n );\n }\n\n content = (\n <>\n {signupButton}\n \n \n );\n }\n }\n\n return (\n
\n \n \n \n \n\n
\n {content}\n
\n
\n );\n }\n\n}\n\nexport default injectIntl(withRouter(connect(mapStateToProps, mapDispatchToProps)(Header)));\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport spring from 'react-motion/lib/spring';\n\nimport Motion from '../util/optional_motion';\n\nexport default class UploadArea extends PureComponent {\n\n static propTypes = {\n active: PropTypes.bool,\n onClose: PropTypes.func,\n };\n\n handleKeyUp = (e) => {\n const keyCode = e.keyCode;\n if (this.props.active) {\n switch(keyCode) {\n case 27:\n e.preventDefault();\n e.stopPropagation();\n this.props.onClose();\n break;\n }\n }\n };\n\n componentDidMount () {\n window.addEventListener('keyup', this.handleKeyUp, false);\n }\n\n componentWillUnmount () {\n window.removeEventListener('keyup', this.handleKeyUp);\n }\n\n render () {\n const { active } = this.props;\n\n return (\n \n {({ backgroundOpacity, backgroundScale }) => (\n
\n
\n
\n
\n
\n
\n )}\n \n );\n }\n\n}\n","import PropTypes from 'prop-types';\n\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\nimport Column from '../../../components/column';\nimport ColumnHeader from '../../../components/column_header';\n\nexport default class ColumnLoading extends ImmutablePureComponent {\n\n static propTypes = {\n title: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),\n icon: PropTypes.string,\n multiColumn: PropTypes.bool,\n };\n\n static defaultProps = {\n title: '',\n icon: '',\n };\n\n render() {\n let { title, icon, multiColumn } = this.props;\n\n return (\n \n \n
\n \n );\n }\n\n}\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport { Link } from 'react-router-dom';\n\nimport { connect } from 'react-redux';\n\nimport { fetchServer } from 'mastodon/actions/server';\nimport { ServerHeroImage } from 'mastodon/components/server_hero_image';\nimport { ShortNumber } from 'mastodon/components/short_number';\nimport { Skeleton } from 'mastodon/components/skeleton';\nimport Account from 'mastodon/containers/account_container';\nimport { domain } from 'mastodon/initial_state';\n\nconst messages = defineMessages({\n aboutActiveUsers: { id: 'server_banner.about_active_users', defaultMessage: 'People using this server during the last 30 days (Monthly Active Users)' },\n});\n\nconst mapStateToProps = state => ({\n server: state.getIn(['server', 'server']),\n});\n\nclass ServerBanner extends PureComponent {\n\n static propTypes = {\n server: PropTypes.object,\n dispatch: PropTypes.func,\n intl: PropTypes.object,\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\n dispatch(fetchServer());\n }\n\n render () {\n const { server, intl } = this.props;\n const isLoading = server.get('isLoading');\n\n return (\n
\n
\n {domain}, mastodon: Mastodon }} />\n
\n\n \n\n
\n {isLoading ? (\n <>\n \n
\n \n
\n \n \n ) : server.get('description')}\n
\n\n
\n
\n

\n\n \n
\n\n
\n

\n\n {isLoading ? (\n <>\n \n
\n \n \n ) : (\n <>\n \n
\n \n \n )}\n
\n
\n\n
\n\n \n
\n );\n }\n\n}\n\nexport default connect(mapStateToProps)(injectIntl(ServerBanner));\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { connect } from 'react-redux';\n\nimport { changeComposing, mountCompose, unmountCompose } from 'mastodon/actions/compose';\nimport ServerBanner from 'mastodon/components/server_banner';\nimport ComposeFormContainer from 'mastodon/features/compose/containers/compose_form_container';\nimport NavigationContainer from 'mastodon/features/compose/containers/navigation_container';\nimport SearchContainer from 'mastodon/features/compose/containers/search_container';\n\nimport LinkFooter from './link_footer';\n\nclass ComposePanel extends PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n };\n\n onFocus = () => {\n const { dispatch } = this.props;\n dispatch(changeComposing(true));\n };\n\n onBlur = () => {\n const { dispatch } = this.props;\n dispatch(changeComposing(false));\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\n dispatch(mountCompose());\n }\n\n componentWillUnmount () {\n const { dispatch } = this.props;\n dispatch(unmountCompose());\n }\n\n render() {\n const { signedIn } = this.context.identity;\n\n return (\n
\n \n\n {!signedIn && (\n <>\n \n
\n \n )}\n\n {signedIn && (\n <>\n \n \n \n )}\n\n \n
\n );\n }\n\n}\n\nexport default connect()(ComposePanel);\n","const DrawerLoading = () => (\n
\n
\n
\n
\n
\n);\n\nexport default DrawerLoading;\n","import PropTypes from 'prop-types';\n\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\nimport Hashtag from 'mastodon/components/hashtag';\n\nconst messages = defineMessages({\n lastStatusAt: { id: 'account.featured_tags.last_status_at', defaultMessage: 'Last post on {date}' },\n empty: { id: 'account.featured_tags.last_status_never', defaultMessage: 'No posts' },\n});\n\nclass FeaturedTags extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n account: ImmutablePropTypes.map,\n featuredTags: ImmutablePropTypes.list,\n tagged: PropTypes.string,\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n const { account, featuredTags, intl } = this.props;\n\n if (!account || account.get('suspended') || featuredTags.isEmpty()) {\n return null;\n }\n\n return (\n
\n

}} />

\n\n {featuredTags.take(3).map(featuredTag => (\n 0) ? intl.formatMessage(messages.lastStatusAt, { date: intl.formatDate(featuredTag.get('last_status_at'), { month: 'short', day: '2-digit' }) }) : intl.formatMessage(messages.empty)}\n />\n ))}\n
\n );\n }\n\n}\n\nexport default injectIntl(FeaturedTags);\n","import { List as ImmutableList } from 'immutable';\nimport { connect } from 'react-redux';\n\nimport { makeGetAccount } from 'mastodon/selectors';\n\nimport FeaturedTags from '../components/featured_tags';\n\nconst mapStateToProps = () => {\n const getAccount = makeGetAccount();\n\n return (state, { accountId }) => ({\n account: getAccount(state, accountId),\n featuredTags: state.getIn(['user_lists', 'featured_tags', accountId, 'items'], ImmutableList()),\n });\n};\n\nexport default connect(mapStateToProps)(FeaturedTags);\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { connect } from 'react-redux';\n\nimport FeaturedTags from 'mastodon/features/account/containers/featured_tags_container';\nimport { normalizeForLookup } from 'mastodon/reducers/accounts_map';\n\nconst mapStateToProps = (state, { match: { params: { acct } } }) => {\n const accountId = state.getIn(['accounts_map', normalizeForLookup(acct)]);\n\n if (!accountId) {\n return {\n isLoading: true,\n };\n }\n\n return {\n accountId,\n isLoading: false,\n };\n};\n\nclass AccountNavigation extends PureComponent {\n\n static propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n acct: PropTypes.string,\n tagged: PropTypes.string,\n }).isRequired,\n }).isRequired,\n\n accountId: PropTypes.string,\n isLoading: PropTypes.bool,\n };\n\n render () {\n const { accountId, isLoading, match: { params: { tagged } } } = this.props;\n\n if (isLoading) {\n return null;\n }\n\n return (\n <>\n
\n \n \n );\n }\n\n}\n\nexport default connect(mapStateToProps)(AccountNavigation);\n","import { PureComponent } from 'react';\n\nimport { Switch, Route, withRouter } from 'react-router-dom';\n\nimport AccountNavigation from 'mastodon/features/account/navigation';\nimport Trends from 'mastodon/features/getting_started/containers/trends_container';\nimport { showTrends } from 'mastodon/initial_state';\n\nconst DefaultNavigation = () => (\n showTrends ? (\n <>\n
\n \n \n ) : null\n);\n\nclass NavigationPortal extends PureComponent {\n\n render () {\n return (\n \n \n \n \n \n \n \n \n \n );\n }\n\n}\nexport default withRouter(NavigationPortal);\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport { Link } from 'react-router-dom';\n\nimport { connect } from 'react-redux';\n\nimport { openModal } from 'mastodon/actions/modal';\nimport { disabledAccountId, movedToAccountId, domain } from 'mastodon/initial_state';\nimport { logOut } from 'mastodon/utils/log_out';\n\nconst messages = defineMessages({\n logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' },\n logoutConfirm: { id: 'confirmations.logout.confirm', defaultMessage: 'Log out' },\n});\n\nconst mapStateToProps = (state) => ({\n disabledAcct: state.getIn(['accounts', disabledAccountId, 'acct']),\n movedToAcct: movedToAccountId ? state.getIn(['accounts', movedToAccountId, 'acct']) : undefined,\n});\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n onLogout () {\n dispatch(openModal({\n modalType: 'CONFIRM',\n modalProps: {\n message: intl.formatMessage(messages.logoutMessage),\n confirm: intl.formatMessage(messages.logoutConfirm),\n closeWhenConfirm: false,\n onConfirm: () => logOut(),\n },\n }));\n },\n});\n\nclass DisabledAccountBanner extends PureComponent {\n\n static propTypes = {\n disabledAcct: PropTypes.string.isRequired,\n movedToAcct: PropTypes.string,\n onLogout: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleLogOutClick = e => {\n e.preventDefault();\n e.stopPropagation();\n\n this.props.onLogout();\n\n return false;\n };\n\n render () {\n const { disabledAcct, movedToAcct } = this.props;\n\n const disabledAccountLink = (\n \n {disabledAcct}@{domain}\n \n );\n\n return (\n
\n

\n {movedToAcct ? (\n {movedToAcct.includes('@') ? movedToAcct : `${movedToAcct}@${domain}`},\n }}\n />\n ) : (\n \n )}\n

\n \n \n \n \n
\n );\n }\n\n}\n\nexport default injectIntl(connect(mapStateToProps, mapDispatchToProps)(DisabledAccountBanner));\n","import PropTypes from 'prop-types';\nimport { Component } from 'react';\n\nimport { injectIntl, defineMessages } from 'react-intl';\n\nimport { List as ImmutableList } from 'immutable';\nimport { connect } from 'react-redux';\n\nimport { fetchFollowRequests } from 'mastodon/actions/accounts';\nimport { IconWithBadge } from 'mastodon/components/icon_with_badge';\nimport ColumnLink from 'mastodon/features/ui/components/column_link';\n\nconst messages = defineMessages({\n text: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },\n});\n\nconst mapStateToProps = state => ({\n count: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size,\n});\n\nclass FollowRequestsColumnLink extends Component {\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n count: PropTypes.number.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\n\n dispatch(fetchFollowRequests());\n }\n\n render () {\n const { count, intl } = this.props;\n\n if (count === 0) {\n return null;\n }\n\n return (\n }\n text={intl.formatMessage(messages.text)}\n />\n );\n }\n\n}\n\nexport default injectIntl(connect(mapStateToProps)(FollowRequestsColumnLink));\n","import PropTypes from 'prop-types';\n\nimport { withRouter } from 'react-router-dom';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { connect } from 'react-redux';\nimport { createSelector } from 'reselect';\n\nimport { fetchLists } from 'mastodon/actions/lists';\n\nimport ColumnLink from './column_link';\n\nconst getOrderedLists = createSelector([state => state.get('lists')], lists => {\n if (!lists) {\n return lists;\n }\n\n return lists.toList().filter(item => !!item).sort((a, b) => a.get('title').localeCompare(b.get('title'))).take(4);\n});\n\nconst mapStateToProps = state => ({\n lists: getOrderedLists(state),\n});\n\nclass ListPanel extends ImmutablePureComponent {\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n lists: ImmutablePropTypes.list,\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\n dispatch(fetchLists());\n }\n\n render () {\n const { lists } = this.props;\n\n if (!lists || lists.isEmpty()) {\n return null;\n }\n\n return (\n
\n
\n\n {lists.map(list => (\n \n ))}\n
\n );\n }\n\n}\n\nexport default withRouter(connect(mapStateToProps)(ListPanel));\n","import { connect } from 'react-redux';\n\nimport { IconWithBadge } from 'mastodon/components/icon_with_badge';\n\nconst mapStateToProps = state => ({\n count: state.getIn(['notifications', 'unread']),\n id: 'bell',\n});\n\nexport default connect(mapStateToProps)(IconWithBadge);\n","import { useCallback } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\n\nimport { openModal } from 'mastodon/actions/modal';\nimport { registrationsOpen, sso_redirect } from 'mastodon/initial_state';\nimport { useAppDispatch, useAppSelector } from 'mastodon/store';\n\nconst SignInBanner = () => {\n const dispatch = useAppDispatch();\n\n const openClosedRegistrationsModal = useCallback(\n () => dispatch(openModal({ modalType: 'CLOSED_REGISTRATIONS' })),\n [dispatch],\n );\n\n let signupButton;\n\n const signupUrl = useAppSelector((state) => state.getIn(['server', 'server', 'registrations', 'url'], null) || '/auth/sign_up');\n\n if (sso_redirect) {\n return (\n
\n

\n \n
\n )\n }\n\n if (registrationsOpen) {\n signupButton = (\n \n \n \n );\n } else {\n signupButton = (\n \n );\n }\n\n return (\n
\n

\n {signupButton}\n \n
\n );\n};\n\nexport default SignInBanner;\n","import PropTypes from 'prop-types';\nimport { Component } from 'react';\n\nimport { defineMessages, injectIntl } from 'react-intl';\n\nimport { Link } from 'react-router-dom';\n\nimport { WordmarkLogo } from 'mastodon/components/logo';\nimport NavigationPortal from 'mastodon/components/navigation_portal';\nimport { timelinePreview, trendsEnabled } from 'mastodon/initial_state';\nimport { transientSingleColumn } from 'mastodon/is_mobile';\n\nimport ColumnLink from './column_link';\nimport DisabledAccountBanner from './disabled_account_banner';\nimport FollowRequestsColumnLink from './follow_requests_column_link';\nimport ListPanel from './list_panel';\nimport NotificationsCounterIcon from './notifications_counter_icon';\nimport SignInBanner from './sign_in_banner';\n\nconst messages = defineMessages({\n home: { id: 'tabs_bar.home', defaultMessage: 'Home' },\n notifications: { id: 'tabs_bar.notifications', defaultMessage: 'Notifications' },\n explore: { id: 'explore.title', defaultMessage: 'Explore' },\n firehose: { id: 'column.firehose', defaultMessage: 'Live feeds' },\n direct: { id: 'navigation_bar.direct', defaultMessage: 'Private mentions' },\n favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favorites' },\n bookmarks: { id: 'navigation_bar.bookmarks', defaultMessage: 'Bookmarks' },\n lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' },\n preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },\n followsAndFollowers: { id: 'navigation_bar.follows_and_followers', defaultMessage: 'Follows and followers' },\n about: { id: 'navigation_bar.about', defaultMessage: 'About' },\n search: { id: 'navigation_bar.search', defaultMessage: 'Search' },\n advancedInterface: { id: 'navigation_bar.advanced_interface', defaultMessage: 'Open in advanced web interface' },\n});\n\nclass NavigationPanel extends Component {\n\n static contextTypes = {\n router: PropTypes.object.isRequired,\n identity: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n intl: PropTypes.object.isRequired,\n };\n\n isFirehoseActive = (match, location) => {\n return match || location.pathname.startsWith('/public');\n };\n\n render () {\n const { intl } = this.props;\n const { signedIn, disabledAccountId } = this.context.identity;\n\n return (\n
\n
\n \n\n {transientSingleColumn && (\n \n {intl.formatMessage(messages.advancedInterface)}\n \n )}\n
\n
\n\n {signedIn && (\n <>\n \n } text={intl.formatMessage(messages.notifications)} />\n \n \n )}\n\n {trendsEnabled ? (\n \n ) : (\n \n )}\n\n {(signedIn || timelinePreview) && (\n \n )}\n\n {!signedIn && (\n
\n
\n { disabledAccountId ? : }\n
\n )}\n\n {signedIn && (\n <>\n \n \n \n \n\n \n\n
\n\n \n \n )}\n\n
\n
\n \n
\n\n \n
\n );\n }\n\n}\n\nexport default injectIntl(NavigationPanel);\n","import PropTypes from 'prop-types';\nimport { Children, cloneElement } from 'react';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\nimport { supportsPassiveEvents } from 'detect-passive-events';\n\nimport { scrollRight } from '../../../scroll';\nimport BundleContainer from '../containers/bundle_container';\nimport {\n Compose,\n Notifications,\n HomeTimeline,\n CommunityTimeline,\n PublicTimeline,\n HashtagTimeline,\n DirectTimeline,\n FavouritedStatuses,\n BookmarkedStatuses,\n ListTimeline,\n Directory,\n} from '../util/async-components';\n\nimport BundleColumnError from './bundle_column_error';\nimport ColumnLoading from './column_loading';\nimport ComposePanel from './compose_panel';\nimport DrawerLoading from './drawer_loading';\nimport NavigationPanel from './navigation_panel';\n\nconst componentMap = {\n 'COMPOSE': Compose,\n 'HOME': HomeTimeline,\n 'NOTIFICATIONS': Notifications,\n 'PUBLIC': PublicTimeline,\n 'REMOTE': PublicTimeline,\n 'COMMUNITY': CommunityTimeline,\n 'HASHTAG': HashtagTimeline,\n 'DIRECT': DirectTimeline,\n 'FAVOURITES': FavouritedStatuses,\n 'BOOKMARKS': BookmarkedStatuses,\n 'LIST': ListTimeline,\n 'DIRECTORY': Directory,\n};\n\nexport default class ColumnsArea extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n columns: ImmutablePropTypes.list.isRequired,\n isModalOpen: PropTypes.bool.isRequired,\n singleColumn: PropTypes.bool,\n children: PropTypes.node,\n };\n\n // Corresponds to (max-width: $no-gap-breakpoint + 285px - 1px) in SCSS\n mediaQuery = 'matchMedia' in window && window.matchMedia('(max-width: 1174px)');\n\n state = {\n renderComposePanel: !(this.mediaQuery && this.mediaQuery.matches),\n };\n\n componentDidMount() {\n if (!this.props.singleColumn) {\n this.node.addEventListener('wheel', this.handleWheel, supportsPassiveEvents ? { passive: true } : false);\n }\n\n if (this.mediaQuery) {\n if (this.mediaQuery.addEventListener) {\n this.mediaQuery.addEventListener('change', this.handleLayoutChange);\n } else {\n this.mediaQuery.addListener(this.handleLayoutChange);\n }\n this.setState({ renderComposePanel: !this.mediaQuery.matches });\n }\n\n this.isRtlLayout = document.getElementsByTagName('body')[0].classList.contains('rtl');\n }\n\n UNSAFE_componentWillUpdate(nextProps) {\n if (this.props.singleColumn !== nextProps.singleColumn && nextProps.singleColumn) {\n this.node.removeEventListener('wheel', this.handleWheel);\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.singleColumn !== prevProps.singleColumn && !this.props.singleColumn) {\n this.node.addEventListener('wheel', this.handleWheel, supportsPassiveEvents ? { passive: true } : false);\n }\n }\n\n componentWillUnmount () {\n if (!this.props.singleColumn) {\n this.node.removeEventListener('wheel', this.handleWheel);\n }\n\n if (this.mediaQuery) {\n if (this.mediaQuery.removeEventListener) {\n this.mediaQuery.removeEventListener('change', this.handleLayoutChange);\n } else {\n this.mediaQuery.removeListener(this.handleLayoutChange);\n }\n }\n }\n\n handleChildrenContentChange() {\n if (!this.props.singleColumn) {\n const modifier = this.isRtlLayout ? -1 : 1;\n this._interruptScrollAnimation = scrollRight(this.node, (this.node.scrollWidth - window.innerWidth) * modifier);\n }\n }\n\n handleLayoutChange = (e) => {\n this.setState({ renderComposePanel: !e.matches });\n };\n\n handleWheel = () => {\n if (typeof this._interruptScrollAnimation !== 'function') {\n return;\n }\n\n this._interruptScrollAnimation();\n };\n\n setRef = (node) => {\n this.node = node;\n };\n\n renderLoading = columnId => () => {\n return columnId === 'COMPOSE' ? : ;\n };\n\n renderError = (props) => {\n return ;\n };\n\n render () {\n const { columns, children, singleColumn, isModalOpen } = this.props;\n const { renderComposePanel } = this.state;\n\n if (singleColumn) {\n return (\n
\n
\n
\n {renderComposePanel && }\n
\n
\n\n
\n
\n
{children}
\n
\n\n
\n
\n \n
\n
\n
\n );\n }\n\n return (\n
\n {columns.map(column => {\n const params = column.get('params', null) === null ? null : column.get('params').toJS();\n const other = params && params.other ? params.other : {};\n\n return (\n \n {SpecificComponent => }\n \n );\n })}\n\n {Children.map(children, child => cloneElement(child, { multiColumn: true }))}\n
\n );\n }\n\n}\n","import { connect } from 'react-redux';\n\nimport ColumnsArea from '../components/columns_area';\n\nconst mapStateToProps = state => ({\n columns: state.getIn(['settings', 'columns']),\n isModalOpen: !!state.get('modal').modalType,\n});\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(ColumnsArea);\n","import PropTypes from 'prop-types';\nimport { Component, PureComponent, cloneElement, Children } from 'react';\n\nimport { Switch, Route } from 'react-router-dom';\n\nimport StackTrace from 'stacktrace-js';\n\nimport BundleColumnError from '../components/bundle_column_error';\nimport ColumnLoading from '../components/column_loading';\nimport BundleContainer from '../containers/bundle_container';\n\n// Small wrapper to pass multiColumn to the route components\nexport class WrappedSwitch extends PureComponent {\n static contextTypes = {\n router: PropTypes.object,\n };\n\n render () {\n const { multiColumn, children } = this.props;\n const { location } = this.context.router.route;\n\n const decklessLocation = multiColumn && location.pathname.startsWith('/deck')\n ? {...location, pathname: location.pathname.slice(5)}\n : location;\n\n return (\n \n {Children.map(children, child => child ? cloneElement(child, { multiColumn }) : null)}\n \n );\n }\n\n}\n\nWrappedSwitch.propTypes = {\n multiColumn: PropTypes.bool,\n children: PropTypes.node,\n};\n\n// Small Wrapper to extract the params from the route and pass\n// them to the rendered component, together with the content to\n// be rendered inside (the children)\nexport class WrappedRoute extends Component {\n\n static propTypes = {\n component: PropTypes.func.isRequired,\n content: PropTypes.node,\n multiColumn: PropTypes.bool,\n componentParams: PropTypes.object,\n };\n\n static defaultProps = {\n componentParams: {},\n };\n\n static getDerivedStateFromError () {\n return {\n hasError: true,\n };\n }\n\n state = {\n hasError: false,\n stacktrace: '',\n };\n\n componentDidCatch (error) {\n StackTrace.fromError(error).then(stackframes => {\n this.setState({ stacktrace: error.toString() + '\\n' + stackframes.map(frame => frame.toString()).join('\\n') });\n }).catch(err => {\n console.error(err);\n });\n }\n\n renderComponent = ({ match }) => {\n const { component, content, multiColumn, componentParams } = this.props;\n const { hasError, stacktrace } = this.state;\n\n if (hasError) {\n return (\n \n );\n }\n\n return (\n \n {Component => {content}}\n \n );\n };\n\n renderLoading = () => {\n const { multiColumn } = this.props;\n\n return ;\n };\n\n renderError = (props) => {\n return ;\n };\n\n render () {\n const { component: Component, content, ...rest } = this.props;\n\n return ;\n }\n\n}\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { defineMessages, injectIntl } from 'react-intl';\n\nimport classNames from 'classnames';\nimport { Redirect, Route, withRouter } from 'react-router-dom';\n\nimport { connect } from 'react-redux';\n\nimport { debounce } from 'lodash';\nimport { HotKeys } from 'react-hotkeys';\n\nimport { focusApp, unfocusApp, changeLayout } from 'mastodon/actions/app';\nimport { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'mastodon/actions/markers';\nimport { INTRODUCTION_VERSION } from 'mastodon/actions/onboarding';\nimport PictureInPicture from 'mastodon/features/picture_in_picture';\nimport { layoutFromWindow } from 'mastodon/is_mobile';\n\nimport { uploadCompose, resetCompose, changeComposeSpoilerness } from '../../actions/compose';\nimport { clearHeight } from '../../actions/height_cache';\nimport { expandNotifications } from '../../actions/notifications';\nimport { fetchServer, fetchServerTranslationLanguages } from '../../actions/server';\nimport { expandHomeTimeline } from '../../actions/timelines';\nimport initialState, { me, owner, singleUserMode, trendsEnabled, trendsAsLanding } from '../../initial_state';\n\nimport BundleColumnError from './components/bundle_column_error';\nimport Header from './components/header';\nimport UploadArea from './components/upload_area';\nimport ColumnsAreaContainer from './containers/columns_area_container';\nimport LoadingBarContainer from './containers/loading_bar_container';\nimport ModalContainer from './containers/modal_container';\nimport NotificationsContainer from './containers/notifications_container';\nimport {\n Compose,\n Status,\n GettingStarted,\n KeyboardShortcuts,\n Firehose,\n AccountTimeline,\n AccountGallery,\n HomeTimeline,\n Followers,\n Following,\n Reblogs,\n Favourites,\n DirectTimeline,\n HashtagTimeline,\n Notifications,\n FollowRequests,\n FavouritedStatuses,\n BookmarkedStatuses,\n FollowedTags,\n ListTimeline,\n Blocks,\n DomainBlocks,\n Mutes,\n PinnedStatuses,\n Lists,\n Directory,\n Explore,\n Onboarding,\n About,\n PrivacyPolicy,\n} from './util/async-components';\nimport { WrappedSwitch, WrappedRoute } from './util/react_router_helpers';\n\n// Dummy import, to make sure that ends up in the application bundle.\n// Without this it ends up in ~8 very commonly used bundles.\nimport '../../components/status';\n\nconst messages = defineMessages({\n beforeUnload: { id: 'ui.beforeunload', defaultMessage: 'Your draft will be lost if you leave Mastodon.' },\n});\n\nconst mapStateToProps = state => ({\n layout: state.getIn(['meta', 'layout']),\n isComposing: state.getIn(['compose', 'is_composing']),\n hasComposingText: state.getIn(['compose', 'text']).trim().length !== 0,\n hasMediaAttachments: state.getIn(['compose', 'media_attachments']).size > 0,\n canUploadMore: !state.getIn(['compose', 'media_attachments']).some(x => ['audio', 'video'].includes(x.get('type'))) && state.getIn(['compose', 'media_attachments']).size < 4,\n dropdownMenuIsOpen: state.getIn(['dropdown_menu', 'openId']) !== null,\n firstLaunch: state.getIn(['settings', 'introductionVersion'], 0) < INTRODUCTION_VERSION,\n username: state.getIn(['accounts', me, 'username']),\n});\n\nconst keyMap = {\n help: '?',\n new: 'n',\n search: 's',\n forceNew: 'option+n',\n toggleComposeSpoilers: 'option+x',\n focusColumn: ['1', '2', '3', '4', '5', '6', '7', '8', '9'],\n reply: 'r',\n favourite: 'f',\n boost: 'b',\n mention: 'm',\n open: ['enter', 'o'],\n openProfile: 'p',\n moveDown: ['down', 'j'],\n moveUp: ['up', 'k'],\n back: 'backspace',\n goToHome: 'g h',\n goToNotifications: 'g n',\n goToLocal: 'g l',\n goToFederated: 'g t',\n goToDirect: 'g d',\n goToStart: 'g s',\n goToFavourites: 'g f',\n goToPinned: 'g p',\n goToProfile: 'g u',\n goToBlocked: 'g b',\n goToMuted: 'g m',\n goToRequests: 'g r',\n toggleHidden: 'x',\n toggleSensitive: 'h',\n openMedia: 'e',\n};\n\nclass SwitchingColumnsArea extends PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object,\n };\n\n static propTypes = {\n children: PropTypes.node,\n location: PropTypes.object,\n singleColumn: PropTypes.bool,\n };\n\n UNSAFE_componentWillMount () {\n if (this.props.singleColumn) {\n document.body.classList.toggle('layout-single-column', true);\n document.body.classList.toggle('layout-multiple-columns', false);\n } else {\n document.body.classList.toggle('layout-single-column', false);\n document.body.classList.toggle('layout-multiple-columns', true);\n }\n }\n\n componentDidUpdate (prevProps) {\n if (![this.props.location.pathname, '/'].includes(prevProps.location.pathname)) {\n this.node.handleChildrenContentChange();\n }\n\n if (prevProps.singleColumn !== this.props.singleColumn) {\n document.body.classList.toggle('layout-single-column', this.props.singleColumn);\n document.body.classList.toggle('layout-multiple-columns', !this.props.singleColumn);\n }\n }\n\n setRef = c => {\n if (c) {\n this.node = c;\n }\n };\n\n render () {\n const { children, singleColumn } = this.props;\n const { signedIn } = this.context.identity;\n const pathName = this.props.location.pathname;\n\n let redirect;\n\n if (signedIn) {\n if (singleColumn) {\n redirect = ;\n } else {\n redirect = ;\n }\n } else if (singleUserMode && owner && initialState?.accounts[owner]) {\n redirect = ;\n } else if (trendsEnabled && trendsAsLanding) {\n redirect = ;\n } else {\n redirect = ;\n }\n\n return (\n \n \n {redirect}\n\n {singleColumn ? : null}\n {singleColumn && pathName.startsWith('/deck/') ? : null}\n {!singleColumn && pathName === '/getting-started' ? : null}\n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n {/* Legacy routes, cannot be easily factored with other routes because they share a param name */}\n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n );\n }\n\n}\n\nclass UI extends PureComponent {\n\n static contextTypes = {\n router: PropTypes.object.isRequired,\n identity: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n children: PropTypes.node,\n isComposing: PropTypes.bool,\n hasComposingText: PropTypes.bool,\n hasMediaAttachments: PropTypes.bool,\n canUploadMore: PropTypes.bool,\n location: PropTypes.object,\n intl: PropTypes.object.isRequired,\n dropdownMenuIsOpen: PropTypes.bool,\n layout: PropTypes.string.isRequired,\n firstLaunch: PropTypes.bool,\n username: PropTypes.string,\n };\n\n state = {\n draggingOver: false,\n };\n\n handleBeforeUnload = e => {\n const { intl, dispatch, isComposing, hasComposingText, hasMediaAttachments } = this.props;\n\n dispatch(synchronouslySubmitMarkers());\n\n if (isComposing && (hasComposingText || hasMediaAttachments)) {\n e.preventDefault();\n // Setting returnValue to any string causes confirmation dialog.\n // Many browsers no longer display this text to users,\n // but we set user-friendly message for other browsers, e.g. Edge.\n e.returnValue = intl.formatMessage(messages.beforeUnload);\n }\n };\n\n handleWindowFocus = () => {\n this.props.dispatch(focusApp());\n this.props.dispatch(submitMarkers({ immediate: true }));\n };\n\n handleWindowBlur = () => {\n this.props.dispatch(unfocusApp());\n };\n\n handleDragEnter = (e) => {\n e.preventDefault();\n\n if (!this.dragTargets) {\n this.dragTargets = [];\n }\n\n if (this.dragTargets.indexOf(e.target) === -1) {\n this.dragTargets.push(e.target);\n }\n\n if (e.dataTransfer && Array.from(e.dataTransfer.types).includes('Files') && this.props.canUploadMore && this.context.identity.signedIn) {\n this.setState({ draggingOver: true });\n }\n };\n\n handleDragOver = (e) => {\n if (this.dataTransferIsText(e.dataTransfer)) return false;\n\n e.preventDefault();\n e.stopPropagation();\n\n try {\n e.dataTransfer.dropEffect = 'copy';\n } catch (err) {\n\n }\n\n return false;\n };\n\n handleDrop = (e) => {\n if (this.dataTransferIsText(e.dataTransfer)) return;\n\n e.preventDefault();\n\n this.setState({ draggingOver: false });\n this.dragTargets = [];\n\n if (e.dataTransfer && e.dataTransfer.files.length >= 1 && this.props.canUploadMore && this.context.identity.signedIn) {\n this.props.dispatch(uploadCompose(e.dataTransfer.files));\n }\n };\n\n handleDragLeave = (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n this.dragTargets = this.dragTargets.filter(el => el !== e.target && this.node.contains(el));\n\n if (this.dragTargets.length > 0) {\n return;\n }\n\n this.setState({ draggingOver: false });\n };\n\n dataTransferIsText = (dataTransfer) => {\n return (dataTransfer && Array.from(dataTransfer.types).filter((type) => type === 'text/plain').length === 1);\n };\n\n closeUploadModal = () => {\n this.setState({ draggingOver: false });\n };\n\n handleServiceWorkerPostMessage = ({ data }) => {\n if (data.type === 'navigate') {\n this.context.router.history.push(data.path);\n } else {\n console.warn('Unknown message type:', data.type);\n }\n };\n\n handleLayoutChange = debounce(() => {\n this.props.dispatch(clearHeight()); // The cached heights are no longer accurate, invalidate\n }, 500, {\n trailing: true,\n });\n\n handleResize = () => {\n const layout = layoutFromWindow();\n\n if (layout !== this.props.layout) {\n this.handleLayoutChange.cancel();\n this.props.dispatch(changeLayout({ layout }));\n } else {\n this.handleLayoutChange();\n }\n };\n\n componentDidMount () {\n const { signedIn } = this.context.identity;\n\n window.addEventListener('focus', this.handleWindowFocus, false);\n window.addEventListener('blur', this.handleWindowBlur, false);\n window.addEventListener('beforeunload', this.handleBeforeUnload, false);\n window.addEventListener('resize', this.handleResize, { passive: true });\n\n document.addEventListener('dragenter', this.handleDragEnter, false);\n document.addEventListener('dragover', this.handleDragOver, false);\n document.addEventListener('drop', this.handleDrop, false);\n document.addEventListener('dragleave', this.handleDragLeave, false);\n document.addEventListener('dragend', this.handleDragEnd, false);\n\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.addEventListener('message', this.handleServiceWorkerPostMessage);\n }\n\n if (signedIn) {\n this.props.dispatch(fetchMarkers());\n this.props.dispatch(expandHomeTimeline());\n this.props.dispatch(expandNotifications());\n this.props.dispatch(fetchServerTranslationLanguages());\n\n setTimeout(() => this.props.dispatch(fetchServer()), 3000);\n }\n\n this.hotkeys.__mousetrap__.stopCallback = (e, element) => {\n return ['TEXTAREA', 'SELECT', 'INPUT'].includes(element.tagName);\n };\n }\n\n componentWillUnmount () {\n window.removeEventListener('focus', this.handleWindowFocus);\n window.removeEventListener('blur', this.handleWindowBlur);\n window.removeEventListener('beforeunload', this.handleBeforeUnload);\n window.removeEventListener('resize', this.handleResize);\n\n document.removeEventListener('dragenter', this.handleDragEnter);\n document.removeEventListener('dragover', this.handleDragOver);\n document.removeEventListener('drop', this.handleDrop);\n document.removeEventListener('dragleave', this.handleDragLeave);\n document.removeEventListener('dragend', this.handleDragEnd);\n }\n\n setRef = c => {\n this.node = c;\n };\n\n handleHotkeyNew = e => {\n e.preventDefault();\n\n const element = this.node.querySelector('.compose-form__autosuggest-wrapper textarea');\n\n if (element) {\n element.focus();\n }\n };\n\n handleHotkeySearch = e => {\n e.preventDefault();\n\n const element = this.node.querySelector('.search__input');\n\n if (element) {\n element.focus();\n }\n };\n\n handleHotkeyForceNew = e => {\n this.handleHotkeyNew(e);\n this.props.dispatch(resetCompose());\n };\n\n handleHotkeyToggleComposeSpoilers = e => {\n e.preventDefault();\n this.props.dispatch(changeComposeSpoilerness());\n };\n\n handleHotkeyFocusColumn = e => {\n const index = (e.key * 1) + 1; // First child is drawer, skip that\n const column = this.node.querySelector(`.column:nth-child(${index})`);\n if (!column) return;\n const container = column.querySelector('.scrollable');\n\n if (container) {\n const status = container.querySelector('.focusable');\n\n if (status) {\n if (container.scrollTop > status.offsetTop) {\n status.scrollIntoView(true);\n }\n status.focus();\n }\n }\n };\n\n handleHotkeyBack = () => {\n const { router } = this.context;\n\n if (router.history.location?.state?.fromMastodon) {\n router.history.goBack();\n } else {\n router.history.push('/');\n }\n };\n\n setHotkeysRef = c => {\n this.hotkeys = c;\n };\n\n handleHotkeyToggleHelp = () => {\n if (this.props.location.pathname === '/keyboard-shortcuts') {\n this.context.router.history.goBack();\n } else {\n this.context.router.history.push('/keyboard-shortcuts');\n }\n };\n\n handleHotkeyGoToHome = () => {\n this.context.router.history.push('/home');\n };\n\n handleHotkeyGoToNotifications = () => {\n this.context.router.history.push('/notifications');\n };\n\n handleHotkeyGoToLocal = () => {\n this.context.router.history.push('/public/local');\n };\n\n handleHotkeyGoToFederated = () => {\n this.context.router.history.push('/public');\n };\n\n handleHotkeyGoToDirect = () => {\n this.context.router.history.push('/conversations');\n };\n\n handleHotkeyGoToStart = () => {\n this.context.router.history.push('/getting-started');\n };\n\n handleHotkeyGoToFavourites = () => {\n this.context.router.history.push('/favourites');\n };\n\n handleHotkeyGoToPinned = () => {\n this.context.router.history.push('/pinned');\n };\n\n handleHotkeyGoToProfile = () => {\n this.context.router.history.push(`/@${this.props.username}`);\n };\n\n handleHotkeyGoToBlocked = () => {\n this.context.router.history.push('/blocks');\n };\n\n handleHotkeyGoToMuted = () => {\n this.context.router.history.push('/mutes');\n };\n\n handleHotkeyGoToRequests = () => {\n this.context.router.history.push('/follow_requests');\n };\n\n render () {\n const { draggingOver } = this.state;\n const { children, isComposing, location, dropdownMenuIsOpen, layout } = this.props;\n\n const handlers = {\n help: this.handleHotkeyToggleHelp,\n new: this.handleHotkeyNew,\n search: this.handleHotkeySearch,\n forceNew: this.handleHotkeyForceNew,\n toggleComposeSpoilers: this.handleHotkeyToggleComposeSpoilers,\n focusColumn: this.handleHotkeyFocusColumn,\n back: this.handleHotkeyBack,\n goToHome: this.handleHotkeyGoToHome,\n goToNotifications: this.handleHotkeyGoToNotifications,\n goToLocal: this.handleHotkeyGoToLocal,\n goToFederated: this.handleHotkeyGoToFederated,\n goToDirect: this.handleHotkeyGoToDirect,\n goToStart: this.handleHotkeyGoToStart,\n goToFavourites: this.handleHotkeyGoToFavourites,\n goToPinned: this.handleHotkeyGoToPinned,\n goToProfile: this.handleHotkeyGoToProfile,\n goToBlocked: this.handleHotkeyGoToBlocked,\n goToMuted: this.handleHotkeyGoToMuted,\n goToRequests: this.handleHotkeyGoToRequests,\n };\n\n return (\n \n
\n
\n\n \n {children}\n \n\n {layout !== 'mobile' && }\n \n \n \n \n
\n
\n );\n }\n\n}\n\nexport default connect(mapStateToProps)(injectIntl(withRouter(UI)));\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { Helmet } from 'react-helmet';\nimport { Route } from 'react-router-dom';\n\nimport { Provider as ReduxProvider } from 'react-redux';\n\nimport { ScrollContext } from 'react-router-scroll-4';\n\nimport { fetchCustomEmojis } from 'mastodon/actions/custom_emojis';\nimport { hydrateStore } from 'mastodon/actions/store';\nimport { connectUserStream } from 'mastodon/actions/streaming';\nimport ErrorBoundary from 'mastodon/components/error_boundary';\nimport { Router } from 'mastodon/components/router';\nimport UI from 'mastodon/features/ui';\nimport initialState, { title as siteTitle } from 'mastodon/initial_state';\nimport { IntlProvider } from 'mastodon/locales';\nimport { store } from 'mastodon/store';\n\nconst title = process.env.NODE_ENV === 'production' ? siteTitle : `${siteTitle} (Dev)`;\n\nconst hydrateAction = hydrateStore(initialState);\n\nstore.dispatch(hydrateAction);\nif (initialState.meta.me) {\n store.dispatch(fetchCustomEmojis());\n}\n\nconst createIdentityContext = state => ({\n signedIn: !!state.meta.me,\n accountId: state.meta.me,\n disabledAccountId: state.meta.disabled_account_id,\n accessToken: state.meta.access_token,\n permissions: state.role ? state.role.permissions : 0,\n});\n\nexport default class Mastodon extends PureComponent {\n\n static childContextTypes = {\n identity: PropTypes.shape({\n signedIn: PropTypes.bool.isRequired,\n accountId: PropTypes.string,\n disabledAccountId: PropTypes.string,\n accessToken: PropTypes.string,\n }).isRequired,\n };\n\n identity = createIdentityContext(initialState);\n\n getChildContext() {\n return {\n identity: this.identity,\n };\n }\n\n componentDidMount() {\n if (this.identity.signedIn) {\n this.disconnect = store.dispatch(connectUserStream());\n }\n }\n\n componentWillUnmount () {\n if (this.disconnect) {\n this.disconnect();\n this.disconnect = null;\n }\n }\n\n shouldUpdateScroll (prevRouterProps, { location }) {\n return !(location.state?.mastodonModalKey && location.state?.mastodonModalKey !== prevRouterProps?.location?.state?.mastodonModalKey);\n }\n\n render () {\n return (\n \n \n \n \n \n \n \n \n\n \n \n \n \n );\n }\n\n}\n","/* global performance */\nvar perf = typeof performance !== 'undefined' && performance;\nvar now = perf && perf.now ? function () {\n return perf.now();\n} : function () {\n return Date.now();\n};\nfunction throwIfEmpty(name) {\n if (!name) {\n throw new Error('name must be non-empty');\n }\n}\n\n// simple binary sort insertion\nfunction insertSorted(arr, item) {\n var low = 0;\n var high = arr.length;\n var mid;\n while (low < high) {\n mid = low + high >>> 1; // like (num / 2) but faster\n if (arr[mid].startTime < item.startTime) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n arr.splice(low, 0, item);\n}\nvar mark;\nvar stop;\nvar getEntries;\nvar clear;\nif (perf && perf.mark && perf.measure && perf.getEntriesByName && perf.getEntriesByType && perf.clearMarks && perf.clearMeasures &&\n// In Node, we want to detect that this perf/correctness fix [1] is available, which\n// landed in Node 16.15.0, 17.6.0, and 18.0.0. However, it's not observable, and\n// we don't want to rely on fragile version checks.\n// So we can rely on this observable change [2] to add clearResourceTimings, which\n// landed a bit later (18.2.0), but is close enough for our purposes.\n// [1]: https://github.com/nodejs/node/pull/42032\n// [2]: https://github.com/nodejs/node/pull/42725\ntrue) {\n mark = function (name) {\n throwIfEmpty(name);\n perf.mark(\"start \" + name);\n };\n stop = function (name) {\n throwIfEmpty(name);\n perf.mark(\"end \" + name);\n var measure = perf.measure(name, \"start \" + name, \"end \" + name);\n if (measure) {\n // return value from performance.measure not supported in all browsers\n // https://developer.mozilla.org/en-US/docs/Web/API/Performance/measure#browser_compatibility\n return measure;\n }\n var entries = perf.getEntriesByName(name);\n return entries[entries.length - 1];\n };\n getEntries = function () {\n return perf.getEntriesByType('measure');\n };\n clear = function () {\n perf.clearMarks();\n perf.clearMeasures();\n };\n} else {\n var marks = {};\n var entries = [];\n mark = function (name) {\n throwIfEmpty(name);\n var startTime = now();\n marks['$' + name] = startTime;\n };\n stop = function (name) {\n throwIfEmpty(name);\n var endTime = now();\n var startTime = marks['$' + name];\n if (!startTime) {\n throw new Error(\"no known mark: \" + name);\n }\n var entry = {\n startTime: startTime,\n name: name,\n duration: endTime - startTime,\n entryType: 'measure'\n };\n // per the spec this should be at least 150:\n // https://www.w3.org/TR/resource-timing-1/#extensions-performance-interface\n // we just have no limit, per Chrome and Edge's de-facto behavior\n insertSorted(entries, entry);\n return entry;\n };\n getEntries = function () {\n return entries;\n };\n clear = function () {\n marks = {};\n entries = [];\n };\n}\nexport { clear, getEntries, mark, stop };","import { createRoot } from 'react-dom/client';\n\nimport { setupBrowserNotifications } from 'mastodon/actions/notifications';\nimport Mastodon from 'mastodon/containers/mastodon';\nimport { me } from 'mastodon/initial_state';\nimport * as perf from 'mastodon/performance';\nimport ready from 'mastodon/ready';\nimport { store } from 'mastodon/store';\n\n/**\n * @returns {Promise}\n */\nfunction main() {\n perf.start('main()');\n\n return ready(async () => {\n const mountNode = document.getElementById('mastodon');\n const props = JSON.parse(mountNode.getAttribute('data-props'));\n\n const root = createRoot(mountNode);\n root.render();\n store.dispatch(setupBrowserNotifications());\n\n if (process.env.NODE_ENV === 'production' && me && 'serviceWorker' in navigator) {\n const { Workbox } = await import('workbox-window');\n const wb = new Workbox('/sw.js');\n /** @type {ServiceWorkerRegistration} */\n let registration;\n\n try {\n registration = await wb.register();\n } catch (err) {\n console.error(err);\n }\n\n if (registration) {\n const registerPushNotifications = await import('mastodon/actions/push_notifications');\n\n store.dispatch(registerPushNotifications.register());\n }\n }\n\n perf.stop('main()');\n });\n}\n\nexport default main;\n","import './public-path';\nimport main from \"mastodon/main\"\n\nimport { start } from '../mastodon/common';\nimport { loadLocale } from '../mastodon/locales';\nimport { loadPolyfills } from '../mastodon/polyfills';\n\nstart();\n\nloadPolyfills()\n .then(loadLocale)\n .then(main)\n .catch(e => {\n console.error(e);\n });\n"],"sourceRoot":""}