{"version":3,"sources":["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/performance.js","webpack:///./node_modules/react-router/es/Router.js","webpack:///./node_modules/react-router-dom/es/Router.js","webpack:///./node_modules/react-router-dom/es/BrowserRouter.js","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/ui/components/column_loading.jsx","webpack:///./app/javascript/mastodon/features/ui/util/react_router_helpers.jsx","webpack:///./app/javascript/mastodon/features/ui/components/upload_area.jsx","webpack:///./app/javascript/mastodon/features/ui/components/drawer_loading.jsx","webpack:///./app/javascript/mastodon/components/server_banner.jsx","webpack:///./app/javascript/mastodon/features/ui/components/compose_panel.jsx","webpack:///./app/javascript/mastodon/components/logo.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/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/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/picture_in_picture/components/header.jsx","webpack:///./app/javascript/mastodon/features/picture_in_picture/index.jsx","webpack:///./app/javascript/mastodon/features/ui/components/header.jsx","webpack:///./app/javascript/mastodon/features/ui/index.jsx","webpack:///./app/javascript/mastodon/components/error_boundary.jsx","webpack:///./app/javascript/mastodon/containers/mastodon.jsx","webpack:///./app/javascript/mastodon/main.jsx","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/util.js","webpack:///./node_modules/stackframe/stackframe.js","webpack:///./node_modules/stacktrace-js/stacktrace.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"],"names":["StackFrame","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","parse","error","stacktrace","this","parseOpera","stack","match","parseV8OrIE","parseFFOrSafari","Error","extractLocation","urlLike","indexOf","parts","exec","replace","undefined","split","filter","line","map","sanitizedLine","location","tokens","slice","locationParts","pop","functionName","join","fileName","lineNumber","columnNumber","source","functionNameRegex","matches","e","message","length","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","result","i","len","push","argsRaw","functionCall","shift","args","backtrace","opts","maxStackSize","curr","arguments","callee","Array","test","toString","RegExp","$1","caller","SourceMap","_xdr","url","Promise","resolve","reject","req","XMLHttpRequest","open","onerror","onreadystatechange","readyState","status","substr","responseText","send","_atob","b64str","window","atob","_parseJson","string","JSON","_findFunctionName","syntaxes","code","maxLines","Math","min","commentPos","index","m","_ensureSupportedEnvironment","Object","defineProperty","create","_ensureStackFrameIsLegit","stackframe","TypeError","_findSourceMappingURL","lastSourceMappingUrl","matchSourceMappingUrl","sourceMappingUrlRegExp","_extractLocationInfoFromSourceMapSource","sourceMapConsumer","sourceCache","loc","originalPositionFor","column","mappedSource","sourceContentFor","name","StackTraceGPS","sourceMapConsumerCache","ajax","_get","isDataUrl","offline","supportedEncodingRegexp","sourceMapStart","encodedSource","xhrPromise","method","then","bind","_getSourceMapConsumer","sourceMappingURL","defaultSourceRoot","sourceMapConsumerPromise","sourceMapSource","sourceRoot","SourceMapConsumer","pinpoint","getMappedLocation","mappedStackFrame","resolveMappedStackFrame","findFunctionName","guessedFunctionName","substring","lastIndexOf","exports","SourceMapGenerator","SourceNode","intToCharMap","encode","number","decode","charCode","util","MappingList","_array","_sorted","_last","generatedLine","generatedColumn","prototype","unsortedForEach","aCallback","aThisArg","forEach","add","aMapping","mappingA","mappingB","lineA","lineB","columnA","columnB","compareByGeneratedPositionsInflated","toArray","sort","binarySearch","ArraySet","base64VLQ","quickSort","aSourceMap","sourceMap","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","version","getArg","sources","names","sourcesContent","mappings","file","_version","String","normalize","isAbsolute","relative","_names","fromArray","_sources","_mappings","Mapping","originalLine","originalColumn","lastOffset","_sections","s","offset","offsetLine","offsetColumn","generatedOffset","consumer","fromSourceMap","__generatedMappings","get","_parseMappings","__originalMappings","_charIsMappingSeparator","aStr","c","charAt","aSourceRoot","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","eachMapping","aContext","aOrder","context","_generatedMappings","_originalMappings","mapping","at","allGeneratedPositionsFor","aArgs","needle","has","_findMapping","compareByOriginalPositions","lastColumn","smc","_sourceRoot","_generateSourcesContent","_file","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","str","segment","end","value","previousGeneratedColumn","previousOriginalLine","previousOriginalColumn","previousSource","previousName","cachedSegments","temp","originalMappings","rest","compareByGeneratedPositionsDeflated","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","search","computeColumnSpans","nextMapping","lastGeneratedColumn","Infinity","hasContentsOfAllSources","size","some","sc","aSource","nullOnMissing","urlParse","fileUriAbsPath","scheme","path","generatedPositionFor","constructor","j","sectionIndex","section","cmp","bias","every","content","generatedPosition","sectionMappings","adjustedMapping","recursiveSearch","aLow","aHigh","aHaystack","aCompare","mid","floor","swap","ary","x","y","doQuickSort","comparator","p","r","low","high","round","random","pivot","q","REGEX_NEWLINE","isSourceNode","aLine","aColumn","aChunks","aName","children","sourceContents","fromStringWithSourceMap","aGeneratedCode","aSourceMapConsumer","aRelativePath","node","remainingLines","shiftNextLine","lastGeneratedLine","lastMapping","nextLine","addMappingWithCode","sourceFile","setSourceContent","aChunk","isArray","chunk","prepend","unshift","walk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","lastChild","aSourceFile","aSourceContent","toSetString","walkSourceContents","keys","fromSetString","toStringWithSourceMap","generated","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","original","addMapping","idx","charCodeAt","sourceContent","start","process","stop","_extends","assign","target","key","hasOwnProperty","call","_classCallCheck","instance","Constructor","_possibleConstructorReturn","self","ReferenceError","_React$Component","Router","_temp","_this","_len","_key","apply","concat","state","computeMatch","props","history","pathname","subClass","superClass","enumerable","writable","configurable","setPrototypeOf","__proto__","_inherits","getChildContext","router","route","params","isExact","componentWillMount","_this2","_props","Children","count","unlisten","listen","setState","componentWillReceiveProps","nextProps","componentWillUnmount","render","only","Component","propTypes","object","isRequired","contextTypes","childContextTypes","BrowserRouter","createElement","patternCache","cacheCount","pattern","cacheKey","cache","compiledGenerator","compile","generator","pretty","Redirect","isStatic","staticContext","perform","componentDidMount","componentDidUpdate","prevProps","prevTo","to","nextTo","computeTo","_ref","computedMatch","bool","from","oneOfType","defaultProps","shape","func","ColumnLoading","ImmutablePureComponent","title","icon","multiColumn","_jsx","Column","ColumnHeader","focusable","placeholder","className","PropTypes","WrappedSwitch","React","PureComponent","Switch","child","cloneElement","WrappedRoute","hasError","renderComponent","component","componentParams","BundleColumnError","errorType","BundleContainer","fetchComponent","loading","renderLoading","renderError","static","componentDidCatch","StackTrace","fromError","stackframes","frame","catch","err","console","Route","UploadArea","handleKeyUp","keyCode","active","preventDefault","stopPropagation","onClose","addEventListener","removeEventListener","Motion","defaultStyle","backgroundOpacity","backgroundScale","style","spring","stiffness","damping","visibility","opacity","transform","FormattedMessage","id","defaultMessage","DrawerLoading","messages","defineMessages","aboutActiveUsers","ServerBanner","dispatch","fetchServer","server","intl","isLoading","values","domain","mastodon","href","Image","blurhash","getIn","src","Fragment","Skeleton","width","Account","minimal","ShortNumber","formatMessage","Link","connect","injectIntl","ComposePanel","onFocus","changeComposing","onBlur","mountCompose","unmountCompose","signedIn","identity","SearchContainer","openInRoute","NavigationContainer","ComposeFormContainer","singleColumn","LinkFooter","WordmarkLogo","viewBox","role","xlinkHref","SymbolLogo","logo","alt","logoutMessage","logoutConfirm","DisabledAccountBanner","handleLogOutClick","onLogout","disabledAcct","movedToAcct","disabledAccountLink","disabledAccount","movedToAccount","includes","type","onClick","disabledAccountId","movedToAccountId","mapDispatchToProps","openModal","confirm","closeWhenConfirm","onConfirm","logOut","text","FollowRequestsColumnLink","fetchFollowRequests","ColumnLink","transparent","IconWithBadge","ImmutableList","getOrderedLists","createSelector","lists","toList","item","a","b","localeCompare","take","ListPanel","fetchLists","isEmpty","list","strict","ImmutablePropTypes","withRouter","SignInBanner","useDispatch","openClosedRegistrationsModal","useCallback","signupButton","registrationsOpen","lastStatusAt","empty","FeaturedTags","account","featuredTags","dangerouslySetInnerHTML","__html","featuredTag","Hashtag","uses","withGraph","description","date","formatDate","month","day","tagged","mapStateToProps","getAccount","makeGetAccount","accountId","AccountNavigation","acct","normalizeForLookup","DefaultNavigation","showTrends","Trends","NavigationPortal","exact","home","notifications","explore","local","federated","direct","favourites","bookmarks","preferences","followsAndFollowers","about","NavigationPanel","Logo","NotificationsCounterIcon","timelinePreview","componentMap","Compose","HomeTimeline","Notifications","PublicTimeline","CommunityTimeline","HashtagTimeline","DirectTimeline","FavouritedStatuses","BookmarkedStatuses","ListTimeline","Directory","ColumnsArea","mediaQuery","matchMedia","renderComposePanel","handleLayoutChange","handleWheel","_interruptScrollAnimation","setRef","columnId","supportsPassiveEvents","passive","addListener","isRtlLayout","document","getElementsByTagName","classList","contains","componentWillUpdate","removeListener","handleChildrenContentChange","modifier","scrollRight","scrollWidth","innerWidth","columns","isModalOpen","ref","toJS","other","SpecificComponent","modalType","forwardRef","close","Header","statusId","Avatar","DisplayName","IconButton","PictureInPicture","handleClose","removePictureInPicture","currentTime","player","Video","volume","muted","autoPlay","inline","alwaysVisible","Audio","poster","backgroundColor","foregroundColor","accentColor","Footer","me","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","mobile","body","toggle","redirect","singleUserMode","owner","initialState","accounts","username","trendsAsLanding","ColumnsAreaContainer","GettingStarted","KeyboardShortcuts","About","PrivacyPolicy","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","layoutFromWindow","cancel","changeLayout","handleHotkeyNew","element","querySelector","focus","handleHotkeySearch","handleHotkeyForceNew","resetCompose","handleHotkeyToggleComposeSpoilers","changeComposeSpoilerness","handleHotkeyFocusColumn","container","scrollTop","offsetTop","scrollIntoView","handleHotkeyBack","goBack","setHotkeysRef","hotkeys","handleHotkeyToggleHelp","handleHotkeyGoToHome","handleHotkeyGoToNotifications","handleHotkeyGoToLocal","handleHotkeyGoToFederated","handleHotkeyGoToDirect","handleHotkeyGoToStart","handleHotkeyGoToFavourites","handleHotkeyGoToPinned","handleHotkeyGoToProfile","handleHotkeyGoToBlocked","handleHotkeyGoToMuted","handleHotkeyGoToRequests","handleDragEnd","navigator","serviceWorker","firstLaunch","fetchMarkers","expandHomeTimeline","expandNotifications","fetchServerTranslationLanguages","setTimeout","__mousetrap__","stopCallback","tagName","dropdownMenuIsOpen","handlers","HotKeys","attach","focused","classNames","pointerEvents","NotificationsContainer","LoadingBarContainer","ModalContainer","trim","INTRODUCTION_VERSION","ErrorBoundary","errorMessage","stackTrace","mappedStackTrace","componentStack","handleCopyStackTrace","textarea","contents","textContent","position","appendChild","select","execCommand","removeChild","copied","info","sf","likelyBrowserAddonIssue","source_url","rel","Helmet","localeData","getLocale","addLocaleData","siteTitle","hydrateAction","hydrateStore","store","meta","fetchCustomEmojis","Mastodon","disabled_account_id","accessToken","access_token","permissions","disconnect","connectUserStream","shouldUpdateScroll","prevRouterProps","_location$state","_location$state2","_prevRouterProps$loca","_prevRouterProps$loca2","mastodonModalKey","locale","IntlProvider","ReduxProvider","ScrollContext","defaultTitle","titleTemplate","perf","require","main","ready","async","mountNode","getElementById","getAttribute","ReactDOM","setupBrowserNotifications","Workbox","wb","registration","register","registerPushNotifications","aDefaultValue","urlRegexp","dataUrlRegexp","aUrl","auth","host","port","urlGenerate","aParsedUrl","aPath","part","up","splice","aRoot","aPathUrl","aRootUrl","joined","level","supportsNullProto","isProtoString","strcmp","aStr1","aStr2","onlyCompareOriginal","onlyCompareGenerated","_isNumber","n","isNaN","parseFloat","isFinite","_capitalize","toUpperCase","_getter","booleanProps","numericProps","stringProps","arrayProps","objectProps","obj","getArgs","setArgs","v","getEvalOrigin","evalOrigin","setEvalOrigin","getFileName","getLineNumber","getColumnNumber","getFunctionName","getIsEval","fromString","argsStartIndex","argsEndIndex","locationString","Boolean","Number","k","ErrorStackParser","StackGenerator","_options","_generateError","_merge","first","second","prop","_isShapedLikeParsableError","_filtered","generateArtificially","getSync","gps","all","resolveOriginal","stackFrames","instrument","fn","callback","errback","thisArg","__stacktraceOriginalFn","instrumented","deinstrument","report","errorMsg","requestOptions","setRequestHeader","headers","header","reportPayload","stringify","_skipValidation","_sourcesContents","newMapping","_validateMapping","applySourceMap","aSourceMapPath","newSources","newNames","aGenerated","aOriginal","_serializeMappings","next","nameIdx","sourceIdx","previousGeneratedLine","aSources","toJSON","base64","aValue","digit","encoded","vlq","toVLQSigned","VLQ_BASE","aIndex","aOutParam","continuation","shifted","strLen","_set","aArray","aAllowDuplicates","set","getOwnPropertyNames","sStr","isDuplicate","aIdx"],"mappings":"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","file":"js/166-f0d268277a65210aaf63.chunk.js","sourcesContent":["(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, '(');\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(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n // if a location was matched, pass it to extractLocation() otherwise pop the last token\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || 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 }, 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;","//\n// Tools for performance debugging, only enabled in development mode.\n// Open up Chrome Dev Tools, then Timeline, then User Timing to see output.\n// Also see config/webpack/loaders/mark.js for the webpack loader marks.\n//\n\nlet marky;\n\nif (process.env.NODE_ENV === 'development') {\n if (typeof performance !== 'undefined' && performance.setResourceTimingBufferSize) {\n // Increase Firefox's performance entry limit; otherwise it's capped to 150.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1331135\n performance.setResourceTimingBufferSize(Infinity);\n }\n\n marky = require('marky');\n // allows us to easily do e.g. ReactPerf.printWasted() while debugging\n //window.ReactPerf = require('react-addons-perf');\n //window.ReactPerf.start();\n}\n\nexport function start(name) {\n if (process.env.NODE_ENV === 'development') {\n marky.mark(name);\n }\n}\n\nexport function stop(name) {\n if (process.env.NODE_ENV === 'development') {\n marky.stop(name);\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;","// Written in this round about way for babel-transform-imports\nimport Router from \"react-router/es/Router\";\nexport default Router;","function _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 React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter = function (_React$Component) {\n _inherits(BrowserRouter, _React$Component);\n function BrowserRouter() {\n var _temp, _this, _ret;\n _classCallCheck(this, BrowserRouter);\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.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n BrowserRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\");\n };\n BrowserRouter.prototype.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n return BrowserRouter;\n}(React.Component);\nexport default BrowserRouter;","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 React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Column from '../../../components/column';\nimport ColumnHeader from '../../../components/column_header';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\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 React from 'react';\nimport PropTypes from 'prop-types';\nimport { Switch, Route } from 'react-router-dom';\nimport StackTrace from 'stacktrace-js';\nimport ColumnLoading from '../components/column_loading';\nimport BundleColumnError from '../components/bundle_column_error';\nimport BundleContainer from '../containers/bundle_container';\n\n// Small wrapper to pass multiColumn to the route components\nexport class WrappedSwitch extends React.PureComponent {\n\n render () {\n const { multiColumn, children } = this.props;\n\n return (\n \n {React.Children.map(children, child => React.cloneElement(child, { multiColumn }))}\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 React.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 React from 'react';\nimport PropTypes from 'prop-types';\nimport Motion from '../../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class UploadArea extends React.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 React from 'react';\n\nconst DrawerLoading = () => (\n
\n
\n
\n
\n
\n);\n\nexport default DrawerLoading;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\nimport { connect } from 'react-redux';\nimport { fetchServer } from 'mastodon/actions/server';\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';\nimport Image from 'mastodon/components/image';\nimport { Link } from 'react-router-dom';\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 React.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 React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport SearchContainer from 'mastodon/features/compose/containers/search_container';\nimport ComposeFormContainer from 'mastodon/features/compose/containers/compose_form_container';\nimport NavigationContainer from 'mastodon/features/compose/containers/navigation_container';\nimport LinkFooter from './link_footer';\nimport ServerBanner from 'mastodon/components/server_banner';\nimport { changeComposing, mountCompose, unmountCompose } from 'mastodon/actions/compose';\n\nclass ComposePanel extends React.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","import React from 'react';\nimport logo from 'mastodon/../images/logo.svg';\n\nexport const WordmarkLogo = () => (\n \n Mastodon\n \n \n);\n\nexport const SymbolLogo = () => (\n Mastodon\n);\n\nexport default WordmarkLogo;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\nimport { disabledAccountId, movedToAccountId, domain } from 'mastodon/initial_state';\nimport { openModal } from 'mastodon/actions/modal';\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('CONFIRM', {\n message: intl.formatMessage(messages.logoutMessage),\n confirm: intl.formatMessage(messages.logoutConfirm),\n closeWhenConfirm: false,\n onConfirm: () => logOut(),\n }));\n },\n});\n\nclass DisabledAccountBanner extends React.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 React from 'react';\nimport PropTypes from 'prop-types';\nimport { fetchFollowRequests } from 'mastodon/actions/accounts';\nimport { connect } from 'react-redux';\nimport ColumnLink from 'mastodon/features/ui/components/column_link';\nimport IconWithBadge from 'mastodon/components/icon_with_badge';\nimport { List as ImmutableList } from 'immutable';\nimport { injectIntl, defineMessages } from 'react-intl';\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 React.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 React from 'react';\nimport PropTypes from 'prop-types';\nimport { createSelector } from 'reselect';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { fetchLists } from 'mastodon/actions/lists';\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';\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 React, { useCallback } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { registrationsOpen } from 'mastodon/initial_state';\nimport { openModal } from 'mastodon/actions/modal';\n\nconst SignInBanner = () => {\n const dispatch = useDispatch();\n\n const openClosedRegistrationsModal = useCallback(\n () => dispatch(openModal('CLOSED_REGISTRATIONS')),\n [dispatch],\n );\n\n let signupButton;\n\n if (registrationsOpen) {\n signupButton = (\n \n \n \n );\n } else {\n signupButton = (\n \n );\n }\n\n return (\n
\n

\n \n {signupButton}\n
\n );\n};\n\nexport default SignInBanner;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\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 { connect } from 'react-redux';\nimport FeaturedTags from '../components/featured_tags';\nimport { makeGetAccount } from 'mastodon/selectors';\nimport { List as ImmutableList } from 'immutable';\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 React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\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 React.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 React from 'react';\nimport { Switch, Route, withRouter } from 'react-router-dom';\nimport { showTrends } from 'mastodon/initial_state';\nimport Trends from 'mastodon/features/getting_started/containers/trends_container';\nimport AccountNavigation from 'mastodon/features/account/navigation';\n\nconst DefaultNavigation = () => (\n <>\n {showTrends && (\n <>\n
\n \n \n )}\n \n);\n\nclass NavigationPortal extends React.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 React from 'react';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport Logo from 'mastodon/components/logo';\nimport { timelinePreview, showTrends } from 'mastodon/initial_state';\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';\nimport NavigationPortal from 'mastodon/components/navigation_portal';\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 local: { id: 'tabs_bar.local_timeline', defaultMessage: 'Local' },\n federated: { id: 'tabs_bar.federated_timeline', defaultMessage: 'Federated' },\n direct: { id: 'navigation_bar.direct', defaultMessage: 'Private mentions' },\n favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },\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});\n\nclass NavigationPanel extends React.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 render () {\n const { intl } = this.props;\n const { signedIn, disabledAccountId } = this.context.identity;\n\n return (\n
\n
\n \n
\n
\n\n {signedIn && (\n \n \n } text={intl.formatMessage(messages.notifications)} />\n \n \n )}\n\n {showTrends ? (\n \n ) : (\n \n )}\n\n {(signedIn || timelinePreview) && (\n <>\n \n \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 React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport BundleContainer from '../containers/bundle_container';\nimport ColumnLoading from './column_loading';\nimport DrawerLoading from './drawer_loading';\nimport BundleColumnError from './bundle_column_error';\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 '../../ui/util/async-components';\nimport ComposePanel from './compose_panel';\nimport NavigationPanel from './navigation_panel';\nimport { supportsPassiveEvents } from 'detect-passive-events';\nimport { scrollRight } from '../../../scroll';\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 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 {React.Children.map(children, child => React.cloneElement(child, { multiColumn: true }))}\n
\n );\n }\n\n}\n","import { connect } from 'react-redux';\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 React from 'react';\nimport { connect } from 'react-redux';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport IconButton from 'mastodon/components/icon_button';\nimport { Link } from 'react-router-dom';\nimport Avatar from 'mastodon/components/avatar';\nimport DisplayName from 'mastodon/components/display_name';\nimport { defineMessages, injectIntl } from 'react-intl';\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 React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport Video from 'mastodon/features/video';\nimport Audio from 'mastodon/features/audio';\nimport { removePictureInPicture } from 'mastodon/actions/picture_in_picture';\nimport Header from './components/header';\nimport Footer from './components/footer';\n\nconst mapStateToProps = state => ({\n ...state.get('picture_in_picture'),\n});\n\nclass PictureInPicture extends React.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 React from 'react';\nimport { WordmarkLogo, SymbolLogo } from 'mastodon/components/logo';\nimport { Link, withRouter } from 'react-router-dom';\nimport { FormattedMessage } from 'react-intl';\nimport { registrationsOpen, me } from 'mastodon/initial_state';\nimport Avatar from 'mastodon/components/avatar';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { openModal } from 'mastodon/actions/modal';\n\nconst Account = connect(state => ({\n account: state.getIn(['accounts', me]),\n}))(({ account }) => (\n \n \n \n));\n\nconst mapDispatchToProps = (dispatch) => ({\n openClosedRegistrationsModal() {\n dispatch(openModal('CLOSED_REGISTRATIONS'));\n },\n});\n\nclass Header extends React.PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object,\n };\n\n static propTypes = {\n openClosedRegistrationsModal: PropTypes.func,\n location: PropTypes.object,\n };\n\n render () {\n const { signedIn } = this.context.identity;\n const { location, openClosedRegistrationsModal } = this.props;\n\n let content;\n\n if (signedIn) {\n content = (\n <>\n {location.pathname !== '/publish' && }\n \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 \n {signupButton}\n \n );\n }\n\n return (\n
\n \n \n \n \n\n
\n {content}\n
\n
\n );\n }\n\n}\n\nexport default withRouter(connect(null, mapDispatchToProps)(Header));\n","import classNames from 'classnames';\nimport React from 'react';\nimport { HotKeys } from 'react-hotkeys';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { connect } from 'react-redux';\nimport { Redirect, Route, withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport NotificationsContainer from './containers/notifications_container';\nimport LoadingBarContainer from './containers/loading_bar_container';\nimport ModalContainer from './containers/modal_container';\nimport { layoutFromWindow } from 'mastodon/is_mobile';\nimport { debounce } from 'lodash';\nimport { uploadCompose, resetCompose, changeComposeSpoilerness } from '../../actions/compose';\nimport { expandHomeTimeline } from '../../actions/timelines';\nimport { expandNotifications } from '../../actions/notifications';\nimport { fetchServer, fetchServerTranslationLanguages } from '../../actions/server';\nimport { clearHeight } from '../../actions/height_cache';\nimport { focusApp, unfocusApp, changeLayout } from 'mastodon/actions/app';\nimport { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'mastodon/actions/markers';\nimport { WrappedSwitch, WrappedRoute } from './util/react_router_helpers';\nimport BundleColumnError from './components/bundle_column_error';\nimport UploadArea from './components/upload_area';\nimport ColumnsAreaContainer from './containers/columns_area_container';\nimport PictureInPicture from 'mastodon/features/picture_in_picture';\nimport {\n Compose,\n Status,\n GettingStarted,\n KeyboardShortcuts,\n PublicTimeline,\n CommunityTimeline,\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 initialState, { me, owner, singleUserMode, showTrends, trendsAsLanding } from '../../initial_state';\nimport { INTRODUCTION_VERSION } from 'mastodon/actions/onboarding';\nimport Header from './components/header';\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 React.PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object,\n };\n\n static propTypes = {\n children: PropTypes.node,\n location: PropTypes.object,\n mobile: PropTypes.bool,\n };\n\n componentWillMount () {\n if (this.props.mobile) {\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.mobile !== this.props.mobile) {\n document.body.classList.toggle('layout-single-column', this.props.mobile);\n document.body.classList.toggle('layout-multiple-columns', !this.props.mobile);\n }\n }\n\n setRef = c => {\n if (c) {\n this.node = c;\n }\n };\n\n render () {\n const { children, mobile } = this.props;\n const { signedIn } = this.context.identity;\n\n let redirect;\n\n if (signedIn) {\n if (mobile) {\n redirect = ;\n } else {\n redirect = ;\n }\n } else if (singleUserMode && owner && initialState?.accounts[owner]) {\n redirect = ;\n } else if (showTrends && trendsAsLanding) {\n redirect = ;\n } else {\n redirect = ;\n }\n\n return (\n \n \n {redirect}\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 React.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 // On first launch, redirect to the follow recommendations page\n if (signedIn && this.props.firstLaunch) {\n this.context.router.history.replace('/start');\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 if (window.history && window.history.state) {\n this.context.router.history.goBack();\n } else {\n this.context.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 React from 'react';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage } from 'react-intl';\nimport { version, source_url } from 'mastodon/initial_state';\nimport StackTrace from 'stacktrace-js';\nimport { Helmet } from 'react-helmet';\n\nexport default class ErrorBoundary extends React.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","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Helmet } from 'react-helmet';\nimport { IntlProvider, addLocaleData } from 'react-intl';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { BrowserRouter, Route } from 'react-router-dom';\nimport { ScrollContext } from 'react-router-scroll-4';\nimport { store } from 'mastodon/store/configureStore';\nimport UI from 'mastodon/features/ui';\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 initialState, { title as siteTitle } from 'mastodon/initial_state';\nimport { getLocale } from 'mastodon/locales';\n\nconst { localeData, messages } = getLocale();\naddLocaleData(localeData);\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 React.PureComponent {\n\n static propTypes = {\n locale: PropTypes.string.isRequired,\n };\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 const { locale } = this.props;\n\n return (\n \n \n \n \n \n \n \n \n\n \n \n \n \n );\n }\n\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { setupBrowserNotifications } from 'mastodon/actions/notifications';\nimport Mastodon from 'mastodon/containers/mastodon';\nimport { store } from 'mastodon/store/configureStore';\nimport { me } from 'mastodon/initial_state';\nimport ready from 'mastodon/ready';\n\nconst perf = require('mastodon/performance');\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 ReactDOM.render(, mountNode);\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","/* -*- 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('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});","(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});","/* -*- 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;"],"sourceRoot":""}